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.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'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.
Summary
Claude-in-Chrome never registers on the bridge. Every
mcp__claude-in-chrome__*call returns "Browser extension is not connected," andswitch_browserreturns instantly (without waiting for a Connect click), indicating the relay sees zero controllable extensions for the account — even after a clean reinstall.Environment
Symptom
mcp__claude-in-chrome__*tools (tabs_context_mcp,switch_browser, etc.) return:switch_browserreturns immediately rather than waiting ~2 min for a user "Connect" click → the bridge has no extension peer for the account.mcpPermissions-*.js)Key contradiction
bridge.claudeusercontent.comis 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→ ReachableSo Chrome's extension service worker reports
ERR_INTERNET_DISCONNECTEDfor a host the OS reaches without issue.Ruled out
<accountUuid>matches the CLI'soauthAccount.accountUuid.scutil --proxyshows no HTTP/HTTPS/SOCKS proxy or PAC; no*_proxyenv vars.scutil --nwishows onlyen0).ProxyModepref.Tried (no effect)
Cmd+Qquit + relaunch of Chrome (resets network service)/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_browsershould reach the extension (orswitch_browsershould at least block waiting for a Connect click).Actual
Calls fail instantly; the extension's bridge websocket fails with
ERR_INTERNET_DISCONNECTEDdespite the bridge host being reachable from the same machine.