macOS: Puppeteer/Chrome fails to launch in Codex CLI sandbox (Crashpad Operation not permitted)

Open 💬 2 comments Opened Dec 14, 2025 by YusukeIwaki

What version of Codex is running?

codex-cli 0.72.0

Which model were you using?

N/A (repro is running a local shell command inside Codex CLI)

What platform is your computer?

macOS 15.7.1 (24G309)

What steps can reproduce the bug?

  1. Create a Node project and install puppeteer-core:
  • npm init -y
  • npm i puppeteer-core@24.33.0
  1. Create test1.mjs:
import puppeteer from 'puppeteer-core';

(async () => {
  const browser = await puppeteer.launch({ channel: 'chrome', headless: true });
  const page = await browser.newPage();
  await page.setContent('<title>test</title>');
  console.log(`Title: ${await page.title()}`);
  await browser.close();
})();
  1. Start a Codex CLI session in that directory with the default sandbox (sandbox_mode=workspace-write).
  2. Run: node test1.mjs

What is the expected behavior?

Chrome launches and the script prints Title: test.

What do you see instead?

Puppeteer fails to launch the browser process. The stderr strongly suggests the Codex sandbox blocks Crashpad / macOS bootstrap + file access under $HOME/Library:

Error: Failed to launch the browser process:  Code: null

stderr:
[...:ERROR:third_party/crashpad/crashpad/util/mach/bootstrap.cc:65] bootstrap_check_in ...: Permission denied (1100)
[...:ERROR:third_party/crashpad/crashpad/util/file/file_io_posix.cc:208] open $HOME/Library/Application Support/Google/Chrome/Crashpad/settings.dat: Operation not permitted (1)

Additional information

  • Node.js: v23.7.0
  • puppeteer-core: 24.33.0
  • Control: running the same script outside the Codex CLI sandbox (full filesystem access) works and prints Title: test.

View original on GitHub ↗

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