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?
- Create a Node project and install puppeteer-core:
npm init -ynpm i puppeteer-core@24.33.0
- 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();
})();
- Start a Codex CLI session in that directory with the default sandbox (
sandbox_mode=workspace-write). - 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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗