Skip to content

Browser Troubleshooting (Linux)

Problem: “Failed to start Chrome CDP on port 18800”

Section titled “Problem: “Failed to start Chrome CDP on port 18800””

OpenClaw’s browser control server fails to launch Chrome/Brave/Edge/Chromium with the error:

{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}

On Ubuntu (and many Linux distros), the default Chromium installation is a snap package. Snap’s AppArmor confinement interferes with how OpenClaw spawns and monitors the browser process.

The apt install chromium command installs a stub package that redirects to snap:

Note, selecting 'chromium-browser' instead of 'chromium'
chromium-browser is already the newest version (2:1snap1-0ubuntu2).

This is NOT a real browser — it’s just a wrapper.

Section titled “Solution 1: Install Google Chrome (Recommended)”

Install the official Google Chrome .deb package, which is not sandboxed by snap:

Terminal window
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt --fix-broken install -y # if there are dependency errors

Then update your OpenClaw config (~/.openclaw/openclaw.json):

{
"browser": {
"enabled": true,
"executablePath": "/usr/bin/google-chrome-stable",
"headless": true,
"noSandbox": true
}
}

Solution 2: Use Snap Chromium with Attach-Only Mode

Section titled “Solution 2: Use Snap Chromium with Attach-Only Mode”

If you must use snap Chromium, configure OpenClaw to attach to a manually-started browser:

  1. Update config:
{
"browser": {
"enabled": true,
"attachOnly": true,
"headless": true,
"noSandbox": true
}
}
  1. Start Chromium manually:
Terminal window
chromium-browser --headless --no-sandbox --disable-gpu \
--remote-debugging-port=18800 \
--user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
about:blank &
  1. Optionally create a systemd user service to auto-start Chrome:
~/.config/systemd/user/openclaw-browser.service
[Unit]
Description=OpenClaw Browser (Chrome CDP)
After=network.target
[Service]
ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.openclaw/browser/openclaw/user-data about:blank
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target

Enable with: systemctl --user enable --now openclaw-browser.service

Check status:

Terminal window
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'

Test browsing:

Terminal window
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs
OptionDescriptionDefault
browser.enabledEnable browser controltrue
browser.executablePathPath to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium)auto-detected (prefers default browser when Chromium-based)
browser.headlessRun without GUIfalse
browser.noSandboxAdd --no-sandbox flag (needed for some Linux setups)false
browser.attachOnlyDon’t launch browser, only attach to existingfalse
browser.cdpPortChrome DevTools Protocol port18800

Problem: “Chrome extension relay is running, but no tab is connected”

Section titled “Problem: “Chrome extension relay is running, but no tab is connected””

You’re using the chrome profile (extension relay). It expects the OpenClaw browser extension to be attached to a live tab.

Fix options:

  1. Use the managed browser: openclaw browser start --browser-profile openclaw (or set browser.defaultProfile: "openclaw").
  2. Use the extension relay: install the extension, open a tab, and click the OpenClaw extension icon to attach it.

Notes:

  • The chrome profile uses your system default Chromium browser when possible.
  • Local openclaw profiles auto-assign cdpPort/cdpUrl; only set those for remote CDP.