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
- Configure gateway with
gateway.bind=tailnet
- Connect a Linux desktop as a node host:
openclaw node run --host <gateway-tailscale-ip> --port 18789
- Node connects successfully, shows
browser capability, browser.proxy command available
- 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
- Local gateway on the same machine works:
openclaw browser --browser-profile user tabs returns tabs correctly after consent is accepted
- Manual MCP trigger works: Piping a JSON-RPC command directly into
npx chrome-devtools-mcp@latest --autoConnect triggers the consent dialog and Chrome connects
- 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
- Chrome IS listening:
ss -tlnp | grep 9222 confirms Chrome listening on 127.0.0.1:9222
- Not a DISPLAY issue: Tested with explicit
DISPLAY=:0 on the node host — same result
- 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:
- MCP server connects to Chrome's debug endpoint
- Chrome shows consent dialog to user
- User clicks Allow
- 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)
Summary
When using the node browser proxy to access a Chrome MCP existing-session (
userprofile) on a remote node, the connection fails withMcpError: MCP error -32000: Connection closed. Chrome never shows the consent dialog that would authorize the connection.The same
userprofile works perfectly when accessed via the local gateway on the same machine.Environment
chrome://inspect/#remote-debuggingSteps to reproduce
gateway.bind=tailnetopenclaw node run --host <gateway-tailscale-ip> --port 18789browsercapability,browser.proxycommand availableopenclaw nodes invoke --node <name> --command browser.proxy --params '{"path":"/tabs","query":{"profile":"user"},"method":"GET"}'Expected
chrome-devtools-mcp --autoConnectActual
BrowserProfileUnavailableError: Chrome MCP existing-session attach failed for profile "user". Details: McpError: MCP error -32000: Connection closedopenclawprofile works fine through the same node proxyKey observations
openclaw browser --browser-profile user tabsreturns tabs correctly after consent is acceptednpx chrome-devtools-mcp@latest --autoConnecttriggers the consent dialog and Chrome connectsss -tlnp | grep 9222confirms Chrome listening on 127.0.0.1:9222DISPLAY=:0on the node host — same resultProbable cause
The node browser proxy has a short timeout for the Chrome MCP handshake. The
--autoConnectflow requires: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
Related issues (chrome-devtools-mcp)