Repository navigation
Codex Desktop emits a second user-visible response after a late subagent completion #33061
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.707.62119 (bundled codex-cli 0.144.2)
What subscription do you have?
ChatGPT subscription (the desktop client does not expose the exact tier locally)
What platform is your computer?
Darwin 25.5.0 arm64 arm (macOS 26.5.2)
What issue are you seeing?
Codex Desktop produced two separate user-visible assistant responses for one user turn.
The first response was the correct final answer. Immediately afterward, a late internal subagent completion arrived with trigger_turn:false. Despite that flag and despite there being no new user message, the root agent emitted a second, unrelated acknowledgement. In the UI this made the useful answer appear to be replaced/superseded by the second non-answer.
Sanitized local JSONL timeline:
12:59:16.578 user_message
12:59:25.848 event_msg agent_message # correct final response
12:59:25.851 response_item message assistant
12:59:26.019 inter_agent_communication_metadata {"trigger_turn":false}
12:59:26.019 response_item agent_message # /root/integration_architecture -> /root
12:59:30.076 event_msg agent_message # second unrelated response
12:59:30.076 response_item message assistant
12:59:30.476 event_msg task_complete
The two visible assistant responses were 4.2 seconds apart, with the late subagent message between them.
What steps can reproduce the bug?
- Start a Codex Desktop task whose root agent spawns multiple subagents.
- Let at least one subagent remain active after the root has enough information to answer.
- Send a user follow-up that the root answers immediately.
- After the first user-visible final answer, let the remaining subagent finish and send its result to the root.
- Observe whether Codex emits a second user-visible assistant response without a new user message.
This may be timing-dependent. The local transcript demonstrates the exact ordering above.
What is the expected behavior?
A late internal subagent result with trigger_turn:false must not create another user-visible assistant response after a final answer has already been delivered. It should remain internal, be discarded, or be incorporated only into a future user-triggered turn. The first final response must remain the sole answer to that user message.
Additional information
This appears distinct from #14805, where the model duplicates the same text in the TUI, and from #31042, which concerns stale previous-topic responses. Here, different text was emitted in a second assistant message and the trigger was a late inter-agent completion after the correct final.
The complete transcript and desktop logs are available locally but are not attached publicly because they may contain private conversation and filesystem data. I can upload the affected task through /feedback and add the resulting session ID.
Activity
joshp123 commentedon Jul 16, 2026
human tl;dr: codex finishes a turn, but you see nothing in the chat window. you have to expand the “Worked for 32s” history bit to see Codex’s actual response. this is obviously not the idea :)
codex generated AI slop below:
I hit what looks like the same underlying late-subagent bug, but with an empty second response.
The local rollout matches the ordering reported here:
14:32:14.543Z: non-emptyagent_message, phasefinal_answer, 1,826 characters14:32:14.562Z: non-empty assistantresponse_item, phasefinal_answer, 1,826 characters14:32:14.678Z: late subagent result withtrigger_turn:false, 2,738 characters14:32:23.955Z: secondagent_message, phasefinal_answer, 0 characters14:32:23.955Z: second assistantresponse_item, phasefinal_answer, 0 characters14:32:24.541Z:task_complete, with an emptylast_agent_messageSo this variant does not show a second unrelated acknowledgement. The second response is empty, and the useful first answer ends up inside the collapsed work disclosure.
Environment:
019f6abe-804a-7661-b8e7-279339cdce17019f6b57-4c05-7db3-9472-5f2decd6d8a0The in-app feedback report included the current session and browser logs.
This comment was generated by Codex from screenshots and redacted local diagnostic evidence, then reviewed and edited by the user.
turn ends with nothing:
expand and you see that nothing is actually something: