Skip to content

[Bug]: MCP config enables the chromium sandbox for the bundled browser on linux #42452

Description

validateBrowserConfig decides the sandbox default like this:

if (browserName === 'chromium' && browser.launchOptions.chromiumSandbox === undefined) {
  if (process.platform === 'linux')
    browser.launchOptions.chromiumSandbox = browser.launchOptions.channel !== 'chromium' && browser.launchOptions.channel !== 'chrome-for-testing';
  else
    browser.launchOptions.chromiumSandbox = true;
}

The two named channels that resolve to a downloaded build get the sandbox disabled on linux, but an undefined channel does not, and that is the same downloaded build. So this launches on linux:

const connection = await createConnection({ browser: { browserName: 'chromium', launchOptions: { channel: 'chrome-for-testing' } } });

and this does not:

const connection = await createConnection({ browser: { browserName: 'chromium' } });

The second fails at launch with Chromium sandboxing failed! and No usable sandbox! from the zygote host, because the bundled build has no setuid helper. BrowserType.launch defaults chromiumSandbox to false, so the same browser started through the library works, and only the config path turns it on.

I hit this from a test in #42365 and worked around it there by passing chromiumSandbox: false. Treating an undefined channel the same as chromium and chrome-for-testing looks like the fix, since all three mean the downloaded browser, but I did not want to change the default in that PR.

Version: 32095ea (main, 2026-08-26)

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions