Claude in Chrome: Native host conflict between Claude Desktop app and Claude Code

Resolved 💬 3 comments Opened Jan 23, 2026 by lanpublications Closed Jan 27, 2026

Description

When both the Claude Desktop app and Claude Code are installed, the Chrome extension's native messaging fails to connect to Claude Code. This is because both apps register native messaging hosts for the same Chrome extension ID, causing a conflict.

Environment

  • OS: macOS
  • Claude Code version: 2.1.15
  • Chrome extension version: 1.0.40
  • Claude Desktop app: Installed

Steps to Reproduce

  1. Have both Claude Desktop app and Claude Code installed
  2. Install the Claude in Chrome extension
  3. Run claude --chrome
  4. Attempt to use any Chrome tool (e.g., navigate to a URL)

Expected Behavior

Claude Code should be able to control Chrome via the extension.

Actual Behavior

The connection fails with ENOENT errors in the debug logs:

[Claude in Chrome] Socket error: Error: connect ENOENT /var/folders/.../claude-mcp-browser-bridge-username

The error occurs because Claude Code tries to connect to a Unix socket that doesn't exist - the Chrome extension is using the Claude Desktop app's native host instead of Claude Code's native host.

Root Cause

Two native messaging host manifests are registered in ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/:

  1. com.anthropic.claude_browser_extension.json (from Claude Desktop app)
  • Points to /Applications/Claude.app/Contents/Helpers/chrome-native-host
  • Includes extension ID fcoeoabgfenejglbffodgkkbkcdhcgfn
  1. com.anthropic.claude_code_browser_extension.json (from Claude Code)
  • Points to ~/.claude/chrome/chrome-native-host
  • Includes extension ID fcoeoabgfenejglbffodgkkbkcdhcgfn

Both manifests list the same extension ID in allowed_origins, causing the conflict.

Workaround

Renaming or removing the Claude Desktop app's native host config resolves the issue:

mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json.bak

Then restart Chrome.

Suggested Fix

The two products should either:

  1. Use different extension IDs for their respective Chrome integrations
  2. Share a single native host that can route to the appropriate backend
  3. Implement a mechanism to detect which product is active and use the correct native host

View original on GitHub ↗

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