Chrome MCP "extension not connected" — installed extension never invokes Claude Code native host (com.anthropic.claude_code_browser_extension orphaned)

Resolved 💬 3 comments Opened May 16, 2026 by zhian14 Closed May 20, 2026

Summary

Chrome MCP tools (mcp__claude-in-chrome__*) consistently return
"Browser extension is not connected" despite the entire native-messaging
chain on the CLI side being correctly installed and version-matched.

Root-cause diagnosis: the installed "Claude in Chrome (Beta)" extension
(ID fcoeoabgfenejglbffodgkkbkcdhcgfn) only opens a native-messaging
port to the Claude desktop app's host (com.anthropic.claude_browser_extension).
It never calls chrome.runtime.connectNative('com.anthropic.claude_code_browser_extension'),
so the Claude Code CLI's native-host wrapper is never spawned and the
CLI sees zero connected browsers.

## Environment

  • macOS Darwin 25.4.0 (Apple Silicon)
  • Chrome (latest stable)
  • Claude Code CLI 2.1.143 (/Users/<me>/.local/bin/claude)
  • Extension: Claude in Chrome (Beta) v1.0.70, ID fcoeoabgfenejglbffodgkkbkcdhcgfn, enabled, "On all sites", permission "Communicate with cooperating native applications"

granted

## Reproduction

  1. Install Claude Code CLI 2.1.143
  2. Install "Claude in Chrome (Beta)" v1.0.70 from claude.ai/chrome
  3. Sign in to claude.ai in the extension (works — sidepanel shows Sonnet 4.6 and responds)
  4. In Claude Code, attempt any Chrome MCP tool:

mcp__claude-in-chrome__tabs_context_mcp({ createIfEmpty: true })
mcp__claude-in-chrome__list_connected_browsers()

  1. Both return: Browser extension is not connected. Please ensure the Claude browser extension is installed and running…

## Diagnostic evidence

Native-messaging-host manifest is present and correct:
$ cat "~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json"
{
"name": "com.anthropic.claude_code_browser_extension",
"description": "Claude Code Browser Extension Native Host",
"path": "/Users//.claude/chrome/chrome-native-host",
"type": "stdio",
"allowed_origins": [
"chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/"
]
}

  • allowed_origins matches the installed extension's ID exactly ✓

Wrapper script exists and exec's the correct version:
$ cat ~/.claude/chrome/chrome-native-host
#!/bin/sh
exec "/Users//.local/share/claude/versions/2.1.143" --chrome-native-host

  • Binary 2.1.143 exists, is executable, matches running claude --version

The CLI's native-host wrapper is never invoked by Chrome:
$ ps aux | grep chrome-native-host
11414 ... /Applications/Claude.app/Contents/Helpers/chrome-native-host chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/
11357 ... /Applications/Claude.app/Contents/Helpers/chrome-native-host chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/
Only the Claude desktop app's native host is running (two instances).
Zero instances of ~/.claude/chrome/chrome-native-host (the CLI's wrapper).

## Expected behavior

The same Chrome extension should be able to connect to the Claude Code CLI's
native host, allowing mcp__claude-in-chrome__* tools to drive the browser
from within claude CLI sessions.

## Actual behavior

Extension only opens a native-messaging port to the Claude desktop app's
host. The CLI's properly-installed-and-allowed native host
(com.anthropic.claude_code_browser_extension) is never targeted —
appears orphaned on the released extension.

## Hypothesis (best guess)

Either:

  1. The released Chrome extension hasn't been updated to also call

connectNative('com.anthropic.claude_code_browser_extension'), or

  1. There's a flag/setting needed to switch the extension from

"desktop app mode" to "CLI mode" that I can't find in the extension UI

View original on GitHub ↗

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