Codex CLI supports Chrome plugin

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

What variant of Codex are you using?

CLI

What feature would you like to see?

Is there any plan to support Codex Chrome in CLI? I notice that there is skill.md, but when I use it in CLI, it reports "privileged native pipe bridge is not available; browser-client is not trusted".

Additional information

_No response_

View original on GitHub ↗

3 Comments

github-actions[bot] contributor · 3 months ago

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

  • #21971

Powered by Codex Action

Co5mos · 3 months ago

I can reproduce the same limitation via @openai/codex-sdk, so this is not only an interactive CLI request.

Environment:

  • macOS arm64
  • Codex CLI: 0.134.0
  • @openai/codex-sdk: 0.135.0
  • Codex Desktop Chrome plugin works in a normal Desktop thread on the same host

Control check from a normal Codex Desktop thread:

const { setupBrowserRuntime } = await import('/Users/.../.codex/plugins/cache/openai-bundled/chrome/26.519.81530/scripts/browser-client.mjs');
await setupBrowserRuntime({ globals: globalThis });
console.log(await agent.browsers.list());

That returns browser backends including:

  • Chrome, type: "extension"
  • Codex In-app Browser, type: "iab"

SDK repro:

import { Codex } from "@openai/codex-sdk";

const codex = new Codex();
const thread = codex.startThread({
  workingDirectory: "/path/to/trusted/repo",
});

const result = await thread.run(
  "Use @Chrome to open https://example.com and read the page title."
);

console.log(result.finalResponse);
console.log(result.items);

Observed in the SDK-created turn:

  • The turn loads/attempts the Chrome skill.
  • agent.browsers.get("extension") fails with Browser is not available: extension.
  • Retrying after 2 seconds fails the same way.
  • Chrome running check passes.
  • Codex Chrome Extension installed/enabled check passes.
  • Native messaging host manifest check passes.
  • agent.browsers.list() inside the SDK-created turn returns [].

The final SDK result was:

CHROME_RESULT: unable to read; Chrome extension communication unavailable (Browser is not available: extension).

Additional check from a plain external Node process:

const { setupBrowserRuntime } = await import('/Users/.../.codex/plugins/cache/openai-bundled/chrome/26.519.81530/scripts/browser-client.mjs');
await setupBrowserRuntime({ globals: globalThis });

fails with:

privileged native pipe bridge is not available; browser-client is not trusted

Looking at the SDK implementation also explains the boundary: @openai/codex-sdk@0.135.0 shells out to codex exec --experimental-json, so the SDK-created runtime does not appear to receive the same trusted native pipe / browser backend context that a normal Codex Desktop thread receives.

Expected behavior, depending on product intent:

  1. @openai/codex-sdk / codex exec can use the Chrome plugin when running on the same host where Codex Desktop has a healthy Chrome backend; or
  2. the CLI/SDK docs explicitly state that Codex Desktop Chrome Use is unavailable from SDK/codex exec runtimes.

This appears closely related to this issue, with the additional SDK angle.

Jorjon · 2 months ago

I can reproduce this on macOS with Codex CLI 0.135.0, even after installing and enabling the bundled Chrome plugin and verifying the local Chrome extension/native-host setup.

Environment:

  • macOS arm64
  • Codex CLI: 0.135.0
  • chrome@openai-bundled: installed/enabled, version 26.527.31326
  • Google Chrome: 148.0.7778.179
  • Codex Chrome Extension: installed/enabled in the selected Chrome profile, version 1.1.5_0

Local setup checks all pass. These setup checks are the diagnostic scripts shipped with the bundled Codex Chrome plugin itself, from ~/.codex/plugins/cache/openai-bundled/chrome/26.527.31326/scripts/, not custom scripts.

  • scripts/check-extension-installed.js --json reports installed: true, enabled: true for selected profile Profile 1.
  • scripts/check-native-host-manifest.js --json reports correct: true.
  • scripts/chrome-is-running.js --json reports Chrome is running.
  • The native host process is actually running:
  • extension-host chrome-extension://hehggadaopoacecdllhhajmbjkdcmajg/
  • lsof -U shows the extension host owns a browser-use socket:
  • /tmp/codex-browser-use/<uuid>.sock

But from the CLI node_repl runtime:

const { setupBrowserRuntime } = await import("/Users/<redacted>/.codex/plugins/cache/openai-bundled/chrome/26.527.31326/scripts/browser-client.mjs");
await setupBrowserRuntime({ globals: globalThis });

console.log(await agent.browsers.list());

try {
  console.log(await agent.browsers.get("extension"));
} catch (e) {
  console.log(e.message);
}

Observed result:

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

During setup, discovery also logs:

IAB_DISCOVERY no session-owned iab browser
failures:
- pipe-connect/Error: failed to connect native pipe: Connection refused (os error 61)
- backend-info-request/native pipe closed before response

So this does not appear to be just a missing extension, missing native host manifest, or disabled Chrome plugin. The Chrome extension/native host is present and running, but the CLI runtime still does not discover an extension backend.