Claude Code Chrome integration conflicts with Claude Desktop native messaging host

Resolved 💬 3 comments Opened Feb 5, 2026 by mickkhaw1981 Closed Feb 9, 2026

Description

Claude Code's Chrome integration (claude --chrome) fails to connect when Claude Desktop is also installed, because both applications register native messaging hosts for the same Chrome extension ID.

Environment

  • Claude Code CLI: 2.1.15
  • Claude in Chrome extension: 1.0.45
  • Claude Desktop: Installed
  • OS: macOS (Darwin 25.2.0)
  • Chrome: Latest

Steps to Reproduce

  1. Have both Claude Desktop and Claude Code installed
  2. Run claude --chrome or use /chrome in a session
  3. Attempt to use Chrome integration tools (screenshot, click, etc.)

Result: Browser extension is not connected error

Root Cause

Two native messaging host configs exist in ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/:

  1. com.anthropic.claude_browser_extension.json → Points to Claude Desktop (/Applications/Claude.app/Contents/Helpers/chrome-native-host)
  2. com.anthropic.claude_code_browser_extension.json → Points to Claude Code (~/.claude/chrome/chrome-native-host)

Both configs reference the same Chrome extension ID (fcoeoabgfenejglbffodgkkbkcdhcgfn), but Chrome routes all connections to Desktop's native host. Even when Desktop is quit, Chrome spawns Desktop's chrome-native-host process, leaving Claude Code unable to connect.

Workaround

Temporarily disable Claude Desktop's config:

# Kill Desktop's native host process
pgrep -l "chrome-native" | grep -v grep
# Note the PID, then:
kill <PID>

# Move Desktop's config out of the way
mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json ~/Desktop/

# Restart Chrome (Cmd+Q, then reopen)

To revert (restore Desktop integration):

mv ~/Desktop/com.anthropic.claude_browser_extension.json ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/
# Restart Chrome

Suggested Fixes

  1. Extension toggle: Add UI in Claude Chrome extension to choose backend (Desktop vs Code)
  2. Different extension IDs: Use separate Chrome extensions for Desktop and Code
  3. Priority system: Allow both configs to coexist with explicit priority/routing
  4. Documentation: At minimum, document this conflict and workaround

Additional Context

Once the workaround is applied, Claude Code's Chrome integration works correctly:

  • read_page
  • navigate
  • form_input
  • find

(Note: click, screenshot, and keyboard operations have a separate issue - "Cannot access chrome-extension:// URL of different extension" - which may be unrelated to this native host conflict.)

View original on GitHub ↗

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