app-server can finalize an identical progress message before promised tool work starts
What version of Codex CLI is running?
The affected app-server session reported 0.145.0-alpha.30. My currently installed local CLI is 0.144.1.
What subscription do you have?
Pro
Which model were you using?
gpt-5.6-sol, reasoning effort xhigh
What platform is your computer?
Linux, through an app-server v2 integration
What issue are you seeing?
Codex can turn a nonterminal progress message into a final_answer, mark the turn successful, and return to idle before performing any of the work promised by that message.
In two observed turns in the same session:
- the assistant first emitted a short
commentarymessage such as “I’ll inspect the relevant documentation and task configuration first”; - the exact same text was then emitted again with
phase=final_answer; - no tool call occurred in either turn;
- the turn completed successfully after 12–13 seconds, the app-server became idle, and the process exited with code 0;
- sending a follow-up resumed the session, but the promised investigation had not happened.
This is more than a duplicate-rendering problem: downstream app-server clients correctly treat final_answer plus successful turn completion as terminal, so the actual requested work is silently skipped.
Sanitized event shape:
agent_message phase=commentary text="I'll inspect the relevant sources first..."
message phase=commentary text="I'll inspect the relevant sources first..."
agent_message phase=final_answer text="I'll inspect the relevant sources first..."
message phase=final_answer text="I'll inspect the relevant sources first..."
task_complete last_agent_message="I'll inspect the relevant sources first..."
There was no pending approval, tool error, transport interruption, or context-window exhaustion. The input occupied roughly one quarter of the available context, and the same session had completed a tool-heavy turn a few minutes earlier.
This appears related to openai/codex#27352, which tracks premature turn completion after progress messages, and openai/codex#15633, which tracks identical commentary/final text. The distinguishing symptom here is their combination: the duplicate final_answer is accepted as a successful terminal response and prevents the promised tool work from starting.
What steps can reproduce the bug?
The issue is intermittent, but the observed pattern was:
- Resume a long-lived app-server session that has recently completed normal tool-heavy work.
- Ask for a multi-step investigation that clearly requires tool calls.
- Codex emits a future-intent progress update in
commentary. - Observe the same text emitted as
final_answerwithout an intervening tool call. - Observe the turn complete successfully and the session return to idle.
- Send a follow-up such as
continue; the session remains usable and work can proceed.
What is the expected behavior?
A message that only announces future work should not be accepted as the terminal answer for the same turn. Codex should either continue to the promised tool/action sequence, emit a concrete blocking explanation, or produce a substantive final answer.
A useful regression test would feed the agent loop identical commentary and final-answer items whose text expresses a pending action, with no tool call or blocker, and assert that the turn does not silently complete as successful.
Additional information
This report intentionally omits organization names, workspace/project names, internal URLs, prompts, conversation/run/device identifiers, credentials, and raw private logs. Sanitized rollout excerpts can be provided privately if maintainers need them.
1 Comment
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action