[BUG] Claude in Chrome MCP: socket connects but native host doesn't respond to MCP messages

Resolved 💬 3 comments Opened Feb 25, 2026 by kalaomer Closed Feb 25, 2026

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:

  1. The Chrome extension (fcoeoabgfenejglbffodgkkbkcdhcgfn) is installed and active
  2. The native host process is running with the correct Claude Code version
  3. The Unix socket is created at /tmp/claude-mcp-browser-bridge-{user}/{PID}.sock
  4. The socket accepts connections (verified via Python socket.connect())
  5. But the socket returns empty response to MCP initialize messages

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

  1. Install Claude Code 2.1.55
  2. Install Claude browser extension in Chrome
  3. Log into claude.ai with the same account
  4. Start Claude Code CLI (claude)
  5. Run /chrome
  6. 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.

View original on GitHub ↗

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