Claude Desktop overwrites Claude Code's Chrome native messaging host manifest

Resolved 💬 3 comments Opened Jan 24, 2026 by scubashack808 Closed Jan 27, 2026

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

  1. Have both Claude Desktop and Claude Code installed
  2. Set up Claude Code's Chrome extension (working connection via ~/.claude/chrome/chrome-native-host)
  3. Launch or update Claude Desktop
  4. Claude Code's Chrome extension stops connecting — tabs_context_mcp returns "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

  1. Kill Desktop's native host process
  2. Overwrite the manifest to point to Claude Code's native host
  3. Lock the file with chflags uchg to prevent Desktop from overwriting it again
  4. 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)

View original on GitHub ↗

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