Repository navigation
Windows Desktop: Plugins page exceeds 30s timeout when scanning 60 saved workspace roots #46974
Description
What version of the Codex App are you using (From “About Codex” dialog)?
- Desktop resource/package.json version:
26.915.31945 - Windows MSIX package:
OpenAI.Codex 26.915.4065.0 - Running bundled app-server reports:
0.155.0-alpha.9.2
These were obtained from the installed package and startup log, not from the About dialog.
What subscription do you have?
Not included in this report. The measured failure is in plugin discovery before any model inference.
What platform is your computer?
Windows 11, native Windows app-server over stdio (not WSL or Remote SSH).
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
Opening the Plugins page repeatedly shows “Failed to load plugins” with:
Timeout
App server request timed out while queued
The problem also occurs after restarting the app. This profile contains 53 saved local projects with 60 distinct workspace roots.
Direct app-server measurements show that multi-directory plugin discovery takes 42–45 seconds, exceeding the desktop's 30-second request timeout, even when requesting only local marketplaces. Requests can eventually succeed after the UI has already reported failure.
Controlled comparison on the affected installation
A separate process using the same bundled executable was started with app-server --stdio, using the existing profile. After initialize / initialized, requests were issued sequentially and timed from sending the JSON request to receiving its response. No threads or model turns were started; only the diagnostic child was stopped afterward.
| Request | Distinct cwds |
Elapsed |
|---|---|---|
plugin/installed |
1 | 2.715 s |
plugin/installed |
21 | 16.860 s |
plugin/installed |
60 | 44.860 s |
plugin/list, marketplaceKinds: ["local"] |
1 | 2.166 s |
plugin/list, all marketplace kinds |
1 | 2.272 s |
plugin/list, marketplaceKinds: ["local"] |
60 | 41.658 s |
plugin/installed, single-directory control after the 60-directory tests |
1 | 2.196 s |
All listed requests returned successfully with empty marketplaceLoadErrors. These are individual measurements, not benchmark averages.
During each 60-directory request, stderr emitted the same manifest warning 60 times:
target=codex_core_plugins::manifest
ignoring interface.defaultPrompt[0]: prompt must be at most 128 characters
path=file:///<CODEX_HOME>/.tmp/plugins/plugins/ngs-analysis/.codex-plugin/plugin.json
This is an observable marker of repeated manifest loading, not a claim that this particular plugin accounts for all the elapsed time.
What steps can reproduce the bug?
On the affected existing profile:
- Keep the saved local projects (53 projects / 60 distinct roots) and existing plugin catalog.
- Start or restart Codex Desktop.
- Open Plugins.
- Observe the 30-second timeout and, on subsequent attempts, the queued-timeout error.
To isolate the directory-count effect from the desktop UI:
- Start the bundled
codex.exe app-server --stdio. - Initialize with
capabilities.experimentalApi = true, then sendinitialized. - Compare these requests using one actual saved root and then all 60 actual saved roots, with otherwise unchanged configuration:
{"id":2,"method":"plugin/installed","params":{"cwds":["C:\\workspace\\project-a"]}}
{"id":3,"method":"plugin/list","params":{"cwds":["C:\\workspace\\project-a"],"marketplaceKinds":["local"]}}Replace the example array with the actual existing directories. The exact measurements above used real saved roots; creating 60 empty directories in a fresh profile has not been tested.
Desktop log evidence
Selected fields only; timestamps are UTC and request identifiers/paths are omitted:
2026-09-21T08:35:08.303Z mcp_request_timeout method=plugin/installed timeoutMs=30000
2026-09-21T08:35:08.440Z mcp_request_timeout method=plugin/list timeoutMs=30000
2026-09-21T08:35:08.442Z code=-32000 message="App server request timed out after dispatch"
2026-09-21T08:35:17.579Z response_routed method=plugin/installed durationMs=39278 errorCode=null
The last line is the eventual successful response to the timed-out installed-inventory request. Other requests sometimes complete quickly; this is not a permanently unresponsive server.
What is the expected behavior?
The Plugins page should remain usable with dozens of saved projects. Shared plugin metadata should not require enough repeated work across workspace roots to exceed the UI deadline.
Ideally, load/cache common marketplace manifests once and merge directory-specific configuration separately, or batch discovery with progress/partial results. A timeout should not leave retries unusable while earlier requests are still completing.
Additional information
Read-only inspection of the shipped desktop JavaScript is consistent with the measurements:
getWorkspaceRootOptionscollects roots from all saved local projects.- Plugin inventory queries pass these roots as
cwds; the catalog query can additionally include an internal marketplace directory. - The relevant desktop requests have a 30,000 ms timeout.
- The request manager tracks up to two timed-out, still-outstanding
plugin/listrequests; while that limit is reached, a subsequent request can be rejected before dispatch with the queued-timeout message.
This points to repeated discovery across roots as a sufficient trigger on this installation. It is not a source-level CPU/lock profile of the Rust implementation, and it does not rule out other latency sources.
The existing profile includes custom MCP servers and local model-provider proxy configuration. A clean profile/default-provider comparison has not been performed. The diagnostic requests did not invoke model inference.
A separate fast plugin/read error for the unavailable record-and-replay bundled plugin also appears on Windows, but it is not established as the cause of these slow list requests.
Possibly related: #33236 (multi-workspace skills/list latency), #46479 (Windows request-queue expiration). This report adds direct plugin/installed and local-marketplace plugin/list timing comparisons against directory count. Please consolidate if this is the same underlying defect.
No raw logs, credentials, project names, local user paths, or conversation contents are attached.
Activity
Lianye-Scythe commentedon Oct 3, 2026
Additional reproduction: Windows Desktop with WSL, 15 saved roots, on 26.930
I am seeing the same Plugins-page timeout symptom on a newer Windows Desktop build, with a smaller saved-project inventory and a WSL-backed app-server. This is additional evidence for #46974; I have not established that the underlying cause is identical.
Environment
app.asarpackage version:26.930.31428.26.930.3748.0.codex-cli 0.160.0(--versionchecked on that executable).10.0.26300, build26300, x64.6.18.40.1-microsoft-standard-WSL2, x86_64.spawnCommand=wsl.exeandtransport=stdiofor the local app-server.local-projectsentries and 15 distinctelectron-saved-workspace-roots. These are inventory counts, not a verified count ofcwdspassed to an individual request.features.remote_pluginis not explicitly set. A clean-profile comparison has not been performed.Versions were read from the installed package/executable, not the About dialog.
Actual behavior and reproduction
On this existing profile:
外掛程式載入失敗(Failed to load plugins), withTimeoutunderneath. The Installed sidebar remains on loading placeholders.The desktop log records
plugin/listandplugin/installedrequests reaching a 30,000 ms timeout. Several installed-inventory responses later arrive successfully witherrorCode=null, after the UI deadline has elapsed.Matched-request log evidence
Each timeout/response pair below was matched using the same original request ID. IDs are replaced with A/B/C; only selected diagnostic fields are reproduced.
Other
plugin/installedrequests in the same desktop run complete in approximately 2 seconds. A differentplugin/listrequest succeeds in 15.489 seconds at02:30:07.365Z; this is not the late response to the timed-out list request above. The server is intermittently slow rather than permanently unresponsive.The same startup log also records three Local Work executor startup attempts failing with
Timed out waiting for MCP response to plugin/installed. Their relationship to the Plugins-page failure has not been isolated.Expected behavior
The Plugins page should reliably load both the catalog and installed inventory on this profile. Requests that eventually succeed should not leave the UI displaying a timeout indefinitely; retry/recovery should remain usable.
Scope and diagnostic limits
Related report: #46974
ASPMNV commentedon Oct 6, 2026
Windows Codex Desktop 26.930.4958.0: messages repeatedly stayed queued until restart. One of 29 saved project roots was an unavailable network-drive folder, included in background
plugin/installedrequests. Logs showed seven consecutive timeouts.Removing that project registration and restarting restored sequential sending: four messages succeeded without another restart, and plugin timeouts disappeared during the observed interval. Project files and chat history were preserved. Long-term stability is not yet verified.
Please investigate whether unavailable saved roots can block unrelated chats.