openclaw - 💡(How to fix) Fix Node browser proxy: Chrome MCP existing-session (user profile) fails with Connection closed — consent dialog never appears [1 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#56118Fetched 2026-04-08 01:44:44
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
2
Author
Participants

When using the node browser proxy to access a Chrome MCP existing-session (user profile) on a remote node, the connection fails with McpError: MCP error -32000: Connection closed. Chrome never shows the consent dialog that would authorize the connection.

The same user profile works perfectly when accessed via the local gateway on the same machine.

Error Message

When using the node browser proxy to access a Chrome MCP existing-session (user profile) on a remote node, the connection fails with McpError: MCP error -32000: Connection closed. Chrome never shows the consent dialog that would authorize the connection.

  • Fails immediately with: BrowserProfileUnavailableError: Chrome MCP existing-session attach failed for profile "user". Details: McpError: MCP error -32000: Connection closed

Root Cause

When using the node browser proxy to access a Chrome MCP existing-session (user profile) on a remote node, the connection fails with McpError: MCP error -32000: Connection closed. Chrome never shows the consent dialog that would authorize the connection.

The same user profile works perfectly when accessed via the local gateway on the same machine.

RAW_BUFFERClick to expand / collapse

Summary

When using the node browser proxy to access a Chrome MCP existing-session (user profile) on a remote node, the connection fails with McpError: MCP error -32000: Connection closed. Chrome never shows the consent dialog that would authorize the connection.

The same user profile works perfectly when accessed via the local gateway on the same machine.

Environment

  • Gateway: OpenClaw 2026.3.24 on Ubuntu (AWS Lightsail VPS), bind=tailnet
  • Node: OpenClaw 2026.3.24 on Ubuntu Desktop (marks-IT13), connected via Tailscale
  • Chrome: 146.0.7680.164 (stable, not snap)
  • Chrome remote debugging: Enabled via chrome://inspect/#remote-debugging
  • Display: Wayland (Ubuntu desktop)

Steps to reproduce

  1. Configure gateway with gateway.bind=tailnet
  2. Connect a Linux desktop as a node host: openclaw node run --host <gateway-tailscale-ip> --port 18789
  3. Node connects successfully, shows browser capability, browser.proxy command available
  4. From gateway, invoke: openclaw nodes invoke --node <name> --command browser.proxy --params '{"path":"/tabs","query":{"profile":"user"},"method":"GET"}'

Expected

  • The node host's browser service spawns chrome-devtools-mcp --autoConnect
  • Chrome shows the consent/approval dialog on the desktop
  • User accepts, connection established
  • Gateway receives tab list via node proxy

Actual

  • Node browser proxy attempts Chrome MCP existing-session attach
  • Fails immediately with: BrowserProfileUnavailableError: Chrome MCP existing-session attach failed for profile "user". Details: McpError: MCP error -32000: Connection closed
  • Chrome never shows the consent dialog
  • The managed openclaw profile works fine through the same node proxy

Key observations

  1. Local gateway on the same machine works: openclaw browser --browser-profile user tabs returns tabs correctly after consent is accepted
  2. Manual MCP trigger works: Piping a JSON-RPC command directly into npx chrome-devtools-mcp@latest --autoConnect triggers the consent dialog and Chrome connects
  3. Node proxy does not trigger consent: The node host's browser service spawns its own MCP server instance, but Chrome rejects the connection before showing consent — likely a timeout issue where the proxy gives up before Chrome can render the dialog
  4. Chrome IS listening: ss -tlnp | grep 9222 confirms Chrome listening on 127.0.0.1:9222
  5. Not a DISPLAY issue: Tested with explicit DISPLAY=:0 on the node host — same result
  6. Not a Chrome version issue: Chrome 146 (well above 144 requirement)

Probable cause

The node browser proxy has a short timeout for the Chrome MCP handshake. The --autoConnect flow requires:

  1. MCP server connects to Chrome's debug endpoint
  2. Chrome shows consent dialog to user
  3. User clicks Allow
  4. MCP server completes handshake

The proxy appears to fail at step 1-2, timing out before Chrome can present the consent UI. The local gateway may have a longer timeout or different initialization path that allows the consent flow to complete.

Suggested fix

  • Increase the timeout for Chrome MCP existing-session attach in the node browser proxy
  • Or: allow the node browser proxy to reuse the local gateway's established MCP connection instead of spawning a new one
  • Or: provide a way to pre-authorize the Chrome MCP connection so the consent dialog is not required on every new MCP server process

Related issues (chrome-devtools-mcp)

  • ChromeDevTools/chrome-devtools-mcp#825 — Feature request for persisting remote debugging approval
  • ChromeDevTools/chrome-devtools-mcp#1094 — Long-running sessions trigger repeated approval prompts
  • ChromeDevTools/chrome-devtools-mcp#870 — Timeouts with --autoConnect on Chrome 144

extent analysis

Fix Plan

To resolve the issue with the node browser proxy timing out before Chrome can present the consent UI, we will increase the timeout for Chrome MCP existing-session attach in the node browser proxy.

Here are the steps:

  • Increase the timeout value in the node browser proxy configuration.
  • Update the openclaw node to use the new timeout value.

Example code snippet to increase the timeout:

// Increase the timeout to 30 seconds
const timeout = 30000;

// Update the node browser proxy to use the new timeout value
nodeBrowserProxy.setTimeout(timeout);

// Alternatively, you can also set the timeout using environment variables
process.env.MCP_TIMEOUT = timeout.toString();

You can also update the openclaw configuration file to include the new timeout value. For example:

# openclaw.yml
node:
  browser:
    proxy:
      timeout: 30000

Verification

To verify that the fix worked, follow these steps:

  • Restart the openclaw node and gateway.
  • Invoke the browser.proxy command again.
  • Check if the consent dialog is displayed in Chrome and if the connection is established successfully.

Extra Tips

  • Make sure to update the openclaw version to the latest release to ensure you have the latest fixes and features.
  • If you are still experiencing issues, try increasing the timeout value further or checking the Chrome debug logs for any errors.
  • Consider implementing a way to pre-authorize the Chrome MCP connection to avoid the consent dialog on every new MCP server process.

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