Codex Desktop on macOS gets stuck thinking after interrupted/resumed turn with Item not found in turn state
What happened?
Codex Desktop on macOS can get stuck in the Thinking state after a turn is interrupted/resumed. The affected thread continues to execute some tool calls after resume, but then stops making progress and never emits a final assistant message. The local app log repeatedly reports Item not found in turn state for tool call IDs.
This reproduced on a new thread as well, so it does not appear to be only a single old/corrupt conversation. I had previously disabled/cleaned likely MCP contributors (chrome-devtools-mcp, computer-use, SkyComputerUseClient notify hook, recommended skills cache), but the thread still entered the same stuck state.
Environment
- App: Codex Desktop
- CLI:
codex-cli 0.133.0-alpha.1 - macOS: 26.5 (25F71)
- Architecture: arm64
- Model configured:
gpt-5.5 - Local proxy in use: requests go through
127.0.0.1:7897
Affected conversation IDs
- Older affected thread:
019e4f09-23f6-72c2-b6cc-5c295445ee4c - New affected thread:
019e63c0-9755-7702-8fa6-8a8d9bc0c3bb
The new thread was created after cleaning the suspected MCP/plugin state and still reproduced the hang.
Observed log evidence
For 019e63c0-9755-7702-8fa6-8a8d9bc0c3bb, after app restart/resume:
maybe_resume_success conversationId=019e63c0-9755-7702-8fa6-8a8d9bc0c3bb latestTurnStatus=interrupted markedStreaming=true turnCount=1
turn/start conversationId=019e63c0-9755-7702-8fa6-8a8d9bc0c3bb
Item not found in turn state itemId=call_...
Item not found in turn state itemId=call_...
Item not found in turn state itemId=call_...
The rollout file kept updating for a while after resume, including multiple successful apply_patch tool calls and an rg call, but then stopped updating. At the time of inspection:
- rollout last modified:
2026-05-26 18:27:27 CST - no
cargo,rustc,rg,sed, or patch process was still running - no
chrome-devtools-mcporSkyComputerUseClientprocess was running - the UI still appeared stuck thinking / incomplete
Cleanup already tried
- Disabled
[mcp_servers.chrome-devtools] - Disabled
[plugins."computer-use@openai-bundled"] - Set
notify = []to avoid callingSkyComputerUseClientonturn-ended - Moved
~/.codex/vendor_importsaside afterrecommended_skills_refreshgit fetch timeouts - Killed leftover
SkyComputerUseClient mcp,node_repl, andcodex app-server --listen stdio://child processes - Fully restarted Codex Desktop
After this, the app no longer showed the previous chrome-devtools-mcp / SkyComputerUseClient accumulation, but the new thread still got stuck with the turn-state errors.
Expected behavior
After an interrupted/resumed turn, Codex Desktop should either:
- recover the turn state and continue to final output, or
- cleanly mark the turn failed/interrupted and allow a fresh continuation without stale
markedStreaming=true/ missing tool-call state.
Actual behavior
The thread remains visually stuck in Thinking. Tool calls may have completed and no shell process is running, but the app does not close out the turn. Logs repeatedly show missing turn-state items.
Related issues that look similar
- #19690: failed/completed turns restored with
markedStreaming=true - #24263:
Item not found in turn state - #24287: UI stays stuck in Thinking after Stop/restart
- #24434: always thinking / execution stall after command-heavy work
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗