Claude in Chrome: extension never connects to Claude Code CLI (macOS)

Resolved 💬 3 comments Opened May 27, 2026 by gustavosmendes Closed Jun 28, 2026

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-host
  • com.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

  1. Install Claude Code CLI 2.1.152
  2. Install Claude in Chrome extension from Web Store
  3. Have Claude.app Desktop also installed
  4. Log into claude.ai in Chrome
  5. Run mcp__claude-in-chrome__list_connected_browsers → always "not connected"

Questions

  1. Does claude-in-chrome require Claude Desktop app to be running and acting as bridge?
  2. Is there a known incompatibility between CLI 2.1.152 and extension 1.0.72?
  3. Should the extension connect to both native hosts simultaneously, or is the sequential first-wins approach intentional?

View original on GitHub ↗

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