Windows bundled marketplace EBUSY leaves Computer Use unavailable
What version of the Codex App are you using?
- Codex Desktop App:
26.609.4994.0 - Codex CLI:
0.140.0-alpha.2 - Bundled Browser / Computer Use plugin version:
26.609.41114 - CUA runtime:
cua_node/789504f803e82e2b
What subscription do you have?
Not specified.
What platform is your computer?
- Windows x64
- PowerShell
What issue are you seeing?
Codex Desktop intermittently reports "Computer Use plugin is unavailable" in Settings, even though:
computer_useis enabled.[plugins."computer-use@openai-bundled"] enabled = trueis present inconfig.toml.- The Computer Use native pipe starts successfully.
- The Computer Use runtime can successfully connect and list desktop applications.
The failure occurs because Codex attempts to delete and rebuild:
%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled
while processes are still loading files from that directory. On Windows, the locked files cannot be deleted. The marketplace reconciliation then fails and leaves a partially rebuilt directory containing only some bundled plugins. computer-use is omitted, so Settings reports that it is unavailable.
Observed locked files and processes included:
plugins\chrome\extension-host\windows\x64\extension-host.exe
plugins\browser\scripts\node_modules\classic-level\prebuilds\win32-x64\classic-level.node
The processes holding these files included extension-host.exe and a Codex CUA Node child process.
Relevant logs
[bundled-plugins] bundled_plugins_reconcile_started hasExternalPluginStateSync=true queued=false reason=startup
[computer-use-native-pipe] computer-use native pipe startup ready
pipePath=\\.\pipe\codex-computer-use-...
platform=win32
[BundledPluginsMarketplace] bundled_plugins_marketplace_resolve_failed
errorCode=EBUSY
errorMessage="EBUSY: resource busy or locked, rmdir
'C:\Users\<user>\.codex\.tmp\bundled-marketplaces\openai-bundled\plugins\chrome\extension-host\windows\x64'"
After the failed reconciliation, the temporary marketplace contained only:
plugins\browser
plugins\chrome
It did not contain:
plugins\computer-use
.agents\plugins\marketplace.json
The complete bundled marketplace, including computer-use, was still present inside the installed Codex App resources.
Steps to reproduce
The issue is intermittent, but the following sequence reproduces the underlying failure:
- Use Browser, Chrome, or Computer Use so that Codex starts Node REPL / CUA Node / Chrome extension-host processes.
- Leave one of these processes running with a module or executable loaded from the temporary bundled marketplace.
- Restart or update Codex Desktop, causing bundled plugin marketplace reconciliation.
- Codex attempts to remove and rebuild the temporary marketplace.
- Windows rejects removal of the loaded executable or native
.nodemodule withEBUSY. - Marketplace reconciliation leaves a partial directory.
- Open Settings > Computer Control.
- Settings displays "Computer Use plugin is unavailable".
Expected behavior
Bundled plugin reconciliation should never leave a partial marketplace.
Before replacing the marketplace, Codex should:
- Stop processes that load files from the existing temporary marketplace.
- Build the new marketplace in a separate directory.
- Validate that all expected manifests and plugin files exist.
- Atomically switch to the new marketplace.
- Keep the previous valid marketplace if cleanup or replacement fails.
If reconciliation fails, Computer Use should remain available from the last valid marketplace and Settings should surface a diagnostic error instead of reporting only that the plugin is unavailable.
Actual behavior
- Marketplace deletion fails because child processes still hold files open.
- Reconciliation leaves a partially populated marketplace.
- Computer Use disappears from the registered bundled plugins.
- Settings reports Computer Use as unavailable.
- The native pipe and runtime can still work, creating inconsistent UI and runtime states.
- Manually restoring files only works until a later reconciliation repeats the failure.
Workaround
The temporary workaround was:
- Identify and stop the exact
extension-host.exe/ Codex Node process loading files from the temporary marketplace. - Delete the temporary bundled marketplace.
- Restore a complete marketplace from the installed Codex App resources.
- Explicitly enable
computer_use. - Restart Codex Desktop.
This is not durable because future reconciliation can encounter the same file locks.
Related issues
- #19365: Windows Codex App: Browser Use unavailable because Node REPL tool is not exposed
- #19858: Codex Desktop leaks MCP server processes from internal title-generation sessions on Windows
- #18881: MCP child processes leak when McpConnectionManager is replaced
- #19753: Terminate stdio MCP servers on shutdown to avoid process leaks
This report appears distinct because the direct failure is an EBUSY error during bundled marketplace replacement, followed by a partially rebuilt marketplace and inconsistent Computer Use availability.
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Another current reproduction on Windows. This is getting ridiculous: Windows Computer Use should not require users to become local
package.jsonjanitors and cache-cleanup operators just to survive normal Codex restarts. The bundled plugin/runtime lifecycle is still leaving the product in a broken state.This is not just #27287 / the
@oai/skyexports mismatch. On this machine the export workaround was already present and verified, but Computer Use still broke after a Codex restart because the native pipe / bundled marketplace / Chrome native-host state got wedged again.Environment observed:
OpenAI.Codex_26.609.4994.0_x64__2p2nqsd0c76g0openai-bundled/computer-use/26.609.41114%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node\789504f803e82e2b@oai/sky:0.4.10@oai/sky/package.jsonalready exported:Observed failure after restart:
Relevant desktop log lines from the same run:
So the desktop log claimed the Computer Use pipe had started, but the normal Computer Use bootstrap still failed to connect to it. This is exactly the kind of state split a bundled runtime should not expose to users.
Recovery that worked:
%USERPROFILE%\.codex\plugins\cache\openai-bundled\chrome\latest\extension-host\windows\x64\extension-host.exe.%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled.Verification after that cleanup-first restart:
This is a second failure layer on top of the export mismatch. The durable fix needs to be in the bundled plugin/runtime release path, not in per-user local repairs. At minimum, please add a Windows release smoke test that starts Codex Desktop, invokes Computer Use, runs
sky.list_apps(), reads one targetable window withget_window_state(), restarts Codex while the Chrome native host exists, and verifies the same sequence still works.Since Windows is supposed to be officially supported now, it would be great for there to be a Windows VM smoke test before releasing new app/plugin versions to make sure it at least launches and can do basic functionality. It would be even nicer to do both Windows 10 and 11 in separate smoke tests. Windows support was announced but is definitely not a first-class feature right now.
I posted a tested public-repo mitigation branch and code-path notes in the canonical thread here: https://github.com/openai/codex/issues/27234#issuecomment-4733496317
Short version: I could not open an upstream PR because this account does not have
CreatePullRequestpermission onopenai/codex, but the branch is available for maintainers to cherry-pick or turn into a PR:Scope note: the public patch hardens
codex-rs/core-pluginsplugin-cache replacement on Windows and adds lock regression tests. The DesktopBundledPluginsMarketplacereconciler code that owns the generated bundled marketplace appears to be private, so the full staging/validation fix still needs to happen there.Disclosure: I maintain WinBridge Recovery, an independent Windows recovery project for Codex Desktop.
The important part of this report for recovery tooling is the split between the trigger and the persistent damage:
EBUSYfromextension-host.exe/ Codex Node workers prevents replacement of the generated bundled marketplace, then the partial marketplace survives and makes Computer Use look unavailable even though the helper/runtime may still be healthy.WinBridge Recovery is intended to repair that second layer. It validates the current official AppX bundled source against the active managed marketplace, versioned plugin cache and
latestpointers, creates a rollback backup, and can rebuild the incomplete user-side state after the locking processes are quiesced.One useful lesson from this issue that I’m also taking into the project: lock preflight should not look only for
extension-host.exe; Codex-owned Node workers can hold native modules from the plugin tree too. I would not recommend killing arbitrarynode.exeprocesses, so any automatic handling should identify only processes tied to the Codex/plugin cache.This does not fix the upstream lifecycle race itself, but it may make recovery from the partial-marketplace state repeatable instead of manually reconstructing the tree each time.