Codex Desktop emits a second user-visible response after a late subagent completion

Open 💬 1 comment Opened Jul 14, 2026 by flamaso

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?

  1. Start a Codex Desktop task whose root agent spawns multiple subagents.
  2. Let at least one subagent remain active after the root has enough information to answer.
  3. Send a user follow-up that the root answers immediately.
  4. After the first user-visible final answer, let the remaining subagent finish and send its result to the root.
  5. 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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗