Claude in Chrome: extension never connects to Claude Code CLI (macOS)
Environment
- Claude Code: 2.1.152 (native install, macOS)
- Chrome Extension: Claude in Chrome (Beta) v1.0.72 (ID: fcoeoabgfenejglbffodgkkbkcdhcgfn)
- Chrome: 148.0.7778.179
- macOS: Darwin 25.5.0 (arm64)
- Claude Desktop App: installed at /Applications/Claude.app
Problem
mcp__claude-in-chrome__list_connected_browsers always returns "Browser extension is not connected", regardless of configuration. The extension has never worked on this machine.
Diagnosis
Extensive debugging revealed the following:
1. Native host binary works correctly
The Claude Code native host (--chrome-native-host) works perfectly when tested directly:
>>> {"type": "ping"}
<<< {"type": "pong", "timestamp": 1779846273608}
>>> {"type": "get_status"}
<<< {"type": "status_response", "native_host_version": "1.0.0"}
Logs go to stderr (not stdout), so the native messaging protocol is clean.
2. Extension connects but rapidly cycles mcpConnected
Extension LevelDB storage shows mcpConnected rapidly toggling between true and false dozens of times, settling on false. The extension successfully connects (pong works) but the connection drops immediately and repeatedly.
3. Two native host configs conflict
Two native messaging host configs exist, both allowing the same extension ID:
com.anthropic.claude_browser_extension→/Applications/Claude.app/Contents/Helpers/chrome-native-hostcom.anthropic.claude_code_browser_extension→ Claude Code binary
The extension code tries them sequentially (Desktop first, then Claude Code) and uses only the first successful connection. This means:
- If Claude.app host wins → Claude Code CLI never gets a connection
- If Claude Code host wins → Claude.app never gets one
4. Claude Code CLI never connects to the bridge socket
Even when a native host is running and listening on /tmp/claude-mcp-browser-bridge-$USER/<pid>.sock, the Claude Code CLI process (PID verified via lsof) has no connection to the socket. The built-in MCP server returns "not connected" instantly without attempting socket connection.
5. Protocol mismatch between hosts
- Claude Code's native host socket responds correctly to length-prefixed JSON messages
- Claude.app's native host socket accepts connections but does not respond to the same protocol (times out on length-prefixed ping, returns empty on raw JSON)
6. Fresh install doesn't help
Complete uninstall + reinstall of the extension, Chrome restart, Claude.app running — same result.
Expected behavior
list_connected_browsers should detect the extension and allow browser automation.
Steps to reproduce
- Install Claude Code CLI 2.1.152
- Install Claude in Chrome extension from Web Store
- Have Claude.app Desktop also installed
- Log into claude.ai in Chrome
- Run
mcp__claude-in-chrome__list_connected_browsers→ always "not connected"
Questions
- Does
claude-in-chromerequire Claude Desktop app to be running and acting as bridge? - Is there a known incompatibility between CLI 2.1.152 and extension 1.0.72?
- Should the extension connect to both native hosts simultaneously, or is the sequential first-wins approach intentional?
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗