Codex Browser/Chrome plugins installed, but no browser backend registers; `agent.browsers.list()` stays empty

Open 💬 4 comments Opened Jun 4, 2026 by noirtim

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:

  1. Install/reinstall the Codex Browser plugin.
  2. Install/enable the Codex Chrome extension/plugin.
  3. Restart Codex.
  4. Restart Chrome.
  5. Open the Codex Browser pane to a real URL such as http://127.0.0.1:5173.
  6. Run browser setup and list available browsers.
  7. 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/or agent.browsers.get("extension") should succeed when the corresponding surface is active.

Actual result:

  • agent.browsers.list() returned [] consistently.
  • agent.browsers.get("iab") failed with Browser is not available: iab.
  • agent.browsers.get("extension") failed with Browser 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 Default profile.
  • 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:

  1. Install/reinstall the Codex Browser plugin.
  2. Install/enable the Codex Chrome extension/plugin.
  3. Restart Codex.
  4. Restart Chrome.
  5. Open the Codex Browser pane to a real URL such as http://127.0.0.1:5173.
  6. Run browser setup and list available browsers.
  7. 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/or agent.browsers.get("extension") should succeed when the corresponding surface is active.

Additional information

I hope this helps.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗