Claude Desktop overwrites Claude Code's Chrome native messaging host manifest
Bug Description
Claude Desktop and Claude Code both register a native messaging host with the identifier com.anthropic.claude_browser_extension at ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json. When Desktop launches or updates, it overwrites the manifest to point to its own binary (/Applications/Claude.app/Contents/Helpers/chrome-native-host), breaking the Chrome extension connection for Claude Code users.
Steps to Reproduce
- Have both Claude Desktop and Claude Code installed
- Set up Claude Code's Chrome extension (working connection via
~/.claude/chrome/chrome-native-host) - Launch or update Claude Desktop
- Claude Code's Chrome extension stops connecting —
tabs_context_mcpreturns "Browser extension is not connected"
Root Cause
Both apps register a manifest with the same name field (com.anthropic.claude_browser_extension). Desktop's manifest points to /Applications/Claude.app/Contents/Helpers/chrome-native-host, overwriting Claude Code's manifest that points to ~/.claude/chrome/chrome-native-host. Chrome then connects the extension to Desktop's native host instead of Claude Code's.
Workaround
- Kill Desktop's native host process
- Overwrite the manifest to point to Claude Code's native host
- Lock the file with
chflags uchgto prevent Desktop from overwriting it again - Restart Chrome
Expected Behavior
Desktop and Code should either use different native host identifiers or coordinate so they don't silently hijack each other's Chrome extension connection.
Environment
- macOS (Darwin 24.6.0)
- Claude Code 2.1.19
- Claude Desktop (latest)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗