Claude in Chrome MCP: "Browser extension is not connected" despite working native messaging
Resolved 💬 3 comments Opened Apr 15, 2026 by chrismudrovich Closed Apr 19, 2026
Description
Claude in Chrome consistently returns "Browser extension is not connected" when calling MCP tools (e.g., tabs_context_mcp), despite the native messaging host functioning correctly.
## Environment
- Claude Code: 2.1.109
- Chrome Extension: 1.0.68
- Chrome: 147.0.7727.56
- macOS: Darwin 25.4.0 (Sequoia)
- Launch command:
claude --chrome
## What works
- Extension is installed, enabled, and shows Status: Enabled / Extension: Installed in
/chrome - Native messaging host config exists at
~/Library/ApplicationSupport/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json - Native host binary spawns correctly:
~/.local/share/claude/versions/2.1.109 --chrome-native-host - Socket created at
/tmp/claude-mcp-browser-bridge-<user>/<pid>.sock chrome.runtime.sendNativeMessage("com.anthropic.claude_code_browser_extension", {type: "ping"}, ...)returns{type: "pong"}successfully from the extension service worker console- Socket accepts Unix domain socket connections
## What doesn't work
- Every
mcp__claude-in-chrome__*tool call returns "Browser extension is not connected" - Socket accepts connections but returns empty responses to MCP JSON-RPC messages
claude mcp listdoes not showclaude-in-chromeas a configured server
## Troubleshooting attempted
- Restarted Chrome and Claude Code multiple times
/chrome→ Reconnect extension (multiple times)- Disabled/re-enabled extension in chrome://extensions
- Killed stale native host process and let Chrome respawn it
- Closed all other Claude Code sessions to avoid socket conflicts
- Verified no chrome flags available (Chrome 147 removed PNA flags)
## Additional context
Had a conflicting native messaging host config from the Claude desktop app (com.anthropic.claude_browser_extension.json) that was routing to /Applications/Claude.app/Contents/Helpers/chrome-native-host instead of the CLI binary. Removed it and confirmed Chrome now spawns the correct CLI-based native host. Issue persists after cleanup.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗