Windows Desktop 26.601: global CLI and Desktop bundled-plugin reconcile can fight over shared config.toml
Windows Desktop 26.601: global CLI and Desktop bundled-plugin reconcile can fight over shared config.toml
This report was prepared by Codex at the user's request from local diagnostics. User-specific paths are sanitized.
Summary
On Windows Codex Desktop, the global npm Codex CLI and the Desktop-managed/internal Codex runtime both read and write the same user configuration:
%USERPROFILE%\.codex\config.toml
In this environment, plugin repair commands run through the default codex command were actually executed by the global npm CLI, while Codex Desktop later reconciled its own bundled plugin marketplace and runtime state on startup. The Desktop reconcile path logged source conflicts for openai-bundled and requested uninstall of bundled Browser/Chrome plugins.
The machine is currently recovered, but the failure mode is still risky because it is not obvious which runtime owns these config sections:
[marketplaces.openai-bundled]
[plugins."browser@openai-bundled"]
[plugins."chrome@openai-bundled"]
[plugins."computer-use@openai-bundled"]
[mcp_servers.node_repl]
[mcp_servers.node_repl.env]
notify = [...]
Environment
OS: Windows
Install method: Microsoft Store
Codex Desktop Appx: 26.601.2237.0
Codex package: OpenAI.Codex_26.601.2237.0_x64__2p2nqsd0c76g0
Global npm Codex CLI: codex-cli 0.137.0
Desktop/internal CLI referenced by config: codex-cli 0.136.0-alpha.2
Bundled plugin version: 26.601.21317
Default codex resolution:
%USERPROFILE%\.codex\bin\codex.ps1
-> %APPDATA%\npm\codex.ps1
-> global npm Codex CLI 0.137.0
Desktop/internal CLI referenced by mcp_servers.node_repl.env.CODEX_CLI_PATH:
%LOCALAPPDATA%\OpenAI\Codex\bin\<hash>\codex.exe
# codex-cli 0.136.0-alpha.2
Current active bundled marketplace:
%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled
Current plugin status after recovery:
browser@openai-bundled installed, enabled 26.601.21317
chrome@openai-bundled installed, enabled 26.601.21317
computer-use@openai-bundled installed, enabled 26.601.21317
codex doctor --summary from the global npm CLI reports:
16 ok · 1 idle · 1 notes · 1 warn · 0 fail degraded
What happened
During local plugin troubleshooting, commands such as the following were run with the default codex command:
codex plugin marketplace remove openai-bundled
codex plugin marketplace add <path>
codex plugin add browser@openai-bundled
codex plugin add chrome@openai-bundled
Because codex resolved to the global npm CLI, those commands wrote Desktop-relevant plugin marketplace state into the shared %USERPROFILE%\.codex\config.toml.
After Codex Desktop restarted, Desktop's bundled-plugin reconcile path logged source conflicts and plugin removals.
Relevant sanitized Desktop log excerpts:
[BundledPluginsMarketplace] bundled_plugins_marketplace_add_failed
errorMessage="marketplace 'openai-bundled' is already added from a different source; remove it before adding this source"
marketplaceName=openai-bundled
marketplaceRoot=%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled
[BundledPluginsMarketplace] bundled_plugin_uninstall_requested
pluginId=browser@openai-bundled
pluginName=browser
reason=not_in_bundled_marketplace_plugin_names
[BundledPluginsMarketplace] bundled_plugin_uninstall_requested
pluginId=chrome@openai-bundled
pluginName=chrome
reason=not_in_bundled_marketplace_plugin_names
Another later log line:
[BundledPluginsMarketplace] bundled_plugin_uninstall_requested
pluginId=chrome@openai-bundled
pluginName=chrome
reason=chrome_extension_uninstalled
Additional update-path observation
There is also no obvious supported way to update the Desktop/internal CLI independently.
Running:
& '%LOCALAPPDATA%\OpenAI\Codex\bin\<hash>\codex.exe' update
returns:
Error: Could not detect the Codex installation method. Please update manually: https://developers.openai.com/codex/cli/
Running:
winget upgrade --id 9PLM9XGG6VKS --source msstore --accept-source-agreements --accept-package-agreements
returns:
No available upgrade.
No newer package versions are available from the configured sources.
So the global CLI can be newer than the Desktop/internal CLI, while both still interact with the same %USERPROFILE%\.codex\config.toml.
Expected behavior
One of these would make the setup much safer:
- Desktop-managed bundled plugin sections should be clearly owned by Desktop and protected from incompatible global CLI edits.
- Global CLI plugin marketplace commands should detect when
openai-bundledis Desktop-managed and warn before modifying it. - Desktop bundled-plugin reconcile should be idempotent when
openai-bundledis already registered to the same generated runtime marketplace. - If the marketplace source is wrong or stale, Settings/doctor should show a clear diagnostic and non-destructive repair path.
- The docs should clarify whether users should avoid using global
codex plugin marketplace add/removefor Desktop-managed bundled plugins. - There should be a documented way to refresh/regenerate the Desktop bundled marketplace without deleting the entire
.codexhome.
Actual behavior
The global CLI can mutate shared Desktop-relevant plugin configuration. Desktop may later reconcile the same sections using its own internal runtime and app state, resulting in source conflicts and bundled Browser/Chrome uninstall requests.
This makes plugin repair fragile: a change can appear correct from codex plugin list, then be reverted or reinterpreted after Desktop restarts.
Related issues
This appears related to, but not exactly the same as:
- #23902
- #25220
- #25253
- #25571
- #25665
- #21579
The closest overlap is the Windows bundled marketplace/cache class of failures in #25220 and #25253, but this report specifically highlights the shared-config ownership problem between global npm CLI and Desktop/internal runtime.
Current workaround used locally
The machine is currently left in the Desktop-generated marketplace state:
%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled
Browser, Chrome, and Computer Use are installed/enabled again. No destructive cleanup is being applied.
For future recurrence, a safer emergency workaround may be to copy the complete bundled marketplace from the Store package to a user-owned directory with robocopy, then register openai-bundled to that user-owned copy. Directly pointing at WindowsApps appears risky because protected package paths can produce access-denied/runtime-loading failures.
Request
Could maintainers clarify the intended ownership model for these Desktop-managed config sections, especially openai-bundled, node_repl, and Computer Use native-pipe settings?
Also, is there a supported command to safely regenerate or repair the Desktop bundled marketplace without deleting the whole %USERPROFILE%\.codex directory?
3 Comments
Update from the same Windows environment after more debugging: I no longer think the global CLI/shared-config conflict fully explains the remaining failures.
The original source-conflict diagnosis was real: a repair script had registered
openai-bundledto a non-Desktop-owned path, and Desktop then logged:Removing that stale/custom
[marketplaces.openai-bundled]state and letting Desktop own the marketplace stopped that specific failure.However, after removing the npm/global CLI path from the equation, the remaining failure still reproduced during Desktop startup/reconcile. Current state:
When
.tmp\bundled-marketplaces\openai-bundled\.agents\plugins\marketplace.jsonis present and the plugin folders are complete, the Desktop/internal CLI reports:I then verified runtime behavior inside a live Codex Desktop session:
I also used Computer Use to open a fresh Notepad tab and type a short visible test message, so the native Windows helper was not merely installed; it was actually operational.
The remaining suspected Desktop bug is therefore narrower than the title of this issue: Desktop is storing/using the bundled marketplace from
%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled, and when that transient marketplace becomes incomplete or loses.agents\plugins\marketplace.json, Settings/Plugin discovery can report Browser/Computer Use unavailable even whileconfig.tomlis otherwise sane.Related issues that now look closer to the remaining failure mode:
.tmpbundled marketplace overwritten with incomplete contentsSo the useful split seems to be:
openai-bundledsource inconfig.tomlcan cause reconcile hard-fail. Desktop should probably repair/replace that source or show a clear diagnostic instead of silently losing bundled plugins..tmpmarketplace should either be durable or rebuilt atomically and completely before any plugin/helper-path resolution reads it.I maintain WinBridge Recovery, an independent Windows recovery project for Codex Desktop bundled-plugin state: https://github.com/zemeng5208/winbridge-recovery
The narrower diagnosis in the follow-up comment is very close to the problem the project targets:
config.tomlcan be sane while the Desktop-owned.tmp\bundled-marketplaces\openai-bundledsnapshot becomes incomplete or loses its marketplace manifest, and Settings/plugin discovery then reports Browser / Computer Use unavailable.The recovery flow is version-aware: it discovers the currently installed official Desktop package, validates the bundled marketplace/plugin manifests, reconciles incomplete user-side marketplace/cache state and
latestpointers, and refreshes related runtime/registration paths. It also tries to avoid the Chrome/Edge native-host file-lock race before doing cache reconciliation, with backups and rollback rather than destructive blanket cleanup.This is not an upstream fix and it does not try to make the global npm CLI own Desktop-managed state; it is intended to restore a consistent Desktop-generated/user-side state from the official package already installed. The ownership/reconcile race described in this issue still deserves a product-side fix.
Confirmed recurrence of the same-name/different-source conflict after a Store update, with an additional update-persistence detail.
Before the update, compatibility repair had registered a stable local
openai-bundledsource under%USERPROFILE%\.codex\marketplaces\openai-bundled-local. The Store update replaced the application bundle but preserved%USERPROFILE%\.codex\config.toml.On official Store build
26.810.7004.0, Desktop reverted to generating and registering%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled. Every focus reconcile then logged:This demonstrates an asymmetric upgrade: application code is replaced, while the old Desktop-relevant marketplace registration persists. The new build does not migrate the prior source or make the add operation idempotent, so plugin cache synchronization cannot advance.
The full sanitized postmortem and requested product changes are here:
https://gist.github.com/MickeyWzt/416bd69fa28b59c65aaec37aed9b34d1