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

  1. Ensure Claude Desktop is not running (it competes for the same extension)
  2. Disable com.anthropic.claude_browser_extension.json (Desktop's native host config)
  3. Start Chrome with the Claude extension active
  4. Start Claude Code with claude --chrome
  5. 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

  1. --resume --chrome does not work together: When using --resume, the Chrome MCP bridge is never initialized, even with --chrome flag present.
  1. Claude Desktop auto-recreates native host config on startup: com.anthropic.claude_browser_extension.json is 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).
  1. Extension tries Desktop host first: The extension's service worker tries com.anthropic.claude_browser_extension (Desktop) before com.anthropic.claude_code_browser_extension (Code), meaning Desktop always wins if both configs exist.

Expected Behavior

  • claude --chrome should establish a connection to the browser-bridge socket
  • --resume --chrome should 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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗