Chrome extension not connecting: native host running but MCP bridge fails (macOS 26.3, Chrome 144)

Resolved 💬 3 comments Opened Feb 15, 2026 by chadneal Closed Feb 19, 2026

Bug Description

The Claude in Chrome browser extension cannot establish a connection from Claude Code despite the native host process running and a socket being created. tabs_context_mcp always returns "Browser extension is not connected."

Environment

  • Claude Code: 2.1.42
  • macOS: 26.3 (Build 25D125)
  • Chrome: 144.0.7559.133
  • Extension: v1.0.50 (ID: fcoeoabgfenejglbffodgkkbkcdhcgfn, from Web Store)
  • Extension state in Secure Preferences: state: None, from_webstore: True
  • Extension permissions include: nativeMessaging, activeTab, debugger, downloads, alarms

Steps to Reproduce

  1. Install Claude extension from Chrome Web Store
  2. Both native messaging host configs point to Claude Code's binary (~/.claude/chrome/chrome-native-host)
  3. The com.anthropic.claude_browser_extension.json config is locked with uchg flag (per workaround for Desktop/Code conflict)
  4. Native host process spawns successfully (--chrome-native-host flag)
  5. Socket created at /tmp/claude-mcp-browser-bridge-chad/<pid>.sock with correct permissions (0600)
  6. Call tabs_context_mcp from Claude Code → always returns "Browser extension is not connected"

Diagnostic Details

Native host process running:

/Users/chad/.local/share/claude/versions/2.1.42 --chrome-native-host

Socket exists:

srw------- chad wheel /tmp/claude-mcp-browser-bridge-chad/32488.sock

Native host configs (both point to Code's binary):

com.anthropic.claude_browser_extension.json → ~/.claude/chrome/chrome-native-host (uchg locked)
com.anthropic.claude_code_browser_extension.json → ~/.claude/chrome/chrome-native-host

Testing the binary directly works:

$ echo '{"type":"ping"}' | ~/.claude/chrome/chrome-native-host
[Claude Chrome Native Host] Initializing...
[Claude Chrome Native Host] Creating socket listener: /tmp/claude-mcp-browser-bridge-chad/29772.sock
[Claude Chrome Native Host] Socket server listening for connections

What I've Tried

  • Full Chrome quit (Cmd+Q) and restart
  • Killing stale native host process + cleaning up old socket
  • switch_browser MCP tool
  • Reinstalling the extension from Chrome Web Store
  • Verifying nativeMessaging is in the extension's active permissions
  • Extension is installed in Default profile, confirmed via Secure Preferences

Expected Behavior

tabs_context_mcp should connect to the running Chrome extension and return available tabs.

Hypothesis

The native host process spawns and creates a socket, but the MCP server within Claude Code may not be discovering or connecting to the new socket. The extension's state: None in Secure Preferences (vs an expected integer like 1 for enabled) may indicate Chrome isn't fully activating the extension.

View original on GitHub ↗

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