Codex Browser/Chrome plugins installed, but no browser backend registers; `agent.browsers.list()` stays empty
What version of the Codex App are you using (From “About Codex” dialog)?
26.602.30954
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.5.0 arm64 arm
What issue are you seeing?
Title: Codex Browser/Chrome plugins installed, but no browser backend registers; agent.browsers.list() stays empty
Product: Codex desktop app
Severity: High
User impact: Blocks browser-assisted workflows and burns paid tokens during repeated recovery attempts
Token spend: [Could not load usage settings. (gpt-5.4 xhigh, approx. 41 minutes)]
Environment:
- macOS
- Codex Browser plugin installed
- Codex Chrome plugin/extension installed and enabled
- Local networking enabled
- Browser pane opened to a real URL
- Browser bundle version: 26.602.30954
- Chrome bundle version: 26.602.30954
Summary:
The Codex Browser and Chrome integrations appeared installed correctly, but no browser backend ever registered with the runtime. Repeated retries, reinstalls, Chrome relaunches, Codex relaunches, and opening the Browser pane to a real URL did not change the result. agent.browsers.list() always returned []. The local app itself was healthy and could be verified through a Playwright fallback, so the failure appears to be inside Codex/plugin registration rather than the user app.
Steps to reproduce:
- Install/reinstall the Codex Browser plugin.
- Install/enable the Codex Chrome extension/plugin.
- Restart Codex.
- Restart Chrome.
- Open the Codex Browser pane to a real URL such as
http://127.0.0.1:5173. - Run browser setup and list available browsers.
- Observe that no backend is registered.
Expected result:
- The in-app browser should register and be discoverable.
agent.browsers.list()should return at least one backend.agent.browsers.get("iab")and/oragent.browsers.get("extension")should succeed when the corresponding surface is active.
Actual result:
agent.browsers.list()returned[]consistently.agent.browsers.get("iab")failed withBrowser is not available: iab.agent.browsers.get("extension")failed withBrowser is not available: extension.- Significant paid usage was consumed before a non-Codex fallback was used.
Diagnostics that passed:
- Chrome was running.
- Chrome extension was installed and enabled in the selected
Defaultprofile. - Native host manifest existed and matched the expected extension origin.
- Browser pane was opened to a real URL and left open.
- Local app itself was healthy:
- control-plane web responded on
http://127.0.0.1:5173 - control-plane API responded on
http://127.0.0.1:3001 - Playwright fallback successfully opened the app and verified Job Studio UI behavior
Notable evidence:
- Browser runtime bundle:
/Users/timfarmer/.codex/plugins/cache/openai-bundled/browser/26.602.30954/scripts/browser-client.mjs
- Chrome runtime bundle:
/Users/timfarmer/.codex/plugins/cache/openai-bundled/chrome/26.602.30954/scripts/browser-client.mjs
- Both runtimes reported zero backends.
Impact:
- Browser-dependent Codex workflows are blocked even when installation checks pass.
- Recovery guidance can lead to repeated reinstall/restart loops with no progress.
- Users can burn substantial tokens before discovering they need an external fallback.
Suggested investigation:
- Why plugin install state can be healthy while backend registration remains empty
- Whether Browser pane creation is failing to advertise session metadata
- Whether Codex is filtering out valid backends by session/build unexpectedly
- Whether the app should fail fast with a clear registration error instead of repeatedly returning an empty backend list
What steps can reproduce the bug?
Steps to reproduce:
- Install/reinstall the Codex Browser plugin.
- Install/enable the Codex Chrome extension/plugin.
- Restart Codex.
- Restart Chrome.
- Open the Codex Browser pane to a real URL such as
http://127.0.0.1:5173. - Run browser setup and list available browsers.
- Observe that no backend is registered.
What is the expected behavior?
Expected result:
- The in-app browser should register and be discoverable.
agent.browsers.list()should return at least one backend.agent.browsers.get("iab")and/oragent.browsers.get("extension")should succeed when the corresponding surface is active.
Additional information
I hope this helps.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗