Skip to content

Bug: openclaw browser open can crash OpenClaw.app via browser.proxy / MacNodeBrowserProxy.makeRequest #43872

@caojm93

Description

@caojm93

Bug: openclaw browser open can crash OpenClaw.app via browser.proxy / MacNodeBrowserProxy.makeRequest

Summary

On macOS, openclaw browser open <url> can crash OpenClaw.app instead of returning a normal browser/tool error.

The failure reproduces with both:

  • the managed openclaw browser profile
  • the chrome extension-relay profile

The crash reports consistently point to:

  • MacNodeBrowserProxy.makeRequest(params:endpoint:)
  • NSJSONSerialization dataWithJSONObject
  • SIGABRT

This looks like a browser-proxy request serialization bug in the macOS app, not just a browser launch failure.

Environment

  • OpenClaw app: 2026.3.8-beta.1
  • Build: 2026030801
  • macOS: 26.2 (25C56)
  • CPU: Apple Silicon / arm64
  • CLI runtime observed locally: node 25.8.0
  • Installed Chromium-family browser on this machine: Microsoft Edge

Reproduction

Case 1: managed openclaw profile

  1. Ensure gateway/app is running.
  2. Run:
openclaw browser status
openclaw browser start
openclaw browser open https://www.baidu.com

Case 2: chrome profile

  1. Ensure gateway/app is running.
  2. Run:
openclaw browser --browser-profile chrome open https://www.baidu.com

Expected

  • The command should either open the page successfully, or
  • return a normal recoverable error if browser relay / browser proxy is unavailable.

It should not crash OpenClaw.app.

Actual

  • CLI returns:
Error: Error: node disconnected (browser.proxy)
  • Immediately after, OpenClaw.app aborts and a crash report is generated.

Evidence

Gateway log sequence

At 2026-03-12 16:22:53 +0800, the browser request starts successfully:

[browser/chrome] openclaw browser started (edge) profile "openclaw" on 127.0.0.1:18800
[ws] res ✓ browser.request

Then at 2026-03-12 16:22:56 +0800, it fails:

[ws] res ✗ browser.request ... Error: node disconnected (browser.proxy)

And shortly after, the gateway receives shutdown signals.

Relevant log file:

  • /Users/caojiaming/.openclaw/logs/gateway.log

Crash reports

Observed crash reports:

  • /Users/caojiaming/Library/Logs/DiagnosticReports/OpenClaw-2026-03-12-162259.ips
  • /Users/caojiaming/Library/Logs/DiagnosticReports/OpenClaw-2026-03-12-164337.ips
  • /Users/caojiaming/Library/Logs/DiagnosticReports/OpenClaw-2026-03-12-164947.ips

These reports consistently show:

SIGABRT
...
_writeJSONValue
+[NSJSONSerialization dataWithJSONObject:options:error:]
static MacNodeBrowserProxy.makeRequest(params:endpoint:)
MacNodeBrowserProxy.request(paramsJSON:)

Notes

  • openclaw browser start alone can succeed.
  • The crash is triggered when performing an actual browser action like open / navigation.
  • This does not look like a simple "Edge unsupported" problem:
    • the browser executable is detected correctly
    • launch succeeds
    • the crash happens later in browser-proxy request handling / JSON serialization
  • I also reproduced the same browser.proxy failure path using the chrome profile, so this appears broader than one profile name.

Suspected root cause

MacNodeBrowserProxy.makeRequest(params:endpoint:) appears to pass a non-JSON-serializable object into NSJSONSerialization, causing an Objective-C exception that is not caught and aborts the entire app.

Suggested fix direction

  • Validate request payloads with isValidJSONObject before serialization
  • Sanitize unsupported values before calling NSJSONSerialization
  • Convert this path from app abort -> recoverable tool error
  • Log the offending payload shape/type so the exact bad field can be identified

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions