Chrome extension not connecting: native host running but MCP bridge fails (macOS 26.3, Chrome 144)
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
- Install Claude extension from Chrome Web Store
- Both native messaging host configs point to Claude Code's binary (
~/.claude/chrome/chrome-native-host) - The
com.anthropic.claude_browser_extension.jsonconfig is locked withuchgflag (per workaround for Desktop/Code conflict) - Native host process spawns successfully (
--chrome-native-hostflag) - Socket created at
/tmp/claude-mcp-browser-bridge-chad/<pid>.sockwith correct permissions (0600) - Call
tabs_context_mcpfrom 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_browserMCP tool- Reinstalling the extension from Chrome Web Store
- Verifying
nativeMessagingis 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.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗