Chrome plugin installde from official source via Codex APP, doesn't work.

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

What version of Codex CLI is running?

codex-cli 0.143.0

What subscription do you have?

pro

Which model were you using?

gpt-5.5 xhigh

What platform is your computer?

Darwin 25.5.0 arm64 arm

What terminal emulator and version are you using (if applicable)?

zsh

Codex doctor report

Codex works fine. Issue with the Chrome plugin.

What issue are you seeing?

Bug: Codex Chrome plugin cannot connect to Chrome even after reinstall

Environment:

  • macOS: 26.5.1, arm64
  • Codex app: com.openai.codex 26.623.141536, build 4753
  • Bundled app Codex CLI: 0.142.5
  • Brew Codex CLI: 0.143.0
  • Chrome plugin: openai-bundled/chrome 26.623.141536
  • Codex Chrome Extension ID: hehggadaopoacecdllhhajmbjkdcmajg
  • Extension version detected: 1.1.5_0

Observed failure:

  • Agent follows Chrome plugin bootstrap:
  • setupBrowserRuntime succeeds
  • agent.browsers.get("extension") fails with:

Browser is not available: extension

  • agent.browsers.list() returns []

Validated locally:

  • Google Chrome is running.
  • Chrome selected profile is Default.
  • Default maps to user profile tarantas1985@gmail.com.
  • Codex Chrome Extension is installed, registered, and enabled in Default.
  • Native messaging host manifest exists and validates:
  • path: ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.openai.codexextension.json
  • host name: com.openai.codexextension
  • allowed origin: chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/
  • correct: true
  • Plugin helper opened Chrome successfully with:

open -n -a "/Applications/Google Chrome.app" --args --profile-directory=Default --new-window about:blank

  • Retrying after the visible Chrome window still failed with:

Browser is not available: extension
agent.browsers.list() = []

User already reinstalled the Chrome plugin from Codex Plugins UI. It did not help.

Expected:
Codex should discover the Chrome extension backend and return a usable extension browser from agent.browsers.get("extension").

Actual:
The extension/native-host checks pass, but the browser runtime exposes no available backend.

Please investigate the Chrome plugin/native-host/browser-runtime handshake. This does not appear fixable through user-side reinstall/profile selection.

What steps can reproduce the bug?

Uploaded thread: 019f467d-283f-7171-9fa6-f29226d6985c

What is the expected behavior?

Chrome plugin works and codex can use my browser.

Additional information

_No response_

View original on GitHub ↗

4 Comments

github-actions[bot] contributor · 1 month ago

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

  • #31238
  • #30688

Powered by Codex Action

cowboycodr · 1 month ago

Having the same issue!

fabianmarian8 · 1 month ago

Confirming this is still reproducible on the current alpha, and adding deeper diagnostics in case they help narrow it down.

Environment

  • codex-cli 0.144.0-alpha.4 (bundled), app / native-host build 26.707.51957
  • Chrome 150.0.7871.115, extension 1.2.27203.26575 (id hehggadaopoacecdllhhajmbjkdcmajg), channel prod
  • macOS (arm64)

Symptom
agent.browsers.get("extension") → Browser is not available: extension; agent.browsers.list() returns []. Extension check, native-messaging host manifest, and Chrome process check all pass. Reproduces identically from the real CLI and from a manual node_repl MCP session.

What actually fails (discovery internals)
setupBrowserRuntime succeeds and nativePipe connects to the live sockets in /tmp/codex-browser-use/, but the backend handshake dies. For the two live sockets (one owned by the ChatGPT.app process, one by the Chrome-spawned extension-host), the discovery failures array shows:

backend-info-request/native pipe closed before response

i.e. the native host accepts the node_repl connection, the OS-level peer code-signature check passes (confirmed via os_log: SecKeyVerifySignature / SecTrustEvaluateIfNecessary run over the node_repl binary), and then the host closes the socket without answering getInfo. All other candidate pipes are stale (Connection refused). So backendCounts ends up {cdp:0, extension:0, iab:0}.

Two local-state anomalies I found and fixed — neither resolved it

  1. $CODEX_HOME/chrome-native-hosts-v2.json held a stale presence (dead pid, lastSeenAt frozen at the app's previous launch). Restarting ChatGPT.app did not rewrite it. Deleting the file and relaunching regenerated it with a live presence.pid matching the running app — discovery still failed.
  2. extension-host-config.json (the per-install config the native host reads, next to the extension-host binary) was missing entirely. Regenerated it via the plugin's installManifest.mjs install(). Still failed.

Verified healthy

  • Code signatures valid on node_repl, extension-host, and the app-server codex (all Team ID 2DC432GLL2).
  • App-server binary works standalone (codex app-server --listen stdio:// answers initialize).
  • Every path in the v2 manifest exists on disk.

Tried, no effect: full Chrome restart; v2-manifest regeneration; clean restart of the whole chain (ChatGPT.app + app-server + Chrome/native-host in order); recreating extension-host-config.json.

The break is specifically on the native-host → app-server side of getInfo, not in extension install / manifest / signatures — which lines up with #26820. Happy to pull more logs (the native host itself is silent on stderr even with RUST_LOG=trace; it only emits via os_log).

mbfy0206 · 1 day ago

I fixed this problem by upgrade chrome plugin and codex