[BUG] Claude in Chrome MCP: socket connects but native host doesn't respond to MCP messages
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The claude-in-chrome MCP tool (tabs_context_mcp, switch_browser, etc.) always returns "Browser extension is not connected" even though:
- The Chrome extension (
fcoeoabgfenejglbffodgkkbkcdhcgfn) is installed and active - The native host process is running with the correct Claude Code version
- The Unix socket is created at
/tmp/claude-mcp-browser-bridge-{user}/{PID}.sock - The socket accepts connections (verified via Python
socket.connect()) - But the socket returns empty response to MCP
initializemessages
The native messaging manifest is correctly configured and Chrome starts the native host process. However, the native host doesn't respond to any MCP protocol messages sent through the socket.
What Should Happen?
mcp__claude-in-chrome__tabs_context_mcp should successfully connect to the browser and return tab information.
Error Messages/Logs
Browser extension is not connected. Please ensure the Claude browser extension is installed and running
(https://claude.ai/chrome), and that you are logged into claude.ai with the same account as Claude Code.
Socket diagnostic (Python):
Socket connected: OK
Sent: {"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"capabilities": {}}}
Response: b'' (empty)
Steps to Reproduce
- Install Claude Code 2.1.55
- Install Claude browser extension in Chrome
- Log into claude.ai with the same account
- Start Claude Code CLI (
claude) - Run
/chrome - Call
mcp__claude-in-chrome__tabs_context_mcp→ returns "not connected"
Verified:
- Socket exists and accepts connections
- Native host process runs correct binary version (2.1.55)
- Chrome fully restarted multiple times
- Extension reinstalled multiple times
- Claude Code reinstalled from scratch
- Native messaging manifest is correct
Claude Model
Opus
Is this a regression?
I don't know
Claude Code Version
2.1.55
Platform
Anthropic API
Operating System
macOS (Darwin 24.4.0, arm64)
Terminal/Shell
zsh (iTerm2 / default Terminal)
Additional Information
Native messaging manifest (com.anthropic.claude_code_browser_extension.json):
{
"name": "com.anthropic.claude_code_browser_extension",
"description": "Claude Code Browser Extension Native Host",
"path": "/Users/<user>/.claude/chrome/chrome-native-host",
"type": "stdio",
"allowed_origins": [
"chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/"
]
}
Native host wrapper (~/.claude/chrome/chrome-native-host):
#!/bin/sh
exec "/Users/<user>/.local/share/claude/versions/2.1.55" --chrome-native-host
Process info:
/Users/<user>/.local/share/claude/versions/2.1.55 --chrome-native-host
Socket file exists and is connectable but returns no data. The bridge between Chrome extension ↔ native host ↔ MCP appears to be broken at the native host layer.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗