You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Windows Codex desktop: follow-up submission spins indefinitely #42952
Desktop version: 26.901.41123
Windows package: 26.901.5003.0
App-server: 0.153.3
New conversations accept their first message, but subsequent manual submissions leave the text in the composer and spin indefinitely. Plain ASCII text without attachments also fails.
Restarting, rebuilding Cache / Code Cache, and launching with a separate CODEX_ELECTRON_USER_DATA_PATH did not resolve the issue. The existing CODEX_HOME was retained. Pop-out windows briefly worked, then failed again.
The same existing conversation accepted consecutive messages through the CLI. Internal send_message_to_thread submission also succeeded.
In the captured desktop debug reproduction, the first turn completed successfully, but no second turn/start or turn/steer request was logged.
Please investigate the desktop follow-up submission path and its pending state. The exact blocking condition remains unidentified.
OS: Windows 11 Home Chinese edition, 10.0.26200, x64
I still experience the follow-up submission problem after updating.
The September 5 desktop logs also contain these potentially relevant
messages (UTC):
07:30:09.108 — Received turn/started for unknown conversation
07:30:14.065 — Received turn/completed for unknown conversation
07:30:54.533 — Timed out while fetching post-login Statsig bootstrap
07:31:09.249 — No promise for request ID
These are diagnostic leads, not confirmed causes. The exact failed
manual submission still needs to be correlated with its timestamp,
conversation ID, and renderer/window ID.
Related reports: #42120 and #42472. This report additionally includes
successful CLI submissions to the same existing conversation and the
absence of a second turn/start or turn/steer in the captured reproduction.
One discriminator may separate an app-server lifecycle problem from a desktop submit/request-bookkeeping problem here.
Current app-server protocol says a completed ordinary turn ends with turn/completed; a later user message on the same resumed thread is sent with turn/start. turn/steer is specifically for an already in-flight regular turn and requires the exact active expectedTurnId; it should fail if there is no active turn. thread/read also exposes the server-side thread status (and, where applicable, canAcceptDirectInput).
So immediately after the first successful turn/completed, before clicking Send again, it would be useful to capture thread/read on the same app-server connection, then correlate the failed click with the client-side RPC dispatch/request-id registration:
If app-server reports the thread no longer has an active turn / accepts direct input, but the desktop spinner appears and noturn/start or turn/steer reaches app-server, the failure is upstream of the server turn lifecycle — likely the desktop submit gate / request-promise bookkeeping. That would make the later No promise for request ID line especially worth correlating, without assuming it is causal.
If app-server still reports an active/in-progress turn after the observed turn/completed, that instead gives a concrete server/session-state mismatch to chase.
This also fits the existing evidence that CLI submissions to the same conversation succeed: it avoids treating thread persistence or the model/backend as the primary suspect until the desktop-vs-app-server boundary is measured. A regression could assert: after turn/completed, a second desktop submit allocates one client request id and emits exactly one accepted follow-up RPC (turn/start unless an actual turn is still in flight), rather than entering a spinner-only pending state.
Thanks for the diagnostic suggestion. I #checked the existing desktop debug capture more closely:
Of 91 enqueued requests, 89 have a matching renderer completion/failure log. The remaining two are startup account/read and getAuthStatus requests. Both have backend response_routed records, but no matching renderer completion record.
The first manual turn/start has a complete enqueue → dispatch → transport → response → renderer completion sequence. No subsequent turn/start or turn/steer appears during the captured follow-up failure.
This capture contains no No promise for request ID error.
The “turn/completed for unknown conversation” error refers to a different thread, marked ephemeral in the logs, not the affected conversation.
The two unmatched startup requests are only a lead; the first message succeeded while they were already outstanding.
Could you provide concrete, read-only steps to capture thread/read through the affected Windows desktop app’s existing app-server connection, together with the composer’s pending submission state? Ideally, we would capture both immediately after the first reply and again while the second submission is spinning, without restarting or launching another app-server.
Update: after a subsequent Codex desktop upgrade, the issue is resolved on my Windows machine. I can now send follow-up messages in the same conversation without the submission spinner getting stuck.
I have not isolated the first fixed version or the underlying cause, so the earlier diagnostic leads should not be treated as confirmed causes.
Closing as resolved on my end. Thanks for the diagnostic suggestions and help investigating.
Activity
github-actions commentedon Sep 5, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
zouyu9631 commentedon Sep 5, 2026
Additional environment information, checked on September 5:
I still experience the follow-up submission problem after updating.
The September 5 desktop logs also contain these potentially relevant
messages (UTC):
07:30:09.108 — Received turn/started for unknown conversation
07:30:14.065 — Received turn/completed for unknown conversation
07:30:54.533 — Timed out while fetching post-login Statsig bootstrap
07:31:09.249 — No promise for request ID
These are diagnostic leads, not confirmed causes. The exact failed
manual submission still needs to be correlated with its timestamp,
conversation ID, and renderer/window ID.
Related reports: #42120 and #42472. This report additionally includes
successful CLI submissions to the same existing conversation and the
absence of a second turn/start or turn/steer in the captured reproduction.
84dnnvbdvp-debug commentedon Sep 5, 2026
One discriminator may separate an app-server lifecycle problem from a desktop submit/request-bookkeeping problem here.
Current app-server protocol says a completed ordinary turn ends with
turn/completed; a later user message on the same resumed thread is sent withturn/start.turn/steeris specifically for an already in-flight regular turn and requires the exact activeexpectedTurnId; it should fail if there is no active turn.thread/readalso exposes the server-side thread status (and, where applicable,canAcceptDirectInput).So immediately after the first successful
turn/completed, before clicking Send again, it would be useful to capturethread/readon the same app-server connection, then correlate the failed click with the client-side RPC dispatch/request-id registration:turn/startorturn/steerreaches app-server, the failure is upstream of the server turn lifecycle — likely the desktop submit gate / request-promise bookkeeping. That would make the laterNo promise for request IDline especially worth correlating, without assuming it is causal.turn/completed, that instead gives a concrete server/session-state mismatch to chase.This also fits the existing evidence that CLI submissions to the same conversation succeed: it avoids treating thread persistence or the model/backend as the primary suspect until the desktop-vs-app-server boundary is measured. A regression could assert: after
turn/completed, a second desktop submit allocates one client request id and emits exactly one accepted follow-up RPC (turn/startunless an actual turn is still in flight), rather than entering a spinner-only pending state.zouyu9631 commentedon Sep 5, 2026
Thanks for the diagnostic suggestion. I #checked the existing desktop debug capture more closely:
account/readandgetAuthStatusrequests. Both have backendresponse_routedrecords, but no matching renderer completion record.turn/starthas a complete enqueue → dispatch → transport → response → renderer completion sequence. No subsequentturn/startorturn/steerappears during the captured follow-up failure.No promise for request IDerror.The two unmatched startup requests are only a lead; the first message succeeded while they were already outstanding.
Could you provide concrete, read-only steps to capture
thread/readthrough the affected Windows desktop app’s existing app-server connection, together with the composer’s pending submission state? Ideally, we would capture both immediately after the first reply and again while the second submission is spinning, without restarting or launching another app-server.zouyu9631 commentedon Sep 7, 2026
Update: after a subsequent Codex desktop upgrade, the issue is resolved on my Windows machine. I can now send follow-up messages in the same conversation without the submission spinner getting stuck.
I have not isolated the first fixed version or the underlying cause, so the earlier diagnostic leads should not be treated as confirmed causes.
Closing as resolved on my end. Thanks for the diagnostic suggestions and help investigating.