Repository navigation
Windows Desktop: Opening Plugins saturates app-server queue and causes subsequent message sends to time out #37401
Description
What version of the Codex App are you using (From "About Codex" dialog)?
26.803.5235.0
What subscription do you have?
ChatGPT Pro 5x
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
On Codex Desktop for Windows, opening the Plugins page can saturate the local app-server request queue. The Plugins page eventually fails with:
Failed to load plugins
App server request expired while queued
After this happens, normal Codex messages also stop sending and eventually time out. Fully restarting the desktop app restores message sending until Plugins is opened again.
Opening Plugins initiates plugin discovery/reconciliation and other relatively long-running requests. External-agent detection timeouts were observed in the original logs, but subsequent isolation shows they are not established as the sole root cause.
Latest isolation
The original issue reproduced using the native Windows backend. Further testing using the WSL backend found:
features.apps = false,features.plugins = false- Message sending works normally.
features.apps = false,features.plugins = true- Every named plugin was explicitly set to
enabled = false. - Opening Plugins and then sending a message still reproduced the hang.
- Therefore, the failure does not require a particular enabled plugin.
- Every named plugin was explicitly set to
features.apps = true,features.plugins = false- Apps load successfully.
- Message sending remains stable.
thread/startandturn/startcomplete without queue rejection.
This isolates the trigger to the global plugin framework / Plugins UI path rather than the Apps framework, authentication, general network access, sandbox elevation, or one particular enabled plugin.
With the plugin framework enabled, startup also scanned plugin content under .codex/.tmp/plugins/ despite every named plugin being disabled. In the affected run, skills/list took approximately 25 seconds and experimentalFeature/list took approximately 24 seconds, placing both close to the desktop's 30-second queue timeout.
Current workaround
No plugins were uninstalled. Only the global plugin feature gate is disabled:
[features]
apps = true
plugins = falseWhat steps can reproduce the bug?
- Launch Codex Desktop on Windows.
- Open any existing Codex conversation.
- Send a simple message such as
test. - Confirm that the message sends normally.
- Open the Plugins page.
- Wait for Plugins to load.
- After approximately 30 seconds, Plugins reports:
Failed to load plugins App server request expired while queued - Return to the conversation and send another simple message.
- The message hangs and eventually fails with a timeout.
- Fully quit and restart Codex Desktop.
- Send a message without opening Plugins; it works normally again.
- Open Plugins again; the issue reproduces.
The feature-gate isolation above provides a minimal variant: the failure still reproduces with Apps disabled and every named plugin disabled, as long as the global Plugins feature is enabled.
No code snippet is required; opening the Plugins page is the trigger.
Relevant logs
Before opening Plugins, requests complete normally, including plugin/list, config/read, thread/read, and turn/start.
In the original run, external-agent discovery timed out for Cursor and Claude Code:
Timed out waiting for MCP response to externalAgentConfig/detect
The app-server then reached its in-flight limit and started rejecting queued requests:
app_server_client_request_queue_rejected
inFlightRequestCount=6
method=plugin/list
reason=queue-expired
This was followed by:
App server request expired while queued
Queue starvation then affected unrelated methods, including:
mcpServerStatus/listmodel/listconfig/readthread/list
Eventually message submission failed:
[Composer] submit failed ... errorMessage=Timeout
App server request timed out after dispatch
Additional diagnostics
- In-app feedback session ID for diagnostic correlation:
no-active-thread-019fdcdc-a067-7f63-99c0-7029264ef97c - Direct Codex CLI requests succeeded, ruling out authentication and general network failure.
- Switching from the Windows elevated sandbox to the unelevated sandbox did not resolve the message timeouts.
- After switching the desktop agent to WSL and repairing a separate stale SQLite backfill, the queue starvation still reproduced.
- A complete clean reinstall/reset worked normally until Plugins was opened.
- The desktop UI remains responsive during the failure.
- The issue reproduces across conversations with a simple
testprompt and is not related to context-window usage. - Restarting immediately clears the condition.
Related queue-starvation reports with different triggers are #36914 and #36189. Those involve thread/collaboration hydration rather than the Plugins UI/plugin framework, but may share the same app-server scheduling or backpressure weakness.
What is the expected behavior?
A slow or failed Plugins request should remain isolated. Plugin discovery/reconciliation should not occupy every app-server request slot or block interactive operations such as thread/start, turn/start, and message submission.
Background plugin work should be cancellable, coalesced, or lower priority than interactive requests, and a Plugins-page failure should not require restarting the desktop app.
Additional information

Activity
github-actions commentedon Aug 7, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
CK-XYZ commentedon Aug 7, 2026
Update after further diagnostics:
The original queue-starvation report remains valid, although external-agent
discovery may not be the sole root cause.
to the unelevated sandbox did not resolve message timeouts.
network failure.
backfill. With apps/plugins enabled, the desktop still reached its in-flight
request limit and
thread/starttimed out.features.apps = falseandfeatures.plugins = false, while leavingplugins installed, stopped the queue starvation and restored message sending.
Therefore the issue appears to remain in the desktop app/plugin request path.
Disabling apps/plugins is currently a workaround rather than a fix.
CK-XYZ commentedon Aug 7, 2026
Additional isolation results for Codex App 26.803.5235.0:
I tested the global Apps and Plugins feature gates independently.
Results
features.apps = false,features.plugins = falsefeatures.apps = false,features.plugins = trueenabled = false.features.apps = true,features.plugins = falsethread/startandturn/startcomplete without queue rejection.This narrows the problem to the global plugin framework / Plugins UI path,
rather than the Apps framework or one specific enabled plugin.
With the plugin framework enabled, startup also scanned plugin content under
.codex/.tmp/plugins/despite all named plugins being disabled.skills/listtook approximately 25 seconds and another feature request took approximately
24 seconds, placing them close to the desktop's 30-second queue timeout.
Current workaround:
Miles-Cheverton commentedon Sep 14, 2026
Sharing a recovery observation from my macOS report #45405 because it showed a similar
inFlightRequestCount=6/App server request expired while queuedpattern affecting unrelated RPCs and message submission.On my Mac Studio, I turned Allow Connections OFF in ChatGPT Desktop, waited a few seconds, then turned it ON again. Local Work started working again. App/runtime restarts, disabling user MCP servers and a completely fresh
CODEX_HOMEhad previously failed to restore it.Environment: ChatGPT 26.908.40834 (8881), bundled Codex 0.154.0-alpha.6.2, macOS 27.0 build 26A428, arm64. No OS downgrade was needed.
This recovery is confirmed in my environment. It is not a verified Windows fix or proof that the incidents share a cause. Plugin reconciliation appeared in my logs, but I have not established it as the trigger. Full details: #45405.
MisterRound commentedon Sep 19, 2026
Reproduced again on the current Windows Store build, with a more specific split between healthy installed capabilities and the failing directory path.
Current build
26.915.4065.026.915.319450.155.0-alpha.9.2Current behavior
Failed to load plugins / Timeoutat the client's 30-second request limit.plugin/listapproximately every 30 seconds. I observed 15 consecutive requests at an exact 30.0-second mean interval after leaving the page.The fresh global remote-catalog cache under
<CODEX_HOME>/cache/remote_plugin_catalogis 23,230,589 bytes and contains 4,529 plugin summaries. The current Desktop renderer still uses fullplugin/listfor the directory and applies a 30-second client timeout. The protocol already exposes paginatedplugin/search, whileplugin/installedprovides the much narrower installed inventory without fetching the broader catalog.I also tested the apparent
features.remote_plugin=falseescape hatch without persisting it. It changes the effective installed inventory to legacy local curated copies and drops remote-only/default inventory in this environment, so it is not an installed-capability-preserving fix.This now looks closely related to the payload-size evidence in #41573, although this reproduction is local Windows Desktop + WSL rather than Remote SSH. The merged plugin discovery work in #46558, #46567, and #46572 is useful agent/runtime architecture, but none of those changes directly replaces the Desktop directory's full
plugin/listrequest.Requested product-side correction
plugin/installed.plugin/searchrather than returning the entire global catalog in oneplugin/listresponse.No plugins were removed or disabled for this reproduction.
MisterRound commentedon Sep 19, 2026
Reproduced again on
26.915.4065.0, this time with evidence that paginatedplugin/searchitself can starve behind unrelated startup work.After a fresh restart, typing
deepin Plugins issued threeplugin/searchrequests. All three expired after about 30 seconds with:This was not caused by a slow full-catalog response in that moment:
plugin/listcompleted in10,340 ms, including8,710 msof queue wait.thread/searchcalls occupied app-server capacity for34,231 ms,66,671 ms, and67,806 ms.thread/searchcalls later completed after roughly228-267 seconds, some with29-62 secondsof queue wait.So replacing the directory's unpaginated
plugin/listwithplugin/searchis necessary but not sufficient. Interactive search still has no usable lane when startup/history searches monopolize all five in-flight slots.Suggested scheduler-level invariants:
thread/searchhydration as bounded/background work.No plugins were removed or disabled for this reproduction.
kzkvv commentedon Sep 25, 2026
Met the same bug. It's really annoying - each ~30 min codex is stuck -> time is lost, job is not done :(
Asked codex in the separate console to investigate this issue with codex app - codex found a few issues, this one looks most relevant.
Plugins are necessary for me, so disabling them is not an option.
Will post a workaround if'll found one.
grtninja commentedon Oct 3, 2026
Additional Windows desktop UI symptom from October 2: the owner observed 'Failed to load plugins' on the Plugins page and 'Loading skills' in the Skills interface. Connector calls working in the assistant did not verify recovery of the owner's Plugins/Skills UI or explicit invocation path.
We have not captured the queued-request error, request timings or queue occupancy for this occurrence. This is corroboration of the visible symptom, not confirmation of the original report's queue-starvation cause. Which supported diagnostic separates local discovery/queue delay from a remote catalog error while preserving installed capabilities?
-DOTS
MisterRound commentedon Oct 13, 2026
Fresh reproduction on Windows Store package
26.1007.2314.0/ Desktop26.1007.21434, with WSL agent0.162.0-alpha.17.2, on October 13.This time the installed sidebar's narrower
plugin/installedrequest failed, not just full-catalogplugin/list:plugin/installedexpired after about 30 seconds waiting in the queue.plugin/readwas also rejected withApp server request queue is full.thread/searchcalls ran for 256-259 seconds after roughly 522-524 seconds queued; another took 795,475 ms plus 11,577 ms queued.plugin/readfinally succeeded in just 737 ms after 656,669 ms of queue wait.plugin/installedcompleted in 394 ms with zero queue wait; later checks completed in 1,941 ms and 232 ms, also with zero queue wait.The user retried and the load-error banner cleared without restarting Desktop, disabling plugins, changing configuration, or reinstalling anything. The current installed renderer already uses
plugin/installedfor installed inventory, but that request is background-priority and can still starve behind long history searches.This reinforces the scheduler-level part of the September 19 follow-up: narrower inventory and paginated search do not by themselves prevent unrelated long-running requests from monopolizing capacity. Bounded/cancellable history search, request coalescing, and starvation prevention are still needed.
No private conversation IDs, plugin IDs, account details, local paths, or raw logs are included. A separate plugin icon-metadata defect was isolated independently and is not being attributed to queue starvation.