When using the built-in OpenClaw server-side browser (headless Chrome, profile openclaw), browser.snapshot and browser.open often succeed, but browser.act intermittently fails with:
• Can't reach the OpenClaw browser control service (timed out after 20000ms)
• sometimes followed by: ... (Error: Error: tab not found)
This happens even though the gateway is reachable and the browser profile can be (re)started. As a workaround we often need to restart the browser profile (browser stop/start) and re-open the page.
Environment
• OpenClaw: 2026.2.9 (stable)
• OS: Linux 6.8.0-100-generic x86_64 (Ubuntu)
• Node: v25.6.1
• Chrome: Google Chrome 145.0.7632.45
• Browser config: headless true, noSandbox=true, profile openclaw
• Gateway bind: loopback (local)
What works
• browser.open creates a tab / targetId
• browser.snapshot returns a valid accessibility tree for that targetId (so the page is loaded and readable)
What fails
• browser.act (e.g., clicking a ref from snapshot) sometimes fails with a 20s timeout reaching the browser control service, despite snapshot/open working moments earlier.
Steps to reproduce (approx.)
- Start gateway and browser profile openclaw (headless).
- browser.open("https://journal.top-academy.ru/ru/main/dashboard/page/index")
- browser.snapshot(...) (works)
- browser.act(click, ref=)
→ intermittently fails with the timeout error.
- Restarting the browser profile may “fix” it temporarily, but then reusing the old targetId may lead to “tab not found”.
Logs (excerpt)
From gateway logs (timestamps omitted here for brevity):
info browser/chrome 🦞 openclaw browser started (chrome) profile "openclaw" on 127.0.0.1:18800 (pid 69137)
error [tools] browser failed: Can't reach the OpenClaw browser control service (timed out after 20000ms). Start (or restart) the OpenClaw gateway ...
error [tools] browser failed: Can't reach the OpenClaw browser control service ... (Error: Error: tab not found)
Expected behavior
• If browser.snapshot succeeds for a given targetId, browser.act should be able to operate on the same tab reliably, or fail with a more specific/diagnostic error (e.g., CDP disconnected) rather than generic “can’t reach control service”.
• After a browser profile restart, the system should either: • automatically invalidate/refresh targetIds, or
• return a clearer error / provide an automatic recovery path.
Suggested improvements / ideas
-
Add a single automatic retry for browser.act when the error matches: • “Can’t reach the OpenClaw browser control service (timed out …)”
• “tab not found”
Possible recovery: reconnect to the browser control service / restart the profile, re-open the last known URL, then re-run the action once.
-
Improve diagnostics: log control-service connectivity, CDP status/port, and whether the targetId still exists when the action starts.
If you’d like, I can provide more logs or try to isolate a smaller repro script.
When using the built-in OpenClaw server-side browser (headless Chrome, profile openclaw), browser.snapshot and browser.open often succeed, but browser.act intermittently fails with:
• Can't reach the OpenClaw browser control service (timed out after 20000ms)
• sometimes followed by: ... (Error: Error: tab not found)
This happens even though the gateway is reachable and the browser profile can be (re)started. As a workaround we often need to restart the browser profile (browser stop/start) and re-open the page.
Environment
• OpenClaw: 2026.2.9 (stable)
• OS: Linux 6.8.0-100-generic x86_64 (Ubuntu)
• Node: v25.6.1
• Chrome: Google Chrome 145.0.7632.45
• Browser config: headless true, noSandbox=true, profile openclaw
• Gateway bind: loopback (local)
What works
• browser.open creates a tab / targetId
• browser.snapshot returns a valid accessibility tree for that targetId (so the page is loaded and readable)
What fails
• browser.act (e.g., clicking a ref from snapshot) sometimes fails with a 20s timeout reaching the browser control service, despite snapshot/open working moments earlier.
Steps to reproduce (approx.)
→ intermittently fails with the timeout error.
Logs (excerpt)
From gateway logs (timestamps omitted here for brevity):
info browser/chrome 🦞 openclaw browser started (chrome) profile "openclaw" on 127.0.0.1:18800 (pid 69137)
error [tools] browser failed: Can't reach the OpenClaw browser control service (timed out after 20000ms). Start (or restart) the OpenClaw gateway ...
error [tools] browser failed: Can't reach the OpenClaw browser control service ... (Error: Error: tab not found)
Expected behavior
• If browser.snapshot succeeds for a given targetId, browser.act should be able to operate on the same tab reliably, or fail with a more specific/diagnostic error (e.g., CDP disconnected) rather than generic “can’t reach control service”.
• After a browser profile restart, the system should either: • automatically invalidate/refresh targetIds, or
• return a clearer error / provide an automatic recovery path.
Suggested improvements / ideas
Add a single automatic retry for browser.act when the error matches: • “Can’t reach the OpenClaw browser control service (timed out …)”
• “tab not found”
Possible recovery: reconnect to the browser control service / restart the profile, re-open the last known URL, then re-run the action once.
Improve diagnostics: log control-service connectivity, CDP status/port, and whether the targetId still exists when the action starts.
If you’d like, I can provide more logs or try to isolate a smaller repro script.