[Windows Desktop] Selected recent task stays blank while collaboration hydration starves app-server queue
What version of the Codex App are you using (From “About Codex” dialog)?
26.727.6591.0
What subscription do you have?
Unknown (not exposed in the reportable Desktop diagnostics)
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Selecting a recently active task can leave the content pane blank/loading for a long time even though the task content is present. The selected task competes with background collaboration/history hydration in the same bounded app-server request queue. Interactive reads can remain queued until the 60-second deadline expires.
A bounded local verifier aggregated scheduler fields only; no task text, credentials, profile data, or raw logs are attached.
- Hydration queue expiries in 24 hours: 42
- Hydration queue expiries in the latest 120 minutes: 28
- Maximum queue wait: 60017 ms
- Maximum shared in-flight requests: 6
- Maximum queued critical requests: 16
- Maximum queued interactive requests: 63
- Sources: collab_hydration, thread_hydration, recent_threads, tail_history, thread_list
- Methods: thread/list, thread/read
Sanitized event shape:
app_server_client_request_queue_rejected method=thread/list
priority=background queueWaitMs=60010 reason=queue-expired
source=collab_hydration
Installed app.asar SHA256: 670A43EA0DCF6D2583F77272354CF076D1A2D5D9949873C4923C9534D86EA298
What steps can reproduce the bug?
- Have several recent tasks with collaboration/sub-agent activity.
- Restart Codex Desktop.
- Select a recently active task while background hydration is running.
- Observe a blank/loading content pane. Content may appear only after a long delay.
The issue reproduces without task-content loss. Packaged-source readback shows a shared global limit of six requests; historical collaboration hydration can request a large descendant list and issue multiple thread/read calls while the selected task is waiting.
What is the expected behavior?
Selecting a task should preempt background history hydration. The latest visible tail should render first. Background descendant hydration should be cancellable and coalesced per ancestor/generation, and a selected-task read should never wait behind a previous generation until the 60-second queue deadline.
Additional information
Suggested acceptance criteria:
- With at least 50 collaboration descendants queued, the selected task renders first content within 2 seconds.
- Interactive thread/read queue wait stays below 500 ms at p95.
- Changing selection cancels or invalidates queued background work from the previous selection generation.
- Repeated background hydration requests for the same ancestor are coalesced.
- No selected-task request expires with reason=queue-expired.
- Restarting Desktop with multiple recent collaboration-heavy tasks does not produce a blank selected-task pane.
Related: #25779 and #16817.
Privacy: no screenshot is attached because the reproduction contains private task names. No raw logs, task IDs, task contents, credentials, cookies, tokens, OAuth material, browser profile data, or history are included.
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Additional reproduction: 26.818.8289.0 turns queue starvation into a false sign-in / fully black window
I can reproduce the same scheduler starvation on a newer Microsoft Store build, with an additional authentication failure mode.
Environment:
26.818.8289.0(Get-AppxPackagestatus:Ok)codex-cli 0.149.0-alpha.4.3codex-cli 0.149.0-alpha.4.3(versions match)Observed behavior:
ChatGPT.exeprocesses and the packagedcodex.exe app-serverprocess remained alive; Windows reported the UI processes as responding.Sanitized timeline from the desktop log (KST):
Local history size may be an important amplifier:
sessionscontains 3,090 rollout JSONL files totaling about 157 GiB; 34 files modified in the last 24 hours alone total about 10.9 GiB, and the largest individual rollout is about 11.6 GiB. This looks consistent with background collaboration/history hydration filling the bounded queue and starving interactive/auth/config work. The authentication prompts appear secondary, not a real expired-login condition.Questions for maintainers:
~/.codex/sessionsa supported temporary recovery, or is there another safe compaction/reindex operation?I am testing a reversible workaround: preserve inactive session files outside the live
sessionstree, then fully restart the process tree. I can report the result here. No raw logs, task text, account identifiers, credentials, tokens, request IDs, or local user paths are included.Workaround test result and correction
I tested two changes together: a full Microsoft Store app/app-server restart, plus temporarily moving session files not modified in 24 hours outside the live
~/.codex/sessionstree.Initial result:
response_orphanedorFailed to retrieve authentication tokenevents.thread/readstill took 40.519 seconds with a 5.156-second queue wait and produced a non-authNo promise for request IDevent, although the UI remained rendered.Important correction: moving rollout files is not a viable workaround. The sidebar/index retained those sessions, but selecting one produced:
Restoring that exact rollout file made the session load successfully. I then restored all remaining files to the live session tree (3,056 total files restored, zero collisions); none remain archived or deleted.
This leaves a full process-tree restart as the only verified temporary recovery. Local history volume (about 3,090 rollouts / 157 GiB in this reproduction) is still a likely amplifier, but deleting or moving rollouts breaks indexed history and should not be recommended. A supported compaction/indexing mechanism plus interactive/auth request priority is needed.
macOS 26.820.60940: startup hydration saturates the shared six-slot queue across repeated relaunches
Adding a current macOS reproduction of the same scheduler/backpressure failure. This report is sanitized: no task text, thread/request IDs, account data, project names, private paths, or raw logs are included.
Environment:
26.820.60940(build7119)codex-cli 0.150.0-alpha.826.3(25D125), Apple SiliconImpact and timeline:
10:20onset; two focused Composer submissions had already timed out.10:19:32until shutdown began at12:23:06was2h03m34s.10:43,11:32, and12:04all degraded. Restarting the app did not restore reliable interaction. User-observed recovery followed the reboot, but the primary-runtime install described below had completed shortly beforehand, so the recovery cannot be attributed solely to reboot.Queue/hydration evidence:
app_server_client_request_queue_rejectedevents and repeatedly reachedinFlightRequestCount=6.queuedInteractiveRequestCountreached 64, after which additional requests were logged as queue-full.The macOS hang report at
11:49captured a real Electron/ChatGPT hang. The main UI thread had not run for about 238 seconds at sample time. That is one lower-bound point sample, not the overall outage duration.Resource negative controls:
The third relaunch also installed a missing primary runtime. The configured runtime bundle was approximately 353 MB, and the install operation took about 17 minutes. Queue failures predated that install and continued after it completed, so it appears to be an amplifier rather than the initiating cause.
macOS also recorded a disk-write diagnostic during the incident, but that report does not prove storage saturation or causation. The strongest direct application evidence is still the bounded app-server queue being filled by background hydration while interactive operations expired.
Suggested acceptance criteria remain aligned with this issue:
Related current reports: #23644 for macOS Composer/app-server timeouts, #35083 for retained in-app Browser renderer lifecycle, #21007 for macOS UI lag and disk-write diagnostics under low resource pressure, and #38385 for the same six-slot scheduler failure affecting every Desktop window.