nvironment
Host: DigitalOcean VPS
OS: Ubuntu 24.04
Runtime: Docker
Image: ghcr.io/openclaw/openclaw:2026.2.6-3
Gateway: local mode, token auth
Goal: Headless browser inside container (no Chrome extension)
Container started with:
-e DISPLAY=:99
-v /home/admin/molt/data:/home/node/.openclaw
-p 18789:18789
DISPLAY confirmed inside container (:99).
Current Issue
Browser service starts, but all browser commands route to Chrome extension relay mode.
Symptoms:
browser start →
Chrome extension relay is running, but no tab is connected
browser profiles:
openclaw: stopped
chrome: running (0 tabs) [default]
Starting openclaw profile still triggers extension relay.
What’s Working
Browser service log:
[browser/service] Browser control service ready (profiles=2)
No crash loops
Proxy, gateway, auth, DISPLAY all confirmed correct
This is not infra, proxy, auth, or DISPLAY related.
What We Tried
Recreated container with DISPLAY=:99
Verified browser service + DISPLAY
Attempted explicit browser config in openclaw.json:
"browser": {
"defaultProfile": "openclaw",
"profiles": {
"openclaw": {
"enabled": true,
"headless": true
}
}
}
→ Rejected by validator:
color required
enabled, headless are unrecognized keys
Config schema appears stricter than expected.
Question for Devs
For OpenClaw 2026.x:
What is the correct browser.profiles schema?
How do we force headless (non-extension) mode?
Config?
CLI?
Env var?
Is chrome always extension-only, and is there a built-in headless profile name we should use?
Desired Outcome
Headless browser starts
No Chrome extension relay references
browser start works without manual extension attachment