Claude-in-Chrome never registers on bridge — tools return "not connected" instantly; SW websocket fails ERR_INTERNET_DISCONNECTED despite bridge being reachable
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_browserreturns 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
mcpPermissions-*.js`)
(source:
Key contradiction
bridge.claudeusercontent.com is fully reachable from the same machine, so this is not a real network outage:
nslookup→ resolves to160.79.104.10curl https://bridge.claudeusercontent.com/→ HTTP 426 Upgrade Required (the correct response for a WS endpoint hit over HTTPS), connect time ~15msscutil -r bridge.claudeusercontent.com→ Reachable
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'soauthAccount.accountUuid. - Site permissions — "Claude in Chrome" → Default = Allow extension, no blocked sites.
- Proxy —
scutil --proxyshows no HTTP/HTTPS/SOCKS proxy or PAC; no*_proxyenv vars. - VPN — none (
scutil --nwishows onlyen0). - Chrome MDM/managed policy — no managed policy file, no
ProxyModepref. - 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+Qquit + relaunch of Chrome (resets network service) - Extension toggle off/on; service-worker restart
- Clean uninstall + reinstall of the extension
/mcpreconnect 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.