Codex Desktop emits a second user-visible response after a late subagent completion
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.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗