Claude Code Chrome integration fails to connect when Claude Desktop (Cowork) is also installed

Status Open
Reported on v2.1.59
Maintainer reply None cached
Activity 3 comments · opened Feb 26, 2026

Description

Claude Code's Chrome browser integration (tabs_context_mcp) never connects when Claude Desktop is also installed
with the Cowork/browser feature enabled. The extension remains in a disconnected state even with Claude Desktop fully
closed.

## Environment

  • Claude Code version: 2.1.59
  • Extension version: 1.0.56
  • Extension ID: fcoeoabgfenejglbffodgkkbkcdhcgfn
  • OS: macOS (Darwin 25.3.0)
  • Chrome: latest

## Root Cause (Investigated)
Both Claude Desktop and Claude Code register native messaging hosts for the same extension ID:

  • com.anthropic.claude_browser_extension/Applications/Claude.app/Contents/Helpers/chrome-native-host
  • com.anthropic.claude_code_browser_extension~/.claude/chrome/chrome-native-host

Claude Desktop force-installs the extension via Chrome's External Extensions policy (~/Library/Application
Support/Google/Chrome/External Extensions/fcoeoabgfenejglbffodgkkbkcdhcgfn.json
), causing Chrome to label it "Added
by a third-party". The extension's service worker opens the Desktop Cowork side panel UI but never initiates a
connection to Claude Code's native host.

## Steps to Reproduce

  1. Install Claude Desktop with Cowork/browser integration enabled
  2. Install Claude Code and set up Chrome integration
  3. Close Claude Desktop completely
  4. Attempt to use Claude Code's Chrome tools — connection always fails

## What Was Tried

  • Full Chrome restarts (multiple)
  • Removing and reinstalling the extension
  • Verified native messaging host config is correct with matching extension ID
  • Verified Claude Code binary is functional (native host creates socket successfully)
  • Verified account match (same email in Claude Code auth and claude.ai in Chrome)
  • Temporarily hiding Desktop's native messaging host file — did not resolve it

## Expected Behavior
Claude Code's Chrome integration should work independently of whether Claude Desktop is installed.

## Actual Behavior
tabs_context_mcp always returns: "Browser extension is not connected"

The extension only opens the Desktop Cowork side panel UI and does not connect to Claude Code's native messaging host.

View original on GitHub ↗

3 Comments

enkr1 · 5 months ago

Still experiencing this on macOS (Darwin 25.3.0, Chrome latest). tabs_context_mcp returns "Browser extension is not connected" consistently. Been broken for days. Any update on a fix? @anthropics/claude-code

alennugi · 5 months ago

Environment: macOS, Chrome with multiple profiles (Default + Profile 2, 7, 9, 10, 11, 12), Claude Desktop (Cowork mode)

Debugging session findings:

  1. chrome-native-host process starts successfully (PID visible in Activity Monitor) — Chrome ↔ native messaging host communication works
  2. The bridge from native host → Cowork VM is broken — tabs_context_mcp always returns "not connected"
  3. com.anthropic.claude_code_browser_extension.json and com.anthropic.claude_browser_extension.json both reference the same extension ID (fcoeoabgfenejglbffodgkkbkcdhcgfn), causing conflicts when both are active
  4. External Extensions policy (~/Library/Application Support/Google/Chrome/External Extensions/) force-installs the extension into ALL Chrome profiles — previous cleanup commands targeting only Default profile had no effect
  5. No Playwright/Puppeteer/Chromium processes running — no external automation conflict
  6. Full reinstall of Chrome + Claude Desktop + clearing all caches did not fix the issue (Chrome Sync restores extension state)
  7. Disabling External Extensions + re-authorizing extension + restarting Chrome — still fails

Conclusion: The native messaging host starts but cannot establish the socket connection back to the Cowork VM. This appears to be the same regression from the Feb 2026 Claude Desktop update.

ianm199 · 3 months ago

This is the same bug as #54567 — that thread has the full root-cause analysis: the extension's service worker probes com.anthropic.claude_browser_extension (Desktop) before com.anthropic.claude_code_browser_extension (CLI) and takes the first that returns pong.

Adding a repro data point for anyone landing here first:

  • Claude Code 2.1.132 / Extension 1.0.70 / Chrome 147 / macOS 15.3.2 — same failure mode.

Workaround that does work (refining "even with Claude Desktop fully closed" from the OP): quitting Claude.app is necessary but not sufficient. Chrome owns the native host process, so it stays alive after the GUI exits. You also need to kill the orphaned native host:

osascript -e 'quit app "Claude"'
pkill -f 'Claude.app/Contents/Helpers/chrome-native-host'

After that, the extension's onDisconnect fires, it re-probes the two host names, falls through to Claude Code's host, and the connection works. No Chrome restart or extension reinstall needed.