2026-01-05 22:13:21 +01:00
---
2026-01-30 03:15:10 +01:00
summary: "Fix Chrome/Brave/Edge/Chromium CDP startup issues for OpenClaw browser control on Linux"
2026-01-05 22:13:21 +01:00
read_when: "Browser control fails on Linux, especially with snap Chromium"
---
2026-01-05 15:00:49 +00:00
# Browser Troubleshooting (Linux)
## Problem: "Failed to start Chrome CDP on port 18800"
2026-01-30 03:15:10 +01:00
OpenClaw's browser control server fails to launch Chrome/Brave/Edge/Chromium with the error:
2026-01-05 15:00:49 +00:00
```
2026-01-30 03:15:10 +01:00
{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}
2026-01-05 15:00:49 +00:00
```
### Root Cause
2026-01-30 03:15:10 +01:00
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.
2026-01-05 15:00:49 +00:00
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.
### Solution 1: Install Google Chrome (Recommended)
Install the official Google Chrome `.deb` package, which is not sandboxed by snap:
```bash
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
```
2026-01-30 03:15:10 +01:00
Then update your OpenClaw config (`~/.openclaw/openclaw.json` ):
2026-01-05 15:00:49 +00:00
```json
{
"browser": {
"enabled": true,
"executablePath": "/usr/bin/google-chrome-stable",
"headless": true,
"noSandbox": true
}
}
```
### Solution 2: Use Snap Chromium with Attach-Only Mode
2026-01-30 03:15:10 +01:00
If you must use snap Chromium, configure OpenClaw to attach to a manually-started browser:
2026-01-05 15:00:49 +00:00
1. Update config:
```json
{
"browser": {
"enabled": true,
"attachOnly": true,
"headless": true,
"noSandbox": true
}
}
```
2. Start Chromium manually:
```bash
chromium-browser --headless --no-sandbox --disable-gpu \
--remote-debugging-port=18800 \
2026-01-30 03:15:10 +01:00
--user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
2026-01-05 15:00:49 +00:00
about:blank &
```
3. Optionally create a systemd user service to auto-start Chrome:
```ini
2026-01-30 03:15:10 +01:00
# ~/.config/systemd/user/openclaw-browser.service
2026-01-05 15:00:49 +00:00
[Unit]
2026-01-30 03:15:10 +01:00
Description=OpenClaw Browser (Chrome CDP)
2026-01-05 15:00:49 +00:00
After=network.target
[Service]
2026-01-30 03:15:10 +01:00
ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.openclaw/browser/openclaw/user-data about:blank
2026-01-05 15:00:49 +00:00
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
```
2026-01-30 03:15:10 +01:00
Enable with: `systemctl --user enable --now openclaw-browser.service`
2026-01-05 15:00:49 +00:00
### Verifying the Browser Works
Check status:
```bash
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
```
Test browsing:
```bash
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs
```
### Config Reference
| Option | Description | Default |
|--------|-------------|---------|
| `browser.enabled` | Enable browser control | `true` |
2026-01-16 05:37:37 +00:00
| `browser.executablePath` | Path to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium) | auto-detected (prefers default browser when Chromium-based) |
2026-01-05 15:00:49 +00:00
| `browser.headless` | Run without GUI | `false` |
| `browser.noSandbox` | Add `--no-sandbox` flag (needed for some Linux setups) | `false` |
| `browser.attachOnly` | Don't launch browser, only attach to existing | `false` |
| `browser.cdpPort` | Chrome DevTools Protocol port | `18800` |
2026-01-16 06:57:20 +00:00
### Problem: "Chrome extension relay is running, but no tab is connected"
2026-01-30 03:15:10 +01:00
You’ re using the `chrome` profile (extension relay). It expects the OpenClaw
2026-01-16 06:57:20 +00:00
browser extension to be attached to a live tab.
Fix options:
2026-01-30 03:15:10 +01:00
1. **Use the managed browser:** `openclaw browser start --browser-profile openclaw`
(or set `browser.defaultProfile: "openclaw"` ).
2026-01-16 06:57:20 +00:00
2. **Use the extension relay:** install the extension, open a tab, and click the
2026-01-30 03:15:10 +01:00
OpenClaw extension icon to attach it.
2026-01-16 06:57:20 +00:00
Notes:
- The `chrome` profile uses your **system default Chromium browser** when possible.
2026-01-30 03:15:10 +01:00
- Local `openclaw` profiles auto-assign `cdpPort` /`cdpUrl` ; only set those for remote CDP.