openclaw - 💡(How to fix) Fix [Bug]: Browser runtime ignores configured executablePath (regression, original #73617 bot-closed prematurely) [2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#75087Fetched 2026-05-01 05:38:17
View on GitHub
Comments
2
Participants
3
Timeline
8
Reactions
2
Author
Timeline (top)
commented ×2mentioned ×2subscribed ×2closed ×1

The OpenClaw browser runtime ignores the configured browser.executablePath (and browser.profiles.openclaw.executablePath) in the 2026.4.27 release. The CLI reports detectedPath: auto and detectedBrowser: unknown even when Chrome is installed and config has the path set.

Root Cause

Root Cause: Dual State Paths

Fix Action

Workaround

token=$(python3 -c "import json; print(json.load(open(~/.openclaw/openclaw.json))[gateway][auth][token])")
# Check status (works)
curl -s -H "Authorization: Bearer $token" http://127.0.0.1:18791/ | python3 -m json.tool
# Start browser (works)
curl -s -X POST -H "Authorization: Bearer $token" "http://127.0.0.1:18791/start?profile=openclaw"

Code Example

# Minimal reproduction
openclaw config set browser.executablePath /usr/bin/google-chrome
openclaw config set browser.headless true
openclaw config set browser.noSandbox true
openclaw gateway restart
openclaw browser status

---

token=$(python3 -c "import json; print(json.load(open(~/.openclaw/openclaw.json))[gateway][auth][token])")
# Check status (works)
curl -s -H "Authorization: Bearer $token" http://127.0.0.1:18791/ | python3 -m json.tool
# Start browser (works)
curl -s -X POST -H "Authorization: Bearer $token" "http://127.0.0.1:18791/start?profile=openclaw"
RAW_BUFFERClick to expand / collapse

This is a follow-up to #73617, which was closed prematurely by a bot (clawsweeper[bot]) claiming the fix was on main, despite the issue persisting in the latest release.

Summary

The OpenClaw browser runtime ignores the configured browser.executablePath (and browser.profiles.openclaw.executablePath) in the 2026.4.27 release. The CLI reports detectedPath: auto and detectedBrowser: unknown even when Chrome is installed and config has the path set.

Steps to Reproduce

# Minimal reproduction
openclaw config set browser.executablePath /usr/bin/google-chrome
openclaw config set browser.headless true
openclaw config set browser.noSandbox true
openclaw gateway restart
openclaw browser status
  • openclaw config get browser --json confirms executablePath: "/usr/bin/google-chrome"
  • /usr/bin/google-chrome --version returns Google Chrome 147.0.7727.116
  • CDP responds on port 18800
  • But openclaw browser status still shows detectedPath: auto

Profile-level workaround also does not work. Setting browser.profiles.openclaw.executablePath has the same result.

Root Cause: Dual State Paths

The browser plugin has two separate config state paths:

  1. HTTP server (port 18791) — initialized at gateway startup, reads current config
  2. Gateway WebSocket handler (port 18789) — initialized lazily, uses a stale/cached config snapshot that never picks up executablePath, noSandbox, or other browser settings ❌

The CLI (openclaw browser status, openclaw browser start) routes through the gateway WebSocket handler, which has the stale snapshot. Direct HTTP calls to port 18791 return the correct values.

Evidence

  • curl to http://127.0.0.1:18791/ returns correct executablePath and noSandbox
  • CLI/gateway WebSocket returns executablePath: null and noSandbox: false
  • HTTP API can start the browser; the CLI cannot

Workaround

token=$(python3 -c "import json; print(json.load(open(~/.openclaw/openclaw.json))[gateway][auth][token])")
# Check status (works)
curl -s -H "Authorization: Bearer $token" http://127.0.0.1:18791/ | python3 -m json.tool
# Start browser (works)
curl -s -X POST -H "Authorization: Bearer $token" "http://127.0.0.1:18791/start?profile=openclaw"

Related Issues

  • #53004 — same root cause (WebSocket/handler stale config)
  • #59527 — same root cause
  • Original closed issue: #73617

Additional Context

  • OpenClaw version: 2026.4.27 (also confirmed broken on 2026.4.26)
  • Chrome: Google Chrome 147.0.7727.116
  • OS: Linux (Debian trixie)

In original issue #73617, @martingarramon did a source trace and found that the status route only checks profile-level executablePath with no fallback to resolved.executablePath (Finding 2), and the value is being lost before reaching the browser runtime config snapshot (Finding 1). This goes deeper than both findings — even profile-level config is lost through the WebSocket path.

extent analysis

TL;DR

The most likely fix is to update the gateway WebSocket handler to use the current config instead of a stale snapshot, allowing it to pick up the executablePath and other browser settings.

Guidance

  • Verify that the issue is indeed caused by the dual state paths in the browser plugin by checking the config values returned by the HTTP server and the gateway WebSocket handler using the provided curl commands.
  • Use the provided workaround to start the browser using the HTTP API, which can be used as a temporary solution until the underlying issue is fixed.
  • Investigate updating the gateway WebSocket handler to use the current config, potentially by reinitializing it when the config changes or by using a different approach to handle config updates.
  • Review related issues #53004 and #59527 to see if they provide any additional insights or potential solutions.

Example

The provided workaround uses curl to start the browser using the HTTP API:

token=$(python3 -c "import json; print(json.load(open('~/.openclaw/openclaw.json'))['gateway']['auth']['token'])")
curl -s -X POST -H "Authorization: Bearer $token" "http://127.0.0.1:18791/start?profile=openclaw"

This can be used as a starting point to develop a more permanent solution.

Notes

The issue appears to be specific to the OpenClaw version 2026.4.27 and may not affect other versions. Additionally, the workaround provided only addresses the symptom and not the underlying cause, so a more permanent solution is still needed.

Recommendation

Apply the workaround using the HTTP API to start the browser, as it provides a functional solution until the underlying issue can be addressed.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: Browser runtime ignores configured executablePath (regression, original #73617 bot-closed prematurely) [2 comments, 3 participants]