Repository navigation
Bug Report: Unable to Create New Conversations in Codex Desktop (thread/start Timeout) #30348
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.623.42026
What subscription do you have?
pro
What platform is your computer?
MacOS 26.5.1 (25F80)
What issue are you seeing?
Summary
Codex Desktop is unable to create any new conversations.
Existing conversations continue to work normally.
The issue reproduces across all projects, including newly created projects.
The same behavior is also partially reproducible in Codex Web, where newly created tasks remain stuck at “Running setup scripts”.
⸻
Environment
Operating System
- macOS 26.5.1
Codex Desktop
- Version 26.623.31921-26.623.42026
- Released Jun 26, 2026
Account
- Same account works normally in ChatGPT.
- Existing Codex conversations remain usable.
⸻
Reproduction Steps
- Launch Codex Desktop.
- Open any existing project or create a completely new project.
- Click New Conversation.
- Enter any prompt (for example: “Hello”).
- Wait approximately 30 seconds.
⸻
Expected Result
A new conversation should be created immediately and become interactive.
⸻
Actual Result
Desktop reports:
- Error creating local task
- Timeout
No new conversation becomes available.
Existing conversations continue to function normally.
⸻
Additional Observation
In Codex Web:
- A new task can sometimes be created.
- However, it remains indefinitely at:
Running setup scripts…
Desktop may later synchronize a Summary generated by that task, but the task never becomes interactive and cannot accept follow-up prompts.
⸻
Relevant Log Entries
The following entries consistently appear during the failure:
mcp_request_timeout
method=thread/start
timeoutMs=30000
Failed to prewarm conversation
Error: Timeout
Error creating local task
Error: Timeout
response_routed
method=thread/start
durationMs=40232
No promise for request ID
Additional connection-related log:
Socket error
write EPIPE
AppServerConnection
disconnected
transport=stdio
⸻
Analysis
From the logs it appears that:
- thread/start is successfully initiated.
- The client waits 30 seconds and triggers a timeout.
- The backend response arrives roughly 40 seconds later (durationMs=40232).
- Since the frontend has already rejected the request, it logs:
No promise for request ID
This suggests a race condition or timeout handling issue during the thread/start lifecycle rather than a repository, prompt, or project-specific problem.
⸻
Notes
- The problem occurs across all projects.
- It also occurs in newly created projects.
- Restarting Codex Desktop does not resolve the issue.
- Rebooting macOS does not resolve the issue.
- Logging out and logging back in does not resolve the issue.
- ChatGPT continues to function normally.
- Existing Codex conversations remain usable.
- Only creating new conversations consistently fails.
What steps can reproduce the bug?
Feedback ID: 019f0830-18cb-7e93-9416-0982edff4ef1
What is the expected behavior?
No response
Additional information
The issue started on June 25, 2026. Before that, creating new Codex conversations worked normally. Existing conversations created before the issue continue to function.
Activity
github-actions commentedon Jun 27, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
evelant commentedon Jun 30, 2026
Same here. Disabled plugins, mcps, logged out, logged in again, removed projects and readded, still can't start any threads from codex desktop. Completely breaks the entire app, why has this not been hotfixed yet? It should be a P1 fire kind of thing if people can't even start a thread. This began with one of the automatic updates yesterday.
ikruglikov commentedon Jul 7, 2026
I can reproduce the same timeout, but in my case the root cause was an unreachable MCP server configured with a LAN-only endpoint. Replacing it with a reachable Tailscale MagicDNS endpoint immediately resolved the issue. See #31359 for details.
rkoivunen-sw commentedon Jul 8, 2026
Additional Windows evidence: a timed-out
thread/startbecomes a persistent ghost conversationI reproduced the same 30-second timeout on Windows and traced the downstream state. This adds a lifecycle consequence not covered in the original report: when the late
thread/startresponse arrives, Desktop still captures its conversation route even though the request promise has already been discarded. The sidebar then contains a conversation that has no database row or rollout and can never be resumed or archived.Environment
26200.8655, AMD6426.623.19656.026.623.141536Exact sequence
Three attempts showed the same pattern:
For the third attempt:
The captured conversation ID was
019f40c4-5f0a-7412-90c0-18a689dee3b5. Desktop displayed it as a New chat sidebar entry. Opening it then failed repeatedly with:Local-state validation
After the failure:
state_5.sqlite: zero rows for the conversation IDsessionsandarchived_sessions: no rollout file for the IDsession_index.jsonl: no entry for the IDthread/read:thread ... is not materialized yet; includeTurns is unavailable before first user messageNo Codex thread found for threadId ...This appears to explain one source of the stale ghost conversations reported in #29868. The MCP startup blocking is also consistent with #29376 and #31359.
Workaround confirmed
I disabled MCP entries that exposed no tools, set enabled MCP servers to
required = false, and boundedstartup_timeout_secto 3 seconds. A controlledthread/startcheck then completed in 8.27 seconds instead of crossing the Desktop 30-second limit.Suggested lifecycle fixes
thread/startrequest has timed out.The primary bug is not only that startup exceeds 30 seconds; it is that the late successful response mutates renderer/sidebar state after the failed request, leaving an unrepairable UI entry.
vluyet commentedon Jul 9, 2026
I had the same issue caused by an MCP Server located on the home netwrok. While on the go, i could not initiate any new chat. I could solve it by editing
~/.codex/config.tomlRead the documentation here : https://developers.openai.com/codex/mcp#:~:text=required%20(optional)%3A%20Set%20true%20to%20make%20startup%20fail%20if%20this%20enabled%20server%20can%E2%80%99t%20initialize.
The doc marks this param as optional, but if not defined, seems to act as
required = true.HayThurJack commentedon Aug 2, 2026
Windows reproduction and scheduled-start extension (privacy-safe)
Environment:
codex doctor --summary --no-color: 16 ok, 1 idle, 2 notes, 1 warning, 0 failuresObserved on 2026-08-02 UTC:
thread/startcalls took 9,561 ms and 22,305 ms. These were intentional separate actions, not duplicate/replay evidence.Timed out waiting for MCP response to thread/startat 05:27:49.584Z and again at 05:28:49.510Z. The automation was deleted at 05:29:54.009Z so no recurrence remained active.mcpServerStatus/listcrossed the 30-second client timeout. One response returned after 104,038 ms, followed byNo promise for request ID; another readiness response showed the same late-response lifecycle.f4c1fa09-4919-47c3-84b8-7f0dbbc2c097and3f63b9ff-11ad-4b80-a2cc-6f7f1336125b.Boundaries checked:
thread/startstill failed.PRAGMA quick_check; fragmentation is being handled only at a guarded offline boundary and is not presented as causal proof.pending:<uuid>sidebar/global-state residue is tracked as a separate downstream hydration/recovery defect.This Windows trace closely matches the timeout -> late response -> missing promise lifecycle in this issue and adds a scheduled-start reproduction on the current Desktop package. No prompt payloads, database files, credentials, OAuth stores, or full logs are attached.
Jardingris commentedon Aug 23, 2026
macOS scheduled-vs-manual control: same task and app process
I can reproduce the same timeout lifecycle specifically with a standalone scheduled task, while Run now succeeds for the same task on the same Mac and app-server process.
Environment
26.818.415090.149.0-alpha.4.1Failed scheduled run
On 2026-08-23 UTC:
The run was then automatically archived and shown with a red failure indicator. No rollout/session with a first turn was created, and the task prompt, shell bridge, worker, and target commands were never reached.
Other app-server requests in the same failure window completed normally in approximately 1–35 ms; only
thread/startstalled.Successful manual control
At approximately 23:00:55 UTC, I clicked Run now for the same scheduled task:
thread/startpathThis rules out the downstream script/worker as the cause of this scheduled failure.
The behavior has occurred across Desktop releases
26.814.41407,26.818.31338, and26.818.41509. A scheduled run also succeeded once on26.818.32112, and manual runs have succeeded on versions where scheduled runs failed, so the app version alone does not appear sufficient to trigger it.Possible clue, not confirmed
Immediately before the late
thread/startresponse in the latest failed run, macOS unified logging recorded three entries like:They occurred only a few milliseconds before the orphan response. This may indicate a workspace/file-watcher initialization delay, but I could not confirm the same FSEvents entry in every older failure, so this is only a hypothesis.
The useful distinction here is that scheduled and manual execution use the same packaged
thread/startpath. The observed difference is response latency at the time of the trigger: approximately 57.7 seconds for the failed scheduled start versus approximately 170 ms for the successful manual start.Could
thread/startbe waiting synchronously for workspace, skills, MCP, or FSEvents watcher initialization? Independently of the underlying delay, handling a late successful response without leaving an automatically archived/orphan run would make this failure recoverable.Jardingris commentedon Aug 23, 2026
Follow-up: bundled local stdio MCP startup is on the critical path
Further read-only tracing narrowed the scheduled-start delay to the per-thread MCP initialization window.
node_replstdio server.startup_timeout_secwas 120 seconds, while Desktop abandonsthread/startafter 30 seconds.node_replprocess was created at the same instant asthread/start. The successful app-server response arrived late, after Desktop had discarded the request.node_replprocess was created at the trigger and the thread route completed immediately.state_5.sqliteand no rollout, matching the ghost/orphan lifecycle reported in the Windows evidence above.The current
mainimplementation still usesMcpStartupPolicy::Eagerfor root sessions incodex-rs/core/src/session/mcp_runtime.rs, andinstall_initial_mcp_runtime(...).awaitcompletes before thread startup returns. The general lazy-start proposal in #22901 was closed without merge.The delay is not currently reproducible on demand: 20 fresh
node_replinitialize/list-tools/kernel cycles completed in 254-300 ms, and 20 cycles including the bundled Codex sandbox path completed in 230-245 ms, all without failure. This supports an intermittent startup/context issue rather than a consistently broken helper.A controlled A/B is now active: only this optional server's startup timeout was changed from 120 seconds to 3 seconds. The server remains enabled and is not marked required. No scheduled-task, worker, or downstream command configuration was changed. I will report whether the next scheduled trigger materializes a durable thread within the Desktop's 30-second window.
Regardless of the underlying intermittent delay, the product-level defect remains the timeout mismatch: an optional MCP startup can outlive the Desktop request, and the late successful response can still publish an orphan conversation route.
Jardingris commentedon Aug 24, 2026
Correction: Desktop hard-codes the bundled helper timeout per thread
The previously described 3-second
config.tomlA/B did not survive a full Desktop restart.After restart:
node_replentry was restored exactly to its previous contents;bundled_plugins_reconcilewindow;startup_timeout_secwas again 120 seconds.Inspection of the packaged Desktop implementation explains why. Its Browser Use thread configuration constructs this per-thread override for the bundled helper:
So editing the managed global timeout is not a durable workaround; Desktop re-synchronizes it and also supplies 120 seconds in the per-thread configuration.
The corrected A/B uses a trusted, project-scoped config for only the affected local project:
This is intentionally narrower than disabling the helper globally. Codex config tables merge recursively, and the Desktop per-thread override does not set
enabled, so the project-levelfalsesurvives the upper 120-second table overlay. Effective-config checks confirm:enabled=falseenabled=truemcp_servers.node_repl={startup_timeout_sec=120}override:enabled=falseremains effectiveThe scheduled task does not use Browser/Computer Use tools, so this isolates whether eager startup of the bundled optional helper is the component crossing the 30-second Desktop limit. The next scheduled result will be reported separately.
elliejayliquid commentedon Aug 29, 2026
Might be related, can't start new conversations using remote on the phone inside a very old trusted project. Keeps saying it's not trusted. After 6 months of working inside it...
infoharksb-dotcom commentedon Oct 4, 2026
Additional Windows reproduction on October 4, 2026 (Sunday): a scheduled local automation failed with the same
thread/starttimeout followed by a late orphaned response described in this issue.Environment:
OpenAI.Codex 26.930.3930.0, verified from the failure stack's package path.The desktop log records the following sequence (UTC):
The original request IDs match across the two later entries. They have been redacted here. The response arrived approximately 11.46 seconds after the scheduled run was reported as failed. The scheduled failure line appears twice with the same timestamp and automation ID; those two lines represent one observed failure, not two independent runs.
The scheduled business task did not complete through this run. It was completed later from an existing conversation, so the failure had a real operational impact and required manual recovery.
This is an observed sequence, not a confirmed shared root cause. I have not established whether an optional MCP server caused the delay, or whether every manually created new conversation is affected. I have not verified a permanent fix.
Could maintainers advise whether this scheduled Windows variant should be tracked here or in a separate issue, and which sanitized diagnostics would help identify why the
thread/startresponse arrived after its waiter had already timed out?The excerpt omits automation IDs, request IDs, local paths, business content, and credentials.