Messages sent during active work can be dropped instead of steering or queuing
Summary
In the Codex VS Code experience, messages sent while an agent is actively working can appear to be lost instead of being applied as a steer or retained in the queue for the next turn. The user then has to resend the correction.
Environment
- Codex VS Code extension build:
openai.chatgpt-26.715.31925-linux-x64 - Platform: Linux x86_64
- Observed: 2026-07-22
- Collaboration mode: Default
Expected behavior
A message sent while Codex is working should always do one of the documented actions:
- steer the active turn; or
- remain visibly queued for the next turn.
It should never disappear without being applied or queued.
Actual behavior
During a long-running tool-using task, messages sent while the agent was working were not reliably surfaced as a steer or queued follow-up. The user perceived them as lost and had to resend them. Later messages could interrupt the active turn, but delivery/queue behavior was inconsistent.
Reproduction outline
- Start a long-running Codex task that performs multiple tool calls.
- While the run is active, send one or more correction messages.
- Continue interacting while the agent is between tool calls or waiting on tool output.
- Observe whether every message is either acknowledged in the current turn or remains visibly queued.
- In the failing case, a correction is neither visibly applied nor retained, so it must be resent.
Impact
This can cause user corrections or safety-relevant infrastructure details to be missed during active work. It also makes the user uncertain whether subsequent messages are safe to send before the current run finishes.
Suggested investigation
Please inspect client/server event sequencing around active-turn interruption, steer delivery, queue persistence, and turn-aborted transitions. A durable per-message delivery/acknowledgement state in the UI would make failures diagnosable.
No repository contents, credentials, account identifiers, or private source details are included in this report.
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Same here — it flashes for a moment and then disappears. Is this a side effect of vibe coding? Even the basic functions in the latest extension are full of bugs, which seriously affects usability!
Another concrete extension reproduction from me today, and it has happened multiple times over the past week, it is really annoying to loose messages that took a long time to prepare:
1.130.0-insider26.715.31925chatgpt.followUpQueueMode = "queue"At
2026-07-22 07:24:54 UTC, one queued follow-up disappeared from the extension UI but reached Codex core three times within 32 ms, with three distinct turn IDs. The preceding turn was still active; all three duplicates were accepted and completed, with no rejection orturn_aborted.This suggests a client-side queued-followup ownership/state race. The temporary send lock prevents concurrent sends but does not appear to provide durable per-message idempotency, allowing stale consumers to replay a message sequentially.
I also downloaded today’s official extension update,
26.715.61943, and compared its enqueue, owner/follower broadcast, send-lock, and removal paths against26.715.31925. They are semantically unchanged, so I found no fix in that update.Suggested fix: app-server-owned atomic claim-and-consume, deduplication by
(threadId, queuedMessageId), revisioned queue updates, and composer clearing only after durable acknowledgement.Seems related: [#34021](https://github.com/openai/codex/issues/34021), [#31128](https://github.com/openai/codex/issues/31128).
Additional reproduction from the Cursor IDE integration on Linux (observed 2026-08-13):
3.7.19(80c653c2c3528e65016a0d304b54486084b470b0, x64)openai.chatgpt 26.5707.413017.1.5-arch1-2)0.144.1chatgpt.followUpQueueModeoverride is configured, so the documented default (queue) applies.What happened
turn_aborted; there was no user-message event containing the text submitted before the abort.This was not a normal agent completion. From the agent-visible event sequence, the active turn was aborted while the earlier composer input was lost.
Expected
While a turn is active, Enter should enqueue the message exactly once (or steer it according to the selected mode) and show a durable acknowledgement. If submission fails, the draft should remain recoverable with an explicit error. Repeated Enter should not silently discard the message or ambiguously abort the active turn.
This adds a Cursor-specific reproduction where message loss and a
turn_abortedtransition occur together. It may be a composer/queue acknowledgement race in the VS Code-compatible extension host.No session transcript, repository content, account identifier, credentials, or private local paths are included.