Chrome Skill cache and marketplace instructions disagree on browser-client entrypoint
What version of the Codex App are you using?
I could not reliably copy the desktop app build from the session. The local CLI reports:
codex-cli 0.128.0
Chrome plugin metadata found locally:
chrome@openai-bundled 0.1.7
What subscription do you have?
Unknown / not relevant to the local reproduction.
What platform is your computer?
Microsoft Windows NT 10.0.26200.0
What issue are you seeing?
The Chrome Skill is visible in the Codex UI, but the local Chrome plugin/skill files appear to be inconsistent between the cached plugin copy and the bundled marketplace copy. This made the agent initially fail to use Chrome even though the Chrome extension itself could be reached once the trusted marketplace path and the correct setup function were used.
Two local Chrome plugin copies were present:
%USERPROFILE%\.codex\plugins\cache\openai-bundled\chrome\0.1.7\...
%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled\plugins\chrome\...
The cached SKILL.md instructs the agent to use setupAtlasRuntime:
const { setupAtlasRuntime } = await import("<plugin root>/scripts/browser-client.mjs");
await setupAtlasRuntime({ globals: globalThis });
globalThis.browser = await agent.browsers.get("extension");
However, loading the cached browser-client.mjs fails with:
privileged native pipe bridge is not available; browser-client is not trusted. Load browser-client from the openai-bundled marketplace directory.
After switching to the trusted bundled-marketplace path, following the cached skill instructions still fails because the marketplace browser-client.mjs does not export setupAtlasRuntime:
setupAtlasRuntime is not a function
The bundled-marketplace SKILL.md and browser-client.mjs use/export setupBrowserRuntime instead:
const { setupBrowserRuntime } = await import("<plugin root>/scripts/browser-client.mjs");
await setupBrowserRuntime({ globals: globalThis });
globalThis.browser = await agent.browsers.get("extension");
Using setupBrowserRuntime from the bundled-marketplace path succeeded and returned a Chrome backend with metadata including the Codex Chrome extension id and profile metadata. At that point browser.user.openTabs() worked.
A related observation: the Chrome Skill was visible in the UI skill modal, but it was not surfaced to the active model context/tool discovery in the same way as the other listed skills. The agent had to find the Chrome skill files by searching the local .codex directories manually.
What steps can reproduce the bug?
- On Windows, install/enable the Codex Chrome plugin and Codex Chrome Extension.
- Open a Codex session where Chrome Skill is visible in the UI.
- Attempt to use the Chrome Skill from the active session.
- Observe that the cached Chrome Skill instructions point to
setupAtlasRuntimeunder%USERPROFILE%\.codex\plugins\cache\openai-bundled\chrome\0.1.7\skills\chrome\SKILL.md. - Try importing
browser-client.mjsfrom the cached plugin path. - Observe the trust error telling the agent to use the
openai-bundledmarketplace directory. - Switch to
%USERPROFILE%\.codex\.tmp\bundled-marketplaces\openai-bundled\plugins\chrome\scripts\browser-client.mjs. - Follow the cached instructions and call
setupAtlasRuntime. - Observe
setupAtlasRuntime is not a function. - Call
setupBrowserRuntimefrom the bundled-marketplace path instead. - Observe that Chrome connection succeeds and
browser.user.openTabs()works.
What is the expected behavior?
The Chrome Skill instructions visible/available to the agent should match the trusted browser-client.mjs entrypoint that the runtime expects.
Specifically:
- The skill/docs used by the agent should point to the trusted bundled-marketplace browser-client path when that is required.
- The setup function name in the active skill docs should match the exported function (
setupBrowserRuntimein this environment). - If the cache copy is stale or untrusted, it should not be the copy that instructs the agent.
- If Chrome Skill is visible in the UI, it should be discoverable/available to the model consistently enough that the agent does not have to search
.codexinternals manually.
Additional information
Existing related issues found before filing:
- #21781 reports
browser-client is not trustedon Windows. - #21852 mentions the older cached browser-client path reporting the trust error and the bundled-marketplace path working.
- #23302 reports a similar trust bridge error in a remote/mobile-started thread.
This issue is narrower: even after switching to the trusted bundled-marketplace path, the cached Chrome Skill instructions and the trusted marketplace runtime disagree on the setup function name (setupAtlasRuntime vs setupBrowserRuntime), which leads the agent down a failing path before discovering the workaround.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I maintain WinBridge Recovery for Windows Codex Desktop bundled-plugin state recovery: https://github.com/zemeng5208/winbridge-recovery
This cache-vs-trusted-marketplace mismatch is directly relevant to the consistency checks in the project. The important failure here is not simply that Chrome is missing: two local copies of the official plugin disagree about the skill/runtime entrypoint, and the cached copy is rejected as untrusted while the generated bundled-marketplace copy is the one the trusted bridge accepts.
WinBridge v3.1.1 compares the current AppX bundled plugin source, generated
openai-bundledmarketplace, versioned cache/latest, and relevant runtime hashes/paths before repair. If an old cache or managed marketplace snapshot no longer matches the current official package, it can stage a fresh user-owned copy from the installed package, validate manifests/hashes, and switch only after the state is complete, with rollback data retained.One boundary: if the current official package itself ships inconsistent skill instructions/API names, WinBridge should not rewrite OpenAI's plugin code to invent compatibility. Its role is to remove stale cross-version copies and make the local layers agree with the current installed package, then report any remaining upstream plugin-interface bug.
It does not patch WindowsApps or bypass the trusted native bridge.
I’m encountering what appears to be a newer variant of this trusted-path problem in Codex Desktop on Windows.
Environment:
26.814.5167.026.814.41407Any attempt to use Chrome fails before Chrome itself is reached, with the Windows username redacted:
Restarting Codex and Chrome, reconnecting the extension, and retrying from a fresh task did not resolve it. The failure occurs during the browser plugin bootstrap, before tabs can be inspected or controlled.
This looks related to the cache versus trusted bundled-marketplace path mismatch described here, but the rejected dependency is now
browser-service.mjsrather than onlybrowser-client.mjs.Please let me know if this should be tracked as a separate issue. I can provide the Codex task/thread identifier and submitted logs privately if needed.