Claude-in-Chrome never registers on bridge — tools return "not connected" instantly; SW websocket fails ERR_INTERNET_DISCONNECTED despite bridge being reachable

Open 💬 0 comments Opened Jun 23, 2026 by matheosch7

Summary

Claude-in-Chrome never registers on the bridge. Every mcp__claude-in-chrome__* call returns "Browser extension is not connected," and switch_browser returns instantly (without waiting for a Connect click), indicating the relay sees zero controllable extensions for the account — even after a clean reinstall.

Environment

  • macOS 15 (Darwin 25.5.0), Apple Silicon
  • Google Chrome (latest)
  • Claude Code CLI 2.1.186 (latest published)
  • Claude in Chrome extension: latest (clean uninstall + reinstall performed)

Symptom

  • All mcp__claude-in-chrome__* tools (tabs_context_mcp, switch_browser, etc.) return:

> Browser extension is not connected. Please ensure the Claude browser extension is installed and running...

  • switch_browser returns immediately rather than waiting ~2 min for a user "Connect" click → the bridge has no extension peer for the account.
  • Extension service-worker console repeatedly logged:

``
WebSocket connection to 'wss://bridge.claudeusercontent.com/chrome/<accountUuid>' failed:
net::ERR_INTERNET_DISCONNECTED
`
(source:
mcpPermissions-*.js`)

Key contradiction

bridge.claudeusercontent.com is fully reachable from the same machine, so this is not a real network outage:

  • nslookup → resolves to 160.79.104.10
  • curl https://bridge.claudeusercontent.com/HTTP 426 Upgrade Required (the correct response for a WS endpoint hit over HTTPS), connect time ~15ms
  • scutil -r bridge.claudeusercontent.comReachable

So Chrome's extension service worker reports ERR_INTERNET_DISCONNECTED for a host the OS reaches without issue.

Ruled out

  • Account mismatch — Claude Code and the extension both on the same account; the websocket path's <accountUuid> matches the CLI's oauthAccount.accountUuid.
  • Site permissions — "Claude in Chrome" → Default = Allow extension, no blocked sites.
  • Proxy — scutil --proxy shows no HTTP/HTTPS/SOCKS proxy or PAC; no *_proxy env vars.
  • VPN — none (scutil --nwi shows only en0).
  • Chrome MDM/managed policy — no managed policy file, no ProxyMode pref.
  • Chrome Secure DNS (DoH) — disabled, no change.
  • Ad/privacy extensions — disabled, no change.
  • Mac-level content filters (AdGuard/1Blocker/Little Snitch/LuLu/etc.) — none running.
  • CLI version — latest (2.1.186).

Tried (no effect)

  • Full Cmd+Q quit + relaunch of Chrome (resets network service)
  • Extension toggle off/on; service-worker restart
  • Clean uninstall + reinstall of the extension
  • /mcp reconnect on the Claude Code side — succeeds ("Reconnected to claude-in-chrome")

After a clean restart, the service-worker console is error-free, but the bridge websocket is never established/maintained — the Network panel shows no Socket row — so pairing never registers and the CLI tools keep returning "not connected."

Expected

After install + same-account login, tabs_context_mcp / switch_browser should reach the extension (or switch_browser should at least block waiting for a Connect click).

Actual

Calls fail instantly; the extension's bridge websocket fails with ERR_INTERNET_DISCONNECTED despite the bridge host being reachable from the same machine.

View original on GitHub ↗