Claude Code and Claude.app conflict over Chrome extension native messaging host

Resolved 💬 3 comments Opened Jan 26, 2026 by ashray Closed Jan 29, 2026

Bug Description

Claude Code and Claude.app (desktop) both register native messaging hosts for the same Chrome extension, causing a conflict where only one can work at a time.

Root Cause

Both apps use the same native messaging host name com.anthropic.claude_browser_extension for the Chrome extension ID fcoeoabgfenejglbffodgkkbkcdhcgfn:

  1. Claude.app registers:
  • ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json
  • Points to: /Applications/Claude.app/Contents/Helpers/chrome-native-host
  1. Claude Code registers:
  • ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json
  • Points to: ~/.claude/chrome/chrome-native-host

However, the Chrome extension calls chrome.runtime.connectNative("com.anthropic.claude_browser_extension"), so it always connects to Claude.app's native host, even when Claude.app is closed.

Symptoms

  • Claude Code browser automation returns "Browser extension is not connected"
  • Debug logs show MCP server "successfully connected" but tools fail
  • Process list shows Claude.app's chrome-native-host running even when Claude.app is quit

Current Workaround

Manually modify com.anthropic.claude_browser_extension.json to point to Claude Code's native host instead:

{
  "name": "com.anthropic.claude_browser_extension",
  "path": "~/.claude/chrome/chrome-native-host",
  ...
}

Then restart Chrome.

Suggested Fix

  1. Have Claude Code use a different native messaging host name that doesn't conflict with Claude.app
  2. Or have the Chrome extension support connecting to either host based on context
  3. Or provide a user-facing toggle to choose which app handles browser automation

Environment

  • macOS Darwin 25.1.0
  • Claude Code version 2.1.19
  • Claude.app installed alongside Claude Code

View original on GitHub ↗

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