Claude Code CLI never connects to its own bridge socket after Chrome extension reconnect (macOS, v2.1.119)

Resolved 💬 5 comments Opened Apr 26, 2026 by nanahikaritentou Closed May 5, 2026

Summary

After cleanly setting up Claude in Chrome on macOS, the chrome-native-host helper
spawns correctly and listens on a bridge socket, but no Claude Code CLI session
ever connects to that socket as an MCP client. Every chrome MCP tool call
returns `No Chrome extension connected`.

Environment

  • macOS Darwin 24.5.0
  • Claude Code v2.1.119 (build 2026-04-23, git 6f68554)
  • Chrome with the official Claude extension `fcoeoabgfenejglbffodgkkbkcdhcgfn`

Verified state (everything looks correct)

  • Manifest: `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json` present, allowed_origin matches the extension ID
  • Wrapper: `~/.claude/chrome/chrome-native-host exec's claude --chrome-native-host`
  • Helper: `claude --chrome-native-host (parent = Google Chrome) running, FD0/FD1 are pipes to Chrome, FD4 is the listening unix socket at /tmp/claude-mcp-browser-bridge-\$USER/\$PID.sock`
  • `~/.claude.json: cachedChromeExtensionInstalled=true, claudeInChromeDefaultEnabled=true, hasCompletedClaudeInChromeOnboarding=true`
  • `/chrome` UI shows the integration enabled by default; pressing "Reconnect extension" respawns the helper cleanly

Symptom

  • `lsof on every running claude CLI process: no FD opened against /tmp/claude-mcp-browser-bridge-\$USER/*.sock`
  • Helper log never reaches `Accepted new MCP connection` for the current PID
  • All `mcp__claude-in-chrome__* tool calls fail with No Chrome extension connected`

What I tried (none worked)

  • Restarting the CLI session entirely (fresh `claude` process)
  • `/chrome` → "Reconnect extension" multiple times
  • `kill` on stale helper, removing orphan sockets, full removal of bridge dir
  • Removing/regenerating manifest + wrapper via `/chrome`
  • Toggling extension off/on in `chrome://extensions`

Background context that may matter

On systems where the Claude desktop app is also installed, two native-messaging
manifests share the same `allowed_origins (fcoeoabgfenejglbffodgkkbkcdhcgfn`):

  • `com.anthropic.claude_browser_extension (desktop, /Applications/Claude.app/Contents/Helpers/chrome-native-host`)
  • `com.anthropic.claude_code_browser_extension (CLI, ~/.claude/chrome/chrome-native-host`)

The extension always picks the desktop host name when both manifests are present.
Even after uninstalling the desktop app and removing the desktop manifest, the
CLI side does not auto-pair: the helper spawns and listens, but the CLI process
never opens a client connection to the bridge socket.

Expected behavior

After `/chrome → "Reconnect extension", any active Claude Code CLI session
should establish an MCP client connection to the freshly-spawned helper's bridge
socket, so that
mcp__claude-in-chrome__*` tools work.

View original on GitHub ↗

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