Codex Desktop controls become unclickable when hidden/stale turn state exists
Summary
Codex Desktop can enter a state where top-level controls appear clickable but do not open, including the model/reasoning selector and project folder selector. The UI does not show an obvious active conversation or running turn, so it looks like the buttons are broken.
This may be related to stale or hidden turn state. Logs show turn lifecycle events for a conversation that was not visibly active, plus Received turn/started for unknown conversation / Received turn/completed for unknown conversation.
Environment
- App: Codex Desktop
- Version:
26.519.31651 - Platform: macOS
- Date observed: May 22, 2026
Symptoms
- Clicking the model/reasoning selector does nothing.
- Clicking the project folder selector does nothing.
- The controls do not clearly appear disabled.
- There is no visible running conversation/turn explaining why these controls are blocked.
- Restarting the app appears to be the likely workaround.
Expected Behavior
If a turn is running and blocks model/project changes:
- The UI should clearly show the active/running turn.
- Controls should appear disabled, not clickable-but-dead.
- Hover/click should explain why the control is unavailable.
- Ideally, setup controls for a new conversation should remain usable, or the lock should be clearly scoped to the current active thread.
Actual Behavior
The controls appear interactive but do not open. The user cannot tell whether the app is busy, blocked, or broken.
Relevant Sanitized Logs
[time] info thread/start ... conversationId=[conversation-a]
[time] info Conversation created conversationId=[conversation-a]
[time] info turn/start ... conversationId=[conversation-a]
[time] error Received turn/started for unknown conversation conversationId=[conversation-b]
[time] error Received turn/completed for unknown conversation conversationId=[conversation-b]
[time] info model/list ... errorCode=null
[time much later] info show turn-complete conversationId=[conversation-a] turnId=[turn-a]
Also repeatedly observed:
Failed to sync experimental feature enablement
unsupported feature enablement `auth_elicitation`
Notes
model/list succeeds in the log, so this does not appear to be a backend/model-list failure. It looks more like the renderer or app state believes a turn is active, while the visible UI does not expose that state to the user.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗