Codex IAB browser-client trust/nativePipe failure; Chromium launch fallback fails on macOS 26

Open 💬 1 comment Opened Jun 17, 2026 by dongq299

What version of Codex CLI is running?

140.

What subscription do you have?

Google Chrome, Google Chrome for Testing

Which model were you using?

5.5

What platform is your computer?

_No response_

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

_No response_

Codex doctor report

What issue are you seeing?

# Codex IAB browser-client trust/nativePipe failure; Chromium launch fallback fails on macOS 26

## Summary

I am unable to use Codex browser:control-in-app-browser for visual/browser verification. The in-app browser bootstrap consistently fails with:

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

This happens even after installing the Codex standalone package, starting the app-server daemon, and opening fresh Codex CLI / remote CLI sessions.

Separately, when trying to work around IAB by launching Chromium/Chrome/Chrome for Testing through Playwright or direct headless CLI, Chromium-family browsers fail under the Codex/iTerm process tree on
macOS 26 with HIServices / AppKit / _RegisterApplication / SIGABRT or Mach bootstrap permission errors.

Firefox via Playwright from an external Terminal does work, so the target web app itself is not the root cause.

## Environment

  • macOS: 26.5.1 (25F80)
  • Hardware: Apple M1 MacBookAir10,1
  • SIP: enabled
  • Codex CLI: codex-cli 0.140.0
  • Codex path: /Users/idong-gyu/.local/bin/codex
  • Codex app: /Applications/Codex 2.app
  • Browser plugin path: /Users/idong-gyu/.codex/plugins/cache/openai-bundled/browser/26.611.61753
  • Browser client: /Users/idong-gyu/.codex/plugins/cache/openai-bundled/browser/26.611.61753/scripts/browser-client.mjs
  • Codex bundled Playwright: 1.57.0
  • Homebrew Playwright: 1.59.1
  • Node: v22.22.1

## Problem A: IAB nativePipe / trust injection failure

Fresh session check result:

```json
{
"env_type": "object",
"NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S": false,
"BROWSER_USE_AVAILABLE_BACKENDS": false,
"nativePipe_type": "undefined",
"nativePipe_createConnection_type": "undefined"
}

codex mcp list shows the node_repl MCP has env configured, including:

  • NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS
  • NODE_REPL_NODE_MODULE_DIRS
  • NODE_REPL_NODE_PATH
  • NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S
  • NODE_REPL_TRUSTED_CODE_PATHS

But inside the live Node REPL runtime:

  • nodeRepl.env is empty / missing expected values
  • nodeRepl.nativePipe is undefined
  • nodeRepl.nativePipe.createConnection is unavailable

Bootstrap failure:

Error: privileged native pipe bridge is not available; browser-client is not trusted
at mwe (/Users/idong-gyu/.codex/plugins/cache/openai-bundled/browser/26.611.61753/scripts/browser-client.mjs:3214:18541)

This reproduces in:

  • normal fresh codex CLI session
  • codex --remote unix://
  • after standalone install
  • after app-server daemon start
  • after browser plugin reinstall attempts

App-server daemon was confirmed running at one point:

socket: ~/.codex/app-server-control/app-server-control.sock

Expected behavior:

nodeRepl.nativePipe.createConnection should be available, or Codex should document that browser:control-in-app-browser is not supported in this CLI/runtime mode.

## Problem B: Chromium-family browser launch failures under Codex/iTerm

Fallback attempts were made because IAB failed.

### Chrome bundle corruption was found and fixed

Before reinstall, Chrome codesign failed:

resource fork, Finder information, or similar detritus not allowed
file with invalid attached data: Disallowed xattr com.apple.FinderInfo

Chrome was removed and reinstalled. After reinstall:

/Applications/Google Chrome.app: valid on disk
/Applications/Google Chrome.app: satisfies its Designated Requirement
kMDItemCFBundleIdentifier = "com.google.Chrome"

So the Chrome bundle/signing issue appears fixed.

### Playwright revision mismatch was also fixed

Codex bundled Playwright 1.57.0 required:

chromium_headless_shell-1200

Cache previously had a mismatched revision. After install, these exist:

~/Library/Caches/ms-playwright/chromium-1200
~/Library/Caches/ms-playwright/chromium_headless_shell-1200
~/Library/Caches/ms-playwright/firefox-1497
~/Library/Caches/ms-playwright/webkit-2227

### Chromium still fails under Codex/iTerm

Even after fixing the revision mismatch, Chromium-family launch still fails.

Observed failures include:

FATAL:base/apple/mach_port_rendezvous_mac.cc:156
bootstrap_check_in ... Permission denied (1100)

And macOS crash reports for Google Chrome / Google Chrome for Testing show:

Exception Type: EXC_CRASH (SIGABRT)
Thread 0:
HIServices ___RegisterApplication_block_invoke
HIServices _RegisterApplication
AppKit +[NSApplication sharedApplication]
ChromeMain

Chrome for Testing example:

Process: Google Chrome for Testing
Version: 143.0.7499.4
Parent Process: codex
Responsible Process: iTerm2
macOS: 26.5.1 (25F80)

Direct system Chrome headless after reinstall still does not reliably complete. It logs GoogleUpdater / Crashpad messages and appears to hang instead of printing the expected DOM.

## Working workaround

Firefox via Playwright from a normal external Terminal works.

Simple canvas probe:

{
"ok": true,
"result": {
"title": "firefox-ok",
"bodyText": "Firefox OK",
"canvas": {
"width": 64,
"height": 32,
"sampledNonBlankPixels": 2048
}
},
"consoleMessages": [],
"pageErrors": []
}

Actual target app verification also works externally:

{
"ok": true,
"result": {
"title": "Claw Physics Lab Replay",
"meta": "complete=true success=134 runs=360",
"frame": "32 / 647",
"canvas": {
"id": "stage",
"width": 900,
"height": 1120,
"sampledNonBlankPixels": 1008000
}
},
"consoleMessages": [],
"pageErrors": [],
"screenshotPath": "/private/tmp/claw-firefox-replay.png"
}

This suggests the web app and canvas rendering are valid; the remaining blockers are Codex IAB/nativePipe and Chromium launch behavior under this runtime.

## Questions for maintainers

  1. Is browser:control-in-app-browser expected to work in Codex CLI / codex --remote unix:// sessions?
  2. Which component is responsible for injecting nodeRepl.nativePipe and NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S into the live Node REPL runtime?
  3. Is it expected that codex mcp list shows the env configured, but nodeRepl.env is empty and nodeRepl.nativePipe is undefined?
  4. Is the Chromium Mach bootstrap / HIServices crash on macOS 26 a known Codex sandbox/process-launch issue?
  5. What is the officially supported browser verification path for local canvas/web testing when IAB is unavailable?

## Attachments I can provide

  • /feedback session ID
  • codex doctor --json
  • codex mcp list
  • Codex app logs from ~/Library/Logs/com.openai.codex/...
  • Relevant session transcript from ~/.codex/sessions
  • macOS crash reports for Google Chrome and Google Chrome for Testing

What steps can reproduce the bug?

# Codex IAB browser-client trust/nativePipe failure; Chromium launch fallback fails on macOS 26

## Summary

I am unable to use Codex browser:control-in-app-browser for visual/browser verification. The in-app browser bootstrap consistently fails with:

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

This happens even after installing the Codex standalone package, starting the app-server daemon, and opening fresh Codex CLI / remote CLI sessions.

Separately, when trying to work around IAB by launching Chromium/Chrome/Chrome for Testing through Playwright or direct headless CLI, Chromium-family browsers fail under the Codex/iTerm process tree on
macOS 26 with HIServices / AppKit / _RegisterApplication / SIGABRT or Mach bootstrap permission errors.

Firefox via Playwright from an external Terminal does work, so the target web app itself is not the root cause.

## Environment

  • macOS: 26.5.1 (25F80)
  • Hardware: Apple M1 MacBookAir10,1
  • SIP: enabled
  • Codex CLI: codex-cli 0.140.0
  • Codex path: /Users/idong-gyu/.local/bin/codex
  • Codex app: /Applications/Codex 2.app
  • Browser plugin path: /Users/idong-gyu/.codex/plugins/cache/openai-bundled/browser/26.611.61753
  • Browser client: /Users/idong-gyu/.codex/plugins/cache/openai-bundled/browser/26.611.61753/scripts/browser-client.mjs
  • Codex bundled Playwright: 1.57.0
  • Homebrew Playwright: 1.59.1
  • Node: v22.22.1

## Problem A: IAB nativePipe / trust injection failure

Fresh session check result:

```json
{
"env_type": "object",
"NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S": false,
"BROWSER_USE_AVAILABLE_BACKENDS": false,
"nativePipe_type": "undefined",
"nativePipe_createConnection_type": "undefined"
}

codex mcp list shows the node_repl MCP has env configured, including:

  • NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS
  • NODE_REPL_NODE_MODULE_DIRS
  • NODE_REPL_NODE_PATH
  • NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S
  • NODE_REPL_TRUSTED_CODE_PATHS

But inside the live Node REPL runtime:

  • nodeRepl.env is empty / missing expected values
  • nodeRepl.nativePipe is undefined
  • nodeRepl.nativePipe.createConnection is unavailable

Bootstrap failure:

Error: privileged native pipe bridge is not available; browser-client is not trusted
at mwe (/Users/idong-gyu/.codex/plugins/cache/openai-bundled/browser/26.611.61753/scripts/browser-client.mjs:3214:18541)

This reproduces in:

  • normal fresh codex CLI session
  • codex --remote unix://
  • after standalone install
  • after app-server daemon start
  • after browser plugin reinstall attempts

App-server daemon was confirmed running at one point:

socket: ~/.codex/app-server-control/app-server-control.sock

Expected behavior:

nodeRepl.nativePipe.createConnection should be available, or Codex should document that browser:control-in-app-browser is not supported in this CLI/runtime mode.

## Problem B: Chromium-family browser launch failures under Codex/iTerm

Fallback attempts were made because IAB failed.

### Chrome bundle corruption was found and fixed

Before reinstall, Chrome codesign failed:

resource fork, Finder information, or similar detritus not allowed
file with invalid attached data: Disallowed xattr com.apple.FinderInfo

Chrome was removed and reinstalled. After reinstall:

/Applications/Google Chrome.app: valid on disk
/Applications/Google Chrome.app: satisfies its Designated Requirement
kMDItemCFBundleIdentifier = "com.google.Chrome"

So the Chrome bundle/signing issue appears fixed.

### Playwright revision mismatch was also fixed

Codex bundled Playwright 1.57.0 required:

chromium_headless_shell-1200

Cache previously had a mismatched revision. After install, these exist:

~/Library/Caches/ms-playwright/chromium-1200
~/Library/Caches/ms-playwright/chromium_headless_shell-1200
~/Library/Caches/ms-playwright/firefox-1497
~/Library/Caches/ms-playwright/webkit-2227

### Chromium still fails under Codex/iTerm

Even after fixing the revision mismatch, Chromium-family launch still fails.

Observed failures include:

FATAL:base/apple/mach_port_rendezvous_mac.cc:156
bootstrap_check_in ... Permission denied (1100)

And macOS crash reports for Google Chrome / Google Chrome for Testing show:

Exception Type: EXC_CRASH (SIGABRT)
Thread 0:
HIServices ___RegisterApplication_block_invoke
HIServices _RegisterApplication
AppKit +[NSApplication sharedApplication]
ChromeMain

Chrome for Testing example:

Process: Google Chrome for Testing
Version: 143.0.7499.4
Parent Process: codex
Responsible Process: iTerm2
macOS: 26.5.1 (25F80)

Direct system Chrome headless after reinstall still does not reliably complete. It logs GoogleUpdater / Crashpad messages and appears to hang instead of printing the expected DOM.

## Working workaround

Firefox via Playwright from a normal external Terminal works.

Simple canvas probe:

{
"ok": true,
"result": {
"title": "firefox-ok",
"bodyText": "Firefox OK",
"canvas": {
"width": 64,
"height": 32,
"sampledNonBlankPixels": 2048
}
},
"consoleMessages": [],
"pageErrors": []
}

Actual target app verification also works externally:

{
"ok": true,
"result": {
"title": "Claw Physics Lab Replay",
"meta": "complete=true success=134 runs=360",
"frame": "32 / 647",
"canvas": {
"id": "stage",
"width": 900,
"height": 1120,
"sampledNonBlankPixels": 1008000
}
},
"consoleMessages": [],
"pageErrors": [],
"screenshotPath": "/private/tmp/claw-firefox-replay.png"
}

This suggests the web app and canvas rendering are valid; the remaining blockers are Codex IAB/nativePipe and Chromium launch behavior under this runtime.

## Questions for maintainers

  1. Is browser:control-in-app-browser expected to work in Codex CLI / codex --remote unix:// sessions?
  2. Which component is responsible for injecting nodeRepl.nativePipe and NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S into the live Node REPL runtime?
  3. Is it expected that codex mcp list shows the env configured, but nodeRepl.env is empty and nodeRepl.nativePipe is undefined?
  4. Is the Chromium Mach bootstrap / HIServices crash on macOS 26 a known Codex sandbox/process-launch issue?
  5. What is the officially supported browser verification path for local canvas/web testing when IAB is unavailable?

## Attachments I can provide

  • /feedback session ID
  • codex doctor --json
  • codex mcp list
  • Codex app logs from ~/Library/Logs/com.openai.codex/...
  • Relevant session transcript from ~/.codex/sessions
  • macOS crash reports for Google Chrome and Google Chrome for Testing

What is the expected behavior?

_No response_

Additional information

_No response_

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗