diegosouzapw/OmniRoute · error · Error

No supported Chrome or Chromium executable was found

Error message

No supported Chrome or Chromium executable was found

What it means

Configuration guard in buildProviderConfig: neither a Chrome/Chromium executable nor a CDP endpoint is available. The executor drives a real browser via Playwright/CDP for ChatGPT Web; it probes chromeExecutablePath settings, CHATGPT_WEB_CODEX_CHROME_PATH/CHROME_PATH env vars, and common install paths, and also honors CHATGPT_WEB_CODEX_CDP_URL — all came up empty.

Solutions

  1. Install Google Chrome or Chromium on the host machine
  2. Set CHATGPT_WEB_CODEX_CHROME_PATH (or CHROME_PATH) to the browser executable path
  3. Point CHATGPT_WEB_CODEX_CDP_URL or the connection's browserCdpEndpoint at an already-running Chrome with remote debugging
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at open-sse/executors/chatgpt-web-codex.ts:156 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25). Data as JSON: /api/errors/ee9674550adbf0fe. Report an issue: GitHub.

Appendix: source

Thrown at open-sse/executors/chatgpt-web-codex.ts:156

  return (parsed.context.tools?.length ?? 0) > 0;
}

function buildProviderConfig(
  input: ExecuteInput,
  parsed: CodexParsedRequest,
  storageStatePath: string,
  connectionId: string
): CodexProviderConfig {
  const data = record(input.credentials.providerSpecificData);
  const route = requireChatGptWebCodexRoute(input.model);
  const paths = connectionRuntimePaths(connectionId);
  const cdpEndpoint =
    configuredString(data, "browserCdpEndpoint") ?? process.env.CHATGPT_WEB_CODEX_CDP_URL;
  const chromeExecutablePath = detectChromeExecutable(
    configuredString(data, "chromeExecutablePath")
  );
  if (!chromeExecutablePath && !cdpEndpoint) {
    throw new Error("No supported Chrome or Chromium executable was found");
  }

  const proAvailable = data.proAvailable === true;
  if (route.pro && !proAvailable) {
    throw new Error("ChatGPT Pro is not available for this connection");
  }

  const hasTools = toolModeRequired(parsed);
  const requiredChoice =
    parsed.options.toolChoice === "required" || typeof parsed.options.toolChoice === "object";
  if (route.pro && requiredChoice) {
    throw new Error("ChatGPT Web Pro is read-only and cannot satisfy a required tool choice");
  }

  const connector =
    configuredString(data, "connectorName", "appName") ??
    process.env.CHATGPT_WEB_CODEX_CONNECTOR_NAME?.trim();
  if (!route.pro && hasTools && !connector) {

View on GitHub (pinned to a179ffed5b)