Codex CLI marks turn complete while follow-up is still needed after progress message
Summary
Codex CLI can prematurely mark a turn as complete after the assistant emits a commentary/progress message that promises a next action. The main thread stops before the next tool call or final answer is produced. This is very visible when the user asks for a subagent workflow, but the evidence shows the subagent is never actually spawned.
Environment
- Codex CLI: 0.139.0
- Source: codex-tui / CLI
- Model: gpt-5.5
- Reasoning effort: xhigh
- Config: features.multi_agent=true, agents.max_threads=6, agents.max_depth=2
- Thread id: 019eb0a0-47c5-7703-8926-a7492ea62f2f
Reproduction
- Start Codex CLI in an existing trusted project.
- Ask:
使用子agent查询一下明天北京的天气 - The assistant emits a progress message saying it will continue and attempt to call/check subagent tooling.
- The turn is immediately marked complete and no further tool call/final answer happens.
- Send a follow-up such as
为什么停止了?; the same pattern can repeat: progress message is emitted, then the turn completes before doing the promised action.
Expected behavior
If the assistant says it will continue with a tool call or follow-up action, Codex should continue the turn until that action completes or a final/blocking response is produced.
Actual behavior
Codex records task_complete immediately after the progress/commentary message. No subagent or deferred multi-agent tool call is created.
Local evidence
- Session transcript shows
task_completeimmediately after the assistant message at around 2026-06-10 16:24 local time. state_5.sqlitehas nothread_spawn_edgesfor the current thread and noagent_jobs/agent_job_items, so this is not a child-agent hang.- Internal log examples show
model_needs_follow_up=trueandneeds_follow_up=truefor affected turns, but the user-visible run still ended. - No relevant
ERRORwas found in the thread logs. WARNs seen were unrelated plugin manifest/skill loader warnings and analytics 401 telemetry noise.
Impact
This makes subagent workflows appear broken and also affects ordinary multi-step turns where the assistant first emits a progress update and then should continue working.
I can provide the session transcript privately if needed, after reviewing it for sensitive local context.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗