Problem: Failed to start Chrome CDP on port 18800
Root cause
On Ubuntu and most Linux distros,apt install chromium installs a snap
wrapper, not a real browser:
The profile appears to be in use by another Chromium process: staleSingleton*lock files in the managed profile directory. OpenClaw removes these locks and retries once when the lock points at a dead or different-host process.Missing X server or $DISPLAY: a visible browser was explicitly requested on a host without a desktop session. Local managed profiles fall back to headless mode on Linux when bothDISPLAYandWAYLAND_DISPLAYare unset. If you setOPENCLAW_BROWSER_HEADLESS=0,browser.headless: false, orbrowser.profiles.<name>.headless: false, remove that headed override, setOPENCLAW_BROWSER_HEADLESS=1, startXvfb, runopenclaw browser start --headlessfor a one-shot managed launch, or run OpenClaw in a real desktop session.
Solution 1: install Google Chrome (recommended)
~/.openclaw/openclaw.json:
Solution 2: use snap Chromium in attach-only mode
If you must keep snap Chromium, configure OpenClaw to attach to a manually-started browser instead of launching it:Verify the browser works
Config reference
| Option | Description | Default |
|---|---|---|
browser.enabled | Enable browser control | true |
browser.executablePath | Path to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium) | auto-detected (prefers the OS default browser when Chromium-based) |
browser.headless | Run without GUI | false |
OPENCLAW_BROWSER_HEADLESS | Per-process override for local managed browser headless mode | unset |
browser.noSandbox | Add --no-sandbox flag (needed for some Linux setups) | false |
browser.attachOnly | Do not launch a browser; only attach to an existing one | false |
browser.cdpPortRangeStart | Starting local CDP port for auto-assigned profiles | 18800 (derived from the gateway port) |
browser.localLaunchTimeoutMs | Local managed Chrome discovery timeout, up to 120000 | 15000 |
browser.localCdpReadyTimeoutMs | Local managed post-launch CDP readiness timeout, up to 120000 | 8000 |
120000 ms; other values
are rejected at config load. On Raspberry Pi, older VPS hosts, or slow
storage, raise browser.localLaunchTimeoutMs when Chrome needs more time to
expose its CDP HTTP endpoint. Raise browser.localCdpReadyTimeoutMs when
launch succeeds but openclaw browser start still reports not reachable after start.
Problem: No Chrome tabs found for profile=“user”
You are using theuser (existing-session / Chrome MCP) profile and no
tabs are open to attach to.
Fix options:
- Use the managed browser instead:
openclaw browser --browser-profile openclaw start(or setbrowser.defaultProfile: "openclaw"). - Keep local Chrome running with at least one open tab, then retry with
--browser-profile user.
useris host-only. On Linux servers, containers, or remote hosts, prefer CDP profiles instead.userand otherexisting-sessionprofiles share the current Chrome MCP limits: ref-driven actions only, one file per upload, no dialogtimeoutMsoverrides, nowait --load networkidle, and noresponsebody, PDF export, download interception, or batch actions.- Local
openclaw-driver profiles auto-assigncdpPort/cdpUrl; only set those manually for remote CDP. - Remote CDP profiles accept
http://,https://,ws://, andwss://. Use HTTP(S) for/json/versiondiscovery, or WS(S) when your browser service gives you a direct DevTools socket URL.