Thread stays stuck in generating state after interrupted turn; composer remains disabled until local session log is manually completed
What version of the Codex App are you using (From “About Codex” dialog)?
26.306.996.0
What subscription do you have?
Plus
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
On March 10, 2026, a Codex desktop thread became stuck in a permanent generating state after what appears to have been an interrupted or disconnected turn. The thread could still be opened, but it continued to look active and the composer stayed disabled, so I could not send any new messages.
Restarting or reopening did not clear it.
The thread only became usable again after manually appending a terminal assistant message and a missing task_complete event to the local session log.
Affected thread id: 019cd391-57b8-70b3-9b43-6011980b9540.
What steps can reproduce the bug?
- Use the Codex desktop app on Windows in a normal workspace-backed thread.
- Let a turn run long enough that a backend disconnect or interruption can occur mid-turn.
- Reopen the thread after the interruption.
- The thread may remain in a generating state indefinitely, and the message composer remains disabled.
In my occurrence:
- Thread id:
019cd391-57b8-70b3-9b43-6011980b9540 - Interrupted turn id:
019cd8a4-cab0-7773-a3b1-1766efcd0c1e - Model seen in local session context:
gpt-5.4 - Local thread state recorded
cli_version:0.112.0-alpha.3
I do not yet have a minimal deterministic repro; this report is based on a real occurrence.
What is the expected behavior?
If a turn is interrupted or the stream disconnects, the thread should transition to a terminal interrupted or failed state, show that status in the UI, and re-enable the composer so the conversation can continue without manual local-state repair.
Additional information
- The local backend log showed a stream disconnect and shutdown around March 10, 2026 at about 3:10 PM America/Chicago.
- The local session log for this thread did not end with a terminal
task_completeevent for the interrupted turn. - Manual workaround that restored the thread: append a terminal assistant message plus
task_completeto the local session file underC:\Users\<redacted>\.codex\sessions\..., then reopen the thread. - The SQLite state DB appeared locked while the app was running, so I could not update the thread row live; however, the session-log repair alone was enough to unblock the thread.
- I can provide a redacted tail of the session log if that would help, but I do not want to post the full session log publicly because it may contain prompts and local paths.
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I hit the same class of issue on a current Windows Codex Desktop build, and the local-session-log workaround still fixes it.
Environment:
OpenAI.Codex_26.623.11225.0_x64__2p2nqsd0c76g0, release field26.623.81905codex doctorfor the Desktop WSL profile reported auth/network/websocket OK (16 ok,0 fail)User-visible symptom:
Unable to send message/Loading...Relevant Desktop log pattern on reopening the affected thread:
A fresh log also showed the app was no longer selecting a stale remote host in this run:
The affected session JSONL tail had this shape:
But there was no terminal assistant message and no
task_completefor that interrupted turn.Workaround that fixed it:
task_completeevent for the interruptedturn_id.So this still appears to be a stale Desktop streaming/composer state problem after an interrupted turn, not a WSL runtime, auth, network, or plugin problem. The key bad state is
latestTurnStatus=interruptedbeing resumed asmarkedStreaming=true.I am intentionally not posting full local logs, session ids, paths, or prompts because they contain private workspace details.