Chrome integration: "Browser extension is not connected" on Linux despite healthy native host and socket

Resolved 💬 3 comments Opened Mar 16, 2026 by matiassemelman Closed Mar 20, 2026

Environment

┌──────────────────┬────────────────────────────────────────────┐
│ Component │ Version │
├──────────────────┼────────────────────────────────────────────┤
│ OS │ Ubuntu Linux, kernel 6.17.0-14-generic │
├──────────────────┼────────────────────────────────────────────┤
│ Claude Code │ v2.1.76 (launched with claude --chrome) │
├──────────────────┼────────────────────────────────────────────┤
│ Chrome Extension │ v1.0.36 (fcoeoabgfenejglbffodgkkbkcdhcgfn) │
├──────────────────┼────────────────────────────────────────────┤
│ Node │ v24.5.0 (nvm) │
└──────────────────┴────────────────────────────────────────────┘

Description

On Linux, the Chrome MCP integration reports "Browser extension is not connected" for all mcp__claude-in-chrome__* tool calls, even though the native messaging host, socket, and extension are all functioning correctly at the OS level.

What works

  • Native host process spawns correctly: Chrome → native messaging → node cli.js --chrome-native-host
  • Unix domain socket created at /tmp/claude-mcp-browser-bridge-<user>/<PID>.sock
  • Socket accepts connections (verified with python3 -c "import socket; s=socket.socket(socket.AF_UNIX); s.connect('<path>');")
  • /chrome command reports Status: Enabled, Extension: Installed
  • Extension has nativeMessaging permission granted
  • Native host manifest at ~/.config/google-chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json is valid
  • All file paths in manifest and wrapper script resolve correctly

What doesn't work

  • Every tool call (e.g. mcp__claude-in-chrome__tabs_context_mcp) returns: "Browser extension is not connected"
  • The Claude Code MCP client never connects to the bridge socket — verified with ss -xp showing 0 connected peers on the socket
  • Tools appear as deferred/available in the tool list but the underlying connection is never established

Steps to reproduce

  1. Install Claude Code v2.1.76 on Ubuntu Linux
  2. Install Chrome extension v1.0.36
  3. Run claude --chrome
  4. Verify /chrome shows Enabled + Installed
  5. Attempt any mcp__claude-in-chrome__* tool call
  6. Observe "Browser extension is not connected" error

What was tried

  1. Restarting Chrome completely
  2. Running /chrome → Reconnect extension
  3. Killing native host process and letting Chrome re-spawn it
  4. Cleaning stale socket files from /tmp/claude-mcp-browser-bridge-<user>/
  5. Starting Claude Code with --chrome flag
  6. Starting Claude Code with --dangerously-skip-permissions --chrome
  7. Updating Chrome browser to latest stable

None of these resolved the issue.

Hypothesis

The bridge socket is created and listening, but the Claude Code MCP client never connects to it. The architecture appears to be:

Chrome Extension ↔ Native Host ↔ Unix Socket ↔ Claude Code MCP Client

The left side of this chain (Extension → Native Host → Socket creation) works. The right side (Claude Code MCP Client → Socket) does not — ss -xp confirms zero connected clients on the socket.

The error message "Browser extension is not connected" is misleading. The extension IS connected (to the native host). The actual failure is that Claude Code's MCP client does not connect to the bridge socket, or the connection/handshake fails silently.

Expected behavior

Claude Code should discover and connect to the bridge socket, enabling mcp__claude-in-chrome__* tools to communicate with the browser.

Additional context

This may be Linux-specific. The socket discovery mechanism (scanning /tmp/claude-mcp-browser-bridge-<user>/) appears to find the socket file, but no connection is established. There are no relevant error logs surfaced to the user.

View original on GitHub ↗

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