Bundled marketplace under .tmp is repeatedly overwritten with incomplete contents, causing Chrome plugin to fail loading
What version of the Codex App are you using (From “About Codex” dialog)?
Codex Desktop: 26.527.7698.0
What subscription do you have?
plus
What platform is your computer?
Windows 11
What issue are you seeing?
openai-bundled marketplace is configured to a temporary directory under .codex\.tmp. The directory is repeatedly rewritten into an incomplete state. After manually restoring the full marketplace from a valid copy, the directory is overwritten again and loses .agents\plugins\marketplace.json and all .codex-plugin\plugin.json files.
As a result, enabled bundled plugins remain configured, but plugin loading fails, especially chrome@openai-bundled.
What steps can reproduce the bug?
Restore a complete openai-bundled marketplace into:
C:\Users\ZL\.codex\.tmp\bundled-marketplaces\openai-bundled
Verify it contains:
.agents\plugins\marketplace.json
and plugin manifests for browser, chrome, computer-use, latex.
Continue using Codex Desktop / plugin list / Chrome plugin.
Re-check the directory.
The directory is overwritten back to an incomplete state with only Chrome extension-host content.
What is the expected behavior?
Bundled marketplace refresh should be atomic and complete. It should not leave .tmp\bundled-marketplaces\openai-bundled in a partial state. If refresh fails, Codex should retain the previous valid marketplace/cache or fall back to a stable bundled source.
Additional information
WARN codex_core_plugins::loader core-plugins\src\loader.rs:67
failed to load plugin: missing or invalid plugin.json
plugin="chrome@openai-bundled"
path=C:\Users\ZL\.codex\plugins\cache\openai-bundled\chrome\26.527.60818
WARN codex_core_plugins::loader core-plugins\src\loader.rs:346
configured non-curated plugin no longer exists in discovered marketplaces during cache refresh
plugin="browser" marketplace="openai-bundled"
WARN codex_core_plugins::loader core-plugins\src\loader.rs:346
configured non-curated plugin no longer exists in discovered marketplaces during cache refresh
plugin="chrome" marketplace="openai-bundled"
WARN codex_core_plugins::loader core-plugins\src\loader.rs:346
configured non-curated plugin no longer exists in discovered marketplaces during cache refresh
plugin="computer-use" marketplace="openai-bundled"
The bundled marketplace writer/refresh path appears to treat .tmp\bundled-marketplaces\openai-bundled as both a temporary build output and the configured persistent marketplace source. When the refresh writes only part of the bundled Chrome extension host, it removes or fails to restore the marketplace manifest and plugin manifests, breaking plugin discovery and loading.
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I can confirm a very similar failure shape on Windows 26.601 as well.
Environment:
Current good state after recovery:
The critical file that determines whether
openai-bundledis discoverable is:When that file and the bundled plugin folders are present, the Desktop/internal CLI sees the marketplace and Browser/Computer Use work:
Runtime validation from the same recovered session:
Earlier in the same debugging sequence, opening/restarting Codex Desktop was the event that made bundled plugins disappear from Settings / plugin discovery. Reboot alone did not appear to erase them. Manually restoring/copying the bundled marketplace contents from the installed app package back into the
.tmp\bundled-marketplaces\openai-bundledpath restored discovery until the next time the transient marketplace became incomplete.This lines up with the theory in this issue: Desktop appears to use
.codex\.tmp\bundled-marketplaces\openai-bundledas both a generated/transient output and the registered marketplace source. If that directory is cleared or only partially written, consumers see a configured marketplace path but no valid.agents\plugins\marketplace.json, which makes bundled plugins look unavailable even though the app package still contains the full bundled marketplace.Expected behavior from the user side: the Desktop-owned bundled marketplace should either live in a durable cache path, or the
.tmprewrite should be atomic/complete and fall back to the previous valid marketplace if materialization fails.GitHub issue #25780 feedback draft
Validated follow-up workaround on Windows 11 / Codex Desktop 26.609.3341.0 (bundled plugins 26.609.30741).
The failure still appears related to incomplete bundled-marketplace materialization and Chrome native-host file locks. One stale Chrome cache had a
latestjunction targeting a deleted.tmp\bundled-marketplaces\openai-bundled\plugins\chromedirectory.A working split setup was:
computer-use@openai-bundledinstalled/enabled and do not clear its cache or change its helper path.openai-chrome-local, containing only Chrome.marketplace.jsonas UTF-8 without BOM; Windows PowerShellSet-Content -Encoding UTF8causedexpected value at line 1 column 1.chrome@openai-chrome-localand re-enable the Codex Chrome Extension.End-to-end runtime validation succeeded:
Remaining bug: after setting
chrome@openai-bundleddisabled, Codex Desktop changed it back to enabled on startup. Plugin state may be synchronized by plugin name instead of fullplugin@marketplaceidentity, so duplicate Chrome entries can reappear.This is a workaround, not a permanent fix. The product still needs atomic marketplace replacement/fallback, recovery from partial snapshots, native-host lock handling, and consistent Settings/CLI/session state. Related: #26387.
I maintain WinBridge Recovery, an independent Windows-side recovery tool for Codex Desktop bundled-plugin state: https://github.com/zemeng5208/winbridge-recovery
This issue is a direct match for one of the failure modes the project is designed around: the Desktop-owned
.tmp\bundled-marketplaces\openai-bundledtree is registered as the active source, then gets rewritten incompletely and loses the marketplace/plugin manifests while the official app package still contains the complete bundled plugins.The recovery flow is version-aware. It detects the currently installed official Desktop package, validates/reconstructs the user-side bundled marketplace, reconciles versioned plugin caches and
latestpointers, and checks related runtime/registration state. It also tries to stop the Chrome/Edge native-host lock from interfering with cache reconciliation. Backups, rollback, and post-repair consistency checks are included rather than doing an unconditional destructive cleanup.It does not take ownership of or patch
C:\Program Files\WindowsApps, and it does not redistribute official plugin files. It only reconstructs recovery state from the official package already installed on that machine.This is a user-side recovery/workaround, not a replacement for the upstream fix requested here: the Desktop marketplace writer still needs atomic publication/fallback so a failed refresh cannot make a partial
.tmptree become the active marketplace.