Codex Chrome bridge backend unavailable on macOS despite healthy Chrome extension/native host

Open 💬 5 comments Opened Jun 22, 2026 by bxmlabs
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

Codex Chrome bridge backend unavailable on macOS despite healthy Chrome extension/native host

Summary

Codex Desktop on macOS cannot connect to the Codex Chrome Extension bridge.

Chrome itself is working, and direct Chrome DevTools/CDP access on port 9222 is working, but Codex does not expose the Chrome browser backend to the model-side browser runtime.

Main failure:

agent.browsers.list() => []
agent.browsers.get("extension") => Browser is not available: extension
agent.browsers.get("iab") => Browser is not available: iab

This appears to be a Codex Desktop browser backend registration issue, not a Chrome install/profile issue.

Environment

Platform: macOS
Codex app: 26.616.51431
Codex app build: 4212
Codex CLI: codex-cli 0.142.0-alpha.6
Google Chrome: 149.0.7827.156
Codex Chrome Extension: 1.1.5_0
Extension ID: hehggadaopoacecdllhhajmbjkdcmajg
Bundled Chrome browser client version: 26.616.51431

What works

Chrome is installed and running.

The Codex Chrome Extension is installed and enabled in the selected Chrome profile.

The native messaging host manifest exists and validates correctly.

Direct Chrome DevTools/CDP access works through:

http://127.0.0.1:9222/json/version

That endpoint returns a valid DevTools websocket URL, and direct CDP control can interact with the visible Chrome tab.

This means Chrome itself is healthy and usable. The issue appears specific to Codex's browser bridge/backend registration.

What fails

After initializing the Codex browser runtime, no browser backend is available.

Code run inside the Codex node_repl/browser runtime:

var bridgeBrowserList = await agent.browsers.list();
nodeRepl.write(JSON.stringify({ bridgeBrowserList }, null, 2));

Actual output:

{
  "bridgeBrowserList": []
}

Trying to get the Chrome extension backend fails:

await agent.browsers.get("extension")

Actual result:

Browser is not available: extension

Trying to get the in-app browser backend also fails:

await agent.browsers.get("iab")

Actual result:

Browser is not available: iab

Chrome diagnostics already checked

Chrome running check passes.

Result summary:

{
  "platform": "darwin",
  "running": true,
  "processes": [
    {
      "process_name": "Google Chrome",
      "command": "Google Chrome"
    }
  ]
}

Chrome installed check passes.

Result summary:

{
  "installed_browsers": [
    {
      "name": "Google Chrome",
      "bundle_id": "com.google.Chrome",
      "path": "/Applications/Google Chrome.app",
      "version": "149.0.7827.156"
    }
  ]
}

Codex Chrome Extension diagnostics already checked

The Codex Chrome Extension is installed and enabled in the selected Chrome profile.

Result summary:

{
  "extensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
  "selectedProfileDirectory": "Default",
  "installed": true,
  "enabled": true,
  "profiles": [
    {
      "profileDirectory": "Default",
      "installed": true,
      "registered": true,
      "enabled": true,
      "disabled": false,
      "versions": [
        "1.1.5_0"
      ],
      "selected": true
    }
  ],
  "exitCode": 0
}

Native host diagnostics already checked

The native messaging host manifest exists and validates correctly.

Result summary:

{
  "expectedHostName": "com.openai.codexextension",
  "actualHostName": "com.openai.codexextension",
  "expectedExtensionId": "hehggadaopoacecdllhhajmbjkdcmajg",
  "expectedOrigin": "chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/",
  "allowedOrigins": [
    "chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/"
  ],
  "exists": true,
  "nameMatches": true,
  "hasExpectedOrigin": true,
  "correct": true,
  "problem": null
}

Steps tried

  1. Confirmed Chrome is installed.
  2. Confirmed Chrome is running.
  3. Confirmed the Codex Chrome Extension is installed.
  4. Confirmed the Codex Chrome Extension is enabled in the selected Chrome profile.
  5. Confirmed the native messaging host manifest exists.
  6. Confirmed the native host manifest has the expected extension origin.
  7. Loaded the bundled Codex Chrome browser client.
  8. Called agent.browsers.list().
  9. Retried after waiting.
  10. Called agent.browsers.get("extension").
  11. Called agent.browsers.get("iab").
  12. Verified direct Chrome DevTools/CDP access on port 9222 works as a fallback.

Expected behavior

When Chrome is running, the Codex Chrome Extension is installed/enabled, and the native host manifest is valid:

await agent.browsers.list()

should include the Chrome extension backend.

Then:

await agent.browsers.get("extension")

should succeed.

If the in-app browser backend is available, then:

await agent.browsers.get("iab")

should also succeed or provide a clearer reason why it is unavailable.

Actual behavior

Codex returns an empty browser backend list:

[]

Chrome bridge access fails:

Browser is not available: extension

In-app browser access also fails:

Browser is not available: iab

Why this appears to be a Codex bridge/backend issue

The Chrome side passes all local checks:

  • Chrome is installed.
  • Chrome is running.
  • The selected Chrome profile has the Codex Chrome Extension installed and enabled.
  • The native messaging host manifest exists and validates correctly.
  • Direct Chrome DevTools/CDP control through port 9222 works.

The failure happens specifically at the Codex browser runtime/backend discovery layer:

agent.browsers.list()
agent.browsers.get("extension")
agent.browsers.get("iab")

That suggests browser backend registration/session discovery is failing inside Codex Desktop, the bundled browser runtime, or the model-side node_repl/MCP bridge.

Related issues

This appears related to these existing reports:

  • [https://github.com/openai/codex/issues/26470](<https://github.com/openai/codex/issues/26470>)
  • [https://github.com/openai/codex/issues/25811](<https://github.com/openai/codex/issues/25811>)
  • [https://github.com/openai/codex/issues/29348](<https://github.com/openai/codex/issues/29348>)
  • [https://github.com/openai/codex/issues/29385](<https://github.com/openai/codex/issues/29385>)

The closest match appears to be issue 26470, where agent.browsers.list() returns an empty list even though the local browser setup checks pass.

Issue 25811 also looks related because it reports the Chrome extension appearing connected while Codex still returns:

Browser is not available: extension

Impact

This blocks Codex Chrome/browser workflows even though Chrome and the extension appear healthy.

The only working fallback is direct Chrome DevTools/CDP control through port 9222, but the official Codex Chrome bridge path is unavailable.

This can cause repeated reinstall/restart/retry loops because the extension and native host checks pass, while the actual Codex browser backend list remains empty.

Request

Please investigate why Codex Desktop can have a healthy Chrome extension/native host setup but still return:

await agent.browsers.list()
// []

Useful improvements would be:

  • expose a clear diagnostic when backend registration fails,
  • distinguish extension/native-host health from backend registration/session health,
  • make agent.browsers.list() report why chrome and iab are unavailable instead of returning an empty list,
  • avoid requiring local security-weakening workarounds for normal browser backend registration.

Recurrence: Slack feedback on Nightly 26.708

Slack report: [https://openai.enterprise.slack.com/archives/C09NZ54M4KY/p1783519959320029](<https://openai.enterprise.slack.com/archives/C09NZ54M4KY/p1783519959320029>)

Reporter says they cannot connect Chrome with Codex on Nightly 26.708.10433 (4812) and provided feedback UUID / thread id no-active-thread-019f4211-e226-7173-9c19-db706d8ee73c.

Sentry lookup mapped the UUID to CODEX-2QZF, actual event id / trace id db4c7f4466534de7b39a8a880734a1b6, occurred 2026-07-08T14:11:45.631Z, unresolved/new, no stacktrace. Event metadata: CLI 0.143.0-alpha.39, session_source=vscode, endpoint /responses, ChatGPT auth header attached with no auth errors, doctor warning only mcp.config. Indexed Sentry log/span searches by thread id and event id returned no rows. Raw feedback attachments could not be listed because the Sentry attachment helper returned get_event_attachment not found.

Caveat: the user-facing report does not include the exact visible error text, so this may be the Chrome extension bridge/backend-unavailable family, the Browser/IAB attach path, or stale browser-use vs current browser plugin resolution. Closest Slack context from Jul 7: a Nightly 26.707.11040 IAB attach failure where the runtime invoked obsolete browser-use 0.1.0-alpha1; removing stale plugins/cache/openai-internal-testing config/folder helped IAB in a new thread. That case also had a separate Computer Use service/client protocol skew. This recurrence should preserve the exact error text/screenshot if the reporter follows up.

View original on GitHub ↗

5 Comments

github-actions[bot] contributor · 2 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #27865
  • #27866
  • #27962

Powered by Codex Action

bxmlabs · 2 months ago

Thanks. I reviewed these, but I believe this issue should stay open because my repro is on macOS with Codex app 26.616.51431. Chrome is installed/running, the Codex Chrome Extension is enabled in the selected Default profile, and the native host manifest validates correctly, but agent.browsers.list() still returns [] and both agent.browsers.get("extension") and agent.browsers.get("iab") fail. The suggested duplicates appear to be Windows-focused or different backend exposure cases.

AusafMo · 2 months ago

Same issue here on macOS.

Codex browser runtime initializes, but no browser backend is exposed:

await agent.browsers.list()            -> []
await agent.browsers.get("extension")  -> Browser is not available: extension
await agent.browsers.get("iab")        -> Browser is not available: iab
await agent.browsers.getDefault()      -> No browser is available

Local Chrome setup checks all pass:

  • Chrome running: yes
  • Chrome version: 149.0.7827.197
  • Codex Chrome Extension installed: true
  • Codex Chrome Extension enabled: true
  • Extension version: 1.1.5_0
  • Native host manifest: correct
  • Manifest path: ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.openai.codexextension.json
  • Allowed origin: chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/

Tried:

  • reinstalling the Codex Chrome Extension
  • quitting/reopening Chrome
  • opening a fresh Chrome window on Default
  • resetting the Node/browser runtime
  • using the current plugin cache path 26.623.42026

Still returns []. So Chrome / extension / native-host all look healthy locally, but Codex does not register or expose either extension or iab as browser backends to the session — matching the original report (and it persists on a newer Chrome build than the OP's .156).

kakahu2015 · 1 month ago

Follow-up environment details:

  • Platform: macOS (Apple Silicon)
  • Google Chrome: 150.0.7871.125 (Official Build) (arm64)
  • Codex CLI: upgraded from 0.144.1 to 0.144.5
  • Windows works with the same Chrome/Codex workflow; macOS does not

On macOS, Chrome is running and the native messaging host manifest validates correctly for com.openai.codexextension, but the Codex browser backend still fails with:

Browser is not available: extension

Opening a fresh Chrome window and retrying the bridge did not recover the connection. This looks like a macOS Codex browser backend/session registration problem rather than a Chrome installation or native-host configuration problem.

bakaburg1 · 1 day ago

Additional macOS reproduction (2026-08-27, Europe/Stockholm)

Thread ID: 01a0427d-9b17-71c0-9ca5-fb76a8ffb18c

Chrome and the local extension setup were healthy:

  • Google Chrome: 152.0.7977.64, installed at /Applications/Google Chrome.app
  • Chrome running: yes
  • Codex Chrome extension ID: hehggadaopoacecdllhhajmbjkdcmajg
  • Selected profile: Default
  • Extension version: 1.2.27268.51612_0
  • Extension installed: true; enabled: true; disabled: false
  • Native host manifest: /Users/angelodambrosio/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.openai.codexextension.json
  • Native host checks: exists true, nameMatches true, expected origins present, correct true, problem null

The bridge initially worked briefly: it listed open tabs, claimed an existing tab, and read its visible page. Navigating that same claimed tab to a visible link then timed out with the exact error:

Timed out after 10000ms waiting for CDP command Page.navigate.

A later DOM snapshot attempt also timed out and reset the browser-control JavaScript kernel.

After the reset, repeated official browser-client attempts failed at backend selection with the exact error:

Browser is not available: chrome

The failure persisted after retrying the same selection, waiting two seconds and retrying, creating a fresh browser-client runtime and browser binding, toggling the extension off/on, restarting Chrome completely, updating Codex, and creating a fresh Codex test thread.

The Chrome extension UI is now also unresponsive: launching/opening the extension in Chrome produces no visible action; nothing happens.

No unsupported workaround was used: no AppleScript, shell UI automation, standalone Playwright/CDP control, cookie/local-storage/password/history access, or temporary Chrome profile.

This looks like an intermittent Codex browser bridge/backend registration or session-discovery failure triggered or exposed after the CDP navigation timeout, not a Chrome installation or native-host failure. Please correlate the transition from the successful tab session to Browser is not available: chrome, and also log the extension UI launch failure, active Codex app/build, browser-client/plugin version, and backend discovery result.

Authored by codex