CoderClaw’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 \"coderclaw\"."}
On Ubuntu (and many Linux distros), the default Chromium installation is a snap package. Snap’s AppArmor confinement interferes with how CoderClaw 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.
Install the official Google Chrome .deb package, which is not sandboxed by snap:
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 CoderClaw config (~/.coderclaw/coderclaw.json):
{
"browser": {
"enabled": true,
"executablePath": "/usr/bin/google-chrome-stable",
"headless": true,
"noSandbox": true
}
}
If you must use snap Chromium, configure CoderClaw to attach to a manually-started browser:
{
"browser": {
"enabled": true,
"attachOnly": true,
"headless": true,
"noSandbox": true
}
}
chromium-browser --headless --no-sandbox --disable-gpu \
--remote-debugging-port=18800 \
--user-data-dir=$HOME/.coderclaw/browser/coderclaw/user-data \
about:blank &
# ~/.config/systemd/user/coderclaw-browser.service
[Unit]
Description=CoderClaw Browser (Chrome CDP)
After=network.target
[Service]
ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.coderclaw/browser/coderclaw/user-data about:blank
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
Enable with: systemctl --user enable --now coderclaw-browser.service
Check status:
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
Test browsing:
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs
| 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 default browser when Chromium-based) |
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 |
You’re using the chrome profile (extension relay). It expects the CoderClaw
browser extension to be attached to a live tab.
Fix options:
coderclaw browser start --browser-profile coderclaw
(or set browser.defaultProfile: "coderclaw").Notes:
chrome profile uses your system default Chromium browser when possible.coderclaw profiles auto-assign cdpPort/cdpUrl; only set those for remote CDP.