claude-in-chrome MCP never connects to browser-bridge socket (v2.1.77)
Resolved 💬 3 comments Opened Mar 17, 2026 by XelaG155 Closed Mar 21, 2026
Bug Description
claude-in-chrome MCP server fails to connect to the browser-bridge Unix socket, making Chrome automation completely non-functional. The native messaging host runs correctly, the socket is created, but the Claude Code main process never connects to it.
Environment
- Claude Code: 2.1.77 (native install, macOS)
- macOS Darwin 25.3.0
- Chrome: 146.0.7680.80
- Claude Chrome Extension: 1.0.62
Steps to Reproduce
- Ensure Claude Desktop is not running (it competes for the same extension)
- Disable
com.anthropic.claude_browser_extension.json(Desktop's native host config) - Start Chrome with the Claude extension active
- Start Claude Code with
claude --chrome - Try any
mcp__claude-in-chrome__*tool → always returns "Browser extension is not connected"
Diagnosis
The native messaging host starts correctly (spawned by Chrome when extension activates):
/Users/user/.local/share/claude/versions/2.1.77 --chrome-native-host
The bridge socket is created:
/tmp/claude-mcp-browser-bridge-user/{PID}.sock
But the main Claude Code process never connects to this socket:
# Native host has the socket
$ lsof -p <native-host-pid> | grep sock
2.1.77 PID user 4u unix ... /tmp/claude-mcp-browser-bridge-user/PID.sock
# Main Claude Code process does NOT connect to it
$ lsof -p <claude-code-pid> | grep browser-bridge
# (empty - no connection)
Additional Issues Found
--resume --chromedoes not work together: When using--resume, the Chrome MCP bridge is never initialized, even with--chromeflag present.
- Claude Desktop auto-recreates native host config on startup:
com.anthropic.claude_browser_extension.jsonis regenerated every time Claude Desktop starts, hijacking the Chrome extension connection even after manual deactivation. Both Desktop and Code claim the same extension ID (fcoeoabgfenejglbffodgkkbkcdhcgfn).
- Extension tries Desktop host first: The extension's service worker tries
com.anthropic.claude_browser_extension(Desktop) beforecom.anthropic.claude_code_browser_extension(Code), meaning Desktop always wins if both configs exist.
Expected Behavior
claude --chromeshould establish a connection to the browser-bridge socket--resume --chromeshould also initialize the Chrome MCP- Claude Desktop and Claude Code should not compete for the same extension, or there should be a clear priority/switching mechanism
Workaround
None found. The connection simply never establishes regardless of configuration.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗