Codex Desktop: opening any unloaded local chat waits ~5 seconds on owner discovery timeout
Summary
Codex Desktop waits about five seconds before displaying any unloaded local chat, even when the chat transcript is small. The actual thread read/resume completes in under 200 ms; the delay is a fixed owner-discovery timeout before fallback.
Environment
- ChatGPT/Codex Desktop: 26.803.41515 (build 6321)
- Bundled Codex: 0.147.0-alpha.6.5
- macOS 26.5.1, arm64
Steps to reproduce
- Launch the desktop app.
- Open any unloaded local chat.
- Observe that the content appears only after about five seconds.
This reproduces with a small local transcript of 3,075,688 bytes, so it is not limited to large chats.
Expected behavior
The chat should appear as soon as thread/read and thread/resume complete.
Actual behavior and timing
Sanitized diagnostic timing from one reproduction:
maybe_resume_started:2026-08-07T07:00:43.245Zmaybe_resume_owner_discovery_failedwithtimeout:2026-08-07T07:00:48.252Z- Fixed wait before fallback: approximately 5,007 ms
thread/readafter fallback: 3 msthread/resumeafter fallback: 182 ms
A background avatarOverlay renderer also emits Conversation state not found, although Pets were never enabled or opened by the user.
The same owner-discovery timeout reproduces across multiple local threads. Deleting large chats and fully restarting the app did not eliminate the fixed delay.
Privacy
No raw logs, session transcript, browser tabs, or conversation content are attached.
17 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Confirming this on the same build — ChatGPT desktop 26.803.41515, bundled codex 0.147.0-alpha.6.5, macOS 26.5.2 arm64. From the Electron log (
~/Library/Logs/com.openai.codex/, times UTC):Fixed 5.002 s deadline, then the fallback succeeds 0.22 s later — matches the timing in the report.
Update — root cause identified (refines my earlier "not warm yet" hypothesis): the backend is not slow; a silent client on the desktop IPC bus eats the 5 s discovery watchdog.
findThreadOwner→thread-owner-discoveryfanned out over~/.codex/ipc/ipc.sock→ the router waits for negatives from every connected client → one client never answers → the fixed 5000 ms watchdog fires → fallback succeeds.lsof(the other accepted connections are in-process loopback pairs of ChatGPT itself). It connects and completes the handshake, but never answers discovery.no-client-foundin ~4 ms; relaunch → the timeout returns.This also reframes my earlier observations: it is not really
primaryvsavatarOverlay— it is whether discovery runs after the helper's socket connect lands (~10 s into each session); resumes with a known owner skip discovery entirely (23–48 ms observed).Suggested direction: (1) router-side — probe clients at connect (~300–500 ms), mark non-responders silent and exclude them from discovery fan-out, logging the unanswered client id; (2) helper-side — answer discovery with the protocol's negative response (
no-handler-for-request/canHandle: false), the shape the open TUI client uses incodex-rs/tui/src/ide_context/ipc.rs(which shares this socket and the same 5 s budget, and is a collateral victim).(#37397 looks like the same issue.)
Confirming a user-visible variant on the same build. Starting or cold-opening a task can show a red
Conversation not foundtoast after the five-second owner-discovery timeout, even though the task subsequently loads and remains usable.Across one current app session:
maybe_resume_owner_discovery_failedwith the fixed five-second timeout.Conversation state not founderrors beforemaybe_resume_success: one from the hiddenglobalDictationrenderer and one from the hiddenavatarOverlayrenderer.thread/readandthread/resumestill succeeded after fallback.SkyComputerUseServicewas running and connected to the local Codex IPC socket.This looks like collateral from the same silent-client discovery failure rather than missing or corrupt task data. After the watchdog expires, fallback resume succeeds, but hidden surfaces receive the conversation event before or without corresponding local state and surface the toast. That causal interpretation is an inference from the correlated timestamps, not a confirmed source-level trace.
Environment: ChatGPT/Codex Desktop
26.803.41515build6321, bundled Codex0.147.0-alpha.6.5, macOS arm64.Independent live A/B confirmation from another affected macOS system.
Environment:
26.803.4151526.804.100063315.7.8(24G817)Before terminating the helper:
SkyComputerUseServiceremained alive for about nine hours.lsofshowed the helper still connected to the same Desktop IPC socket used by ChatGPT/Codex.needs_resumestate produced:The owner-discovery wait was
5006 ms. After fallback,thread/readtook8 msandthread/resumetook306 ms.After running:
I confirmed that the helper process and its IPC connection were gone. Three different cold local threads in
needs_resumestate then completed without any owner-discovery timeout:Thread switching was immediately much faster to the user.
This adds two useful lifecycle observations:
SkyComputerUseService.This strongly supports
SkyComputerUseServicebeing a connected IPC client that does not answer thread-owner discovery. The helper should return a negative capability response immediately, and disabling the plugin should disconnect or terminate the existing helper.Conversation IDs and raw logs are omitted for privacy.
Additional lifecycle evidence from another affected macOS system. This may explain why disabling the Computer Use plugin does not reliably eliminate the regression.
Environment
26.803.41515(build6321)0.147.0-alpha.6.526.804.100063326.5.2, arm64Reproduction after disabling Computer Use
plugins."computer-use@openai-bundled".enabled = falsemcp_servers.computer-use.enabled = falsechronicle = falsejs_repl = falseSkyComputerUseServiceprocess was spawned about five seconds after the new ChatGPT process. Its parent was the current ChatGPT process, so this was not a stale helper surviving the previous app session.hotkey=DoubleCommand) before the helper appeared.maybe_resume_started5002–5006 mslater:maybe_resume_owner_discovery_failed errorMessage=timeout/usr/bin/killall SkyComputerUseServiceremoved the helper; two subsequent process checks confirmed it did not immediately respawn.A read-only inspection of the packaged main-process bundle is consistent with this behavior: the desktop-managed helper is enabled when any of the shared feature gates for Appshots, Computer Use, node REPL, or Skysight/Computer History is active. Therefore, disabling only the bundled Computer Use plugin does not necessarily prevent the affected IPC client from connecting.
There is also a legacy top-level
notify = [...SkyComputerUseClient, "turn-ended"]entry on this installation, but it cannot explain the cold-start spawn above: the helper was launched before any turn-ended notification occurred.Implication for the fix
A plugin-lifecycle-only fix would be incomplete. The helper should always answer thread-owner discovery immediately with a negative capability response when it cannot own a thread, or the IPC router should exclude non-thread-owner clients from the discovery fan-out. Disabling Computer Use should also disconnect/terminate an existing helper when no other shared feature requires it.
No conversation IDs, transcript contents, raw logs, or private paths are included.
Additional local confirmation: on Desktop 26.730.61639, reopening a needs_resume task reached thread/read about 75 ms after resume began. On 26.803.41515, the same path waits 5,001 ms for maybe_resume_owner_discovery_failed, then thread/read takes 5 ms and thread/resume 89 ms.
Local logs also show inactive_thread_unsubscribed occurring for 3600 seconds after the task became inactive. That confirms that task cooling predates the regression.
A one-hour unload is obviously intentional, presummable to reduce memory, but it also feels WAY to frequent. I'd personally want one week.
Independent confirmation from another severely affected macOS user. This is a major desktop usability regression, not a minor performance fluctuation.
Environment:
Exact user-visible pattern:
Normal message submission and response streaming remain fast and reliable. Only conversation navigation is affected. This makes the desktop app materially slower than the web UI for routine chat switching and makes the latest app feel broken after every relaunch.
Sanitized measurements across retained desktop logs:
The state transition matches the report exactly: an unloaded conversation enters needs_resume, owner discovery waits for the full five-second watchdog, fallback succeeds, and the conversation becomes resumed. Subsequent visits in the same app process reuse that warm state and are instant.
Local root-cause confirmation:
Severity request: please treat this as a high-impact navigation regression. A five-second watchdog paid once per conversation after every app launch compounds quickly for users who work across many tasks. The helper should immediately return a negative owner-capability response, or the IPC router should exclude silent non-owner clients without blocking the UI.
experiencing the same thing, really annoying
➜ ~ /usr/bin/killall SkyComputerUseServicehelped thoughIndependent confirmation that this remains reproducible on August 11, 2026.
Environment
26.803.41515(build6321)0.147.0-alpha.6.526.6.1, arm64Fresh-session reproduction
The desktop process had just started. Five different unloaded local tasks were cold-opened over the next several minutes. All 5/5 followed the same sequence:
maybe_resume_startedmaybe_resume_owner_discovery_failed errorMessage=timeoutthread/read: 5–9 msthread/resume: 37–1,705 msAlready-loaded tasks switched quickly; the delay returned on the first open of other unloaded tasks.
Control evidence
HTTP 101)stream disconnected,os error 60, or HTTP-fallback markers during the sampled periodokSkyComputerUseServicewas running during the samplesavatarOverlayrenderer also emittedConversation state not foundThis is consistent with the fixed local owner-discovery watchdog described in this issue, not slow transcript reads or general macOS resource pressure. The exact non-responsive IPC client is not independently proven by these samples.
This regression has recurred across multiple days and substantially affects users who switch among many tasks. No raw logs, conversation IDs, transcript content, private paths, or account information are included.
Same-day recurrence after updating to 26.803.61601 (build 6396)
After installing today's update, task opening was initially fast. The stall returned about four minutes after the new app process started.
Fresh evidence from the updated build:
maybe_resume_owner_discovery_failedafter 5000–5009 ms (mean 5002.3 ms).thread/readtook 2–24 ms (median 7 ms).thread/read7 ms.This update did not provide a durable fix: it briefly postponed or cleared the triggering state, then the exact regression returned. For users switching among many tasks, Desktop navigation becomes materially unusable. Please treat #37398 as a high-impact regression and confirm whether this build was expected to address it.
No raw logs, conversation IDs, transcript contents, local paths, or account data are included.
Still reproducible after today's desktop update:
maybe_resume_owner_discovery_failed ... timeoutevents, 73Conversation state not founderrors, and 250 unknown-conversation errors.The same post-update evidence is documented in #37686, including the observed Computer Use service correlation. This confirms the issue is not limited to the previous desktop build and should be treated as a regression in 26.803.61601.
Additional A/B evidence (sanitized; the installed official app was not modified):
26.803.41515(6321): cold local-thread opens consistently spent ~5.0 s betweenmaybe_resume_startedandmaybe_resume_owner_discovery_failed errorMessage=timeout; only afterward didthread/readfinish in ~4–12 ms andthread/resumein ~40–120 ms.avatarOverlayrenderer was prewarmed withrendererWindowVisible=false, received unrelated conversation broadcasts, and sometimes loggedConversation state not found, even with the pet tucked and Computer Use PIP hidden.In an isolated test copy based on official Desktop
26.803.81509(6415), disabling both normal-navigationfollowExistingOwnerand hiddenavatarOverlay/secondary-window prewarming reduced cold switches to 24–54 ms, with no owner-discovery timeout and no avatar renderer traffic.This is isolation evidence, not a proposed end-user patch. It supports a product fix that:
thread/readwithout serially blocking on the 5 s ownership watchdog (or reconciles ownership asynchronously);The Computer Use trigger may be another instance of the same IPC-client class; see #37686. Full detail was also added to #37397. No raw logs, thread IDs, prompts, project paths, or account data are included.
Still reproducible on the latest macOS desktop build (independent confirmation)
Tested today on the unmodified official desktop app:
26.803.81509(build6415)0.147.0-alpha.6.6Three cold opens of unloaded local tasks in the same post-update session all hit the same fixed watchdog before fallback:
| Resume started | Owner discovery timeout | Wait |
| --- | --- | --- |
| 11:51:15.797 | 11:51:20.798 | 5,001 ms |
| 11:51:29.952 | 11:51:34.953 | 5,001 ms |
| 11:55:27.485 | 11:55:32.487 | 5,002 ms |
For the controlled third run, the fallback immediately succeeded:
thread/read9 ms,thread/resume69 ms, andthread/turns/list9 ms. This rules out local transcript I/O or thread-database performance as the source of the five-second user-visible delay.The app had also completed a one-off primary-runtime setup after updating before these tests; the exact 5-second pattern remained afterwards. Database integrity checks passed and the system had no CPU, memory, or swap pressure during reproduction.
A hidden
avatarOverlayrenderer was created withvisible=falsedespite the overlay being closed, received task events, and loggedConversation state not foundfollowing resumes. This is consistent with hidden/secondary clients being involved in the ownership/broadcast path, but this observation alone does not identify the single non-responsive client.This confirms that build 6415 did not fix the navigation regression. A product fix should avoid serially blocking local task hydration on the 5-second owner-discovery watchdog and should ensure non-owner/hidden IPC clients return an immediate negative response or are excluded from the discovery fan-out.
No raw logs, conversation IDs, paths, prompts, account data, or tokens are attached.
Confirmed this persists in Codex Desktop 26.803.61601 (bundled app-server
0.147.0-alpha.6.5) on macOS 15.7.3 (24G419), Apple Silicon.Fresh reproduction after quitting and reopening the app:
maybe_resume_started: 45 msmaybe_resume_started→maybe_resume_owner_discovery_failed errorMessage=timeout: 5,001 msthread/read: 4 msthread/resume: 91 msmaybe_resume_success: 5,202 msSo the fixed owner-discovery timeout still blocks rendering in this newer build; reading and resuming the thread remain fast.
Independent confirmation from another affected Mac; this remains reproducible on August 13, 2026.
Environment
26.803.61601(build6396)0.147.0-alpha.6.526.804.100063327.0, Apple Silicon / arm64Current-session evidence
SkyComputerUseServicestarted as a child of ChatGPT about three seconds after the desktop process. In this fresh app session, 4/4 primary-window cold task resumes reached the full owner-discovery watchdog:The other two sampled primary cold resumes showed the same fixed timeout; their subsequent
thread/readoperations took 8–10 ms andthread/resumetook 61–63 ms.I also tested with Tailscale fully exited; the same fixed five-second timeout persisted. That makes a VPN/network path unlikely and is consistent with the local IPC/helper diagnosis already documented here.
Impact: task contents are fast to read, but each unloaded task is blocked on owner discovery before fallback. Please have non-owner clients return an immediate negative capability response, or avoid serially blocking local task hydration on this watchdog.
No raw logs, conversation IDs, task contents, account data, or local paths are included.
First data point on the current build pairing: on my machine (macOS 26.5.2 arm64) the stall has not recurred since updating to Desktop 26.814.41407 (build 6720) + Computer Use helper 26.817.1000761 — small sample so far, but a clean same-machine A/B.
From the Electron logs (UTC):
maybe_resume_owner_discovery_failedout of 41 resume attempts. Representative:00:26:10.666Z started → 00:26:15.668Z timeout (fixed 5.002 s) → 00:26:15.914Z fallback success.previousResumeState=resumed previousStreamRole=owner), not a stall.Notably, the helper is still connected to
~/.codex/ipc/ipc.sockon the new pairing (confirmed vialsof), so if this holds, the improvement looks like a router- or protocol-side change rather than the helper disappearing from the bus — consistent with the silent-client direction discussed above. Labelled hypothesis until more samples accumulate; I will report back if the timeout recurs on build 6720.More samples for the A/B above, and a correction of an earlier version of this comment.
maybe_resume_started2026-08-19T00:11:32.232Z →maybe_resume_success00:11:32.254Z), versus 22 timeouts out of 41 attempts on the older builds noted above.~/.codex/ipc/ipc.sock.lsofshows its client side as a plain unix endpoint (->0x…) whose peer is the socket ChatGPT has bound to the ipc.sock path; an earlier reading of the same output missed that peer mapping and wrongly reported the helper as absent from the bus.So the improvement on this pairing is not the helper disappearing from the bus: either the router no longer blocks owner discovery on a silent client, or the new helper answers discovery — hypothesis; I can't distinguish the two from outside. Either way, desktop 26.814.x + helper ≥ 1000761 remains the comparison point for anyone still affected on older builds, and I will report back here if the timeout recurs on this pairing.