A privacy researcher says Anthropic silently installed a native messaging bridge into seven Chromium browsers, including ones not on the machine. The security community replied in two voices at once. Here is what the evidence actually shows, what Anthropic's own blog confirms, and where the spyware framing overreaches.
The evidence is a 300-byte JSON file that Chromium browsers consult before allowing an extension to invoke a local binary. Nothing exotic. What's unusual is how it arrived.
~/Library/Application Support/{Browser}/NativeMessagingHosts/
{
"name": "com.anthropic.claude_browser_extension",
"description": "Claude Browser Extension Native Host",
"path": "/Applications/Claude.app/Contents/Helpers/chrome-native-host",
"type": "stdio",
"allowed_origins": [
"chrome-extension://dihbgbndebgnbjfmelmegjepbnkhlgni/",
"chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/", // Claude in Chrome
"chrome-extension://dngcpimnedloihjnnfngkgjoidhnaolf/"
]
}
Three extension IDs are pre-authorised to spawn the helper binary. The middle one is Anthropic's public "Claude in Chrome" extension. The other two are unidentified at time of writing.
Installed locations on the researcher's test machine
Seven manifests, byte-for-byte identical (MD5 1e927a9e7796d0175a2a1f30028f4baa). Four land in parent directories Claude Desktop had to create because the browser itself is not installed. If any of those browsers is ever installed later, the bridge is already waiting.
~/Library/Logs/Claude/main.log
2026-03-21 14:54:40 [info] [Chrome Extension MCP] Installed native host manifest for Chrome 2026-03-21 14:54:40 [info] [Chrome Extension MCP] Installed native host manifest for Brave 2026-03-21 14:54:40 [info] [Chrome Extension MCP] Installed native host manifest for Edge 2026-03-21 14:54:40 [info] [Chrome Extension MCP] Installed native host manifest for Chromium 2026-03-21 14:54:40 [info] [Chrome Extension MCP] Installed native host manifest for Arc 2026-03-21 14:54:40 [info] [Chrome Extension MCP] Installed native host manifest for Vivaldi 2026-03-21 14:54:40 [info] [Chrome Extension MCP] Installed native host manifest for Opera 2026-03-21 14:54:40 [info] [Chrome Extension MCP] Native host installation complete
Internal subsystem name: Chrome Extension MCP. Thirty-one install events across log files. File modification timestamps show each manifest rewritten every launch. Deleting one does not make it stay deleted.
The helper binary is signed with Anthropic PBC's Developer ID certificate, bears an Apple RFC 3161 timestamp, and ships inside a notarised bundle. This is not a test artifact. It is a signed, notarised, shipped capability.
— Verified via codesign -dvv output in the post
Click any claim to see how it holds up against primary sources (Anthropic's own docs, GitHub issues, The Register, Malwarebytes, independent reviewers). Confidence ratings are mine.
At rest, the binary is dormant. These are the four steps from "user opens a web page" to "out-of-sandbox code runs as the user". Click a node to see what would have to happen.
The Lobsters thread and Malwarebytes' follow-up raised reasonable objections. These are the strongest ones, with my read on each.
connectNative(). So on a machine with no Claude browser extension installed, the binary never runs. This is mechanically true.Native Messaging is in use across password managers, security tools, note apps, and AI clients. The behaviour varies more than you'd think.
| Vendor | Asks before writing? | Writes to absent browsers? | Surfaces the integrations list in-app? | Removal persists? |
|---|---|---|---|---|
| Claude Desktop (Anthropic) | NO | YES · 7 browsers | NO | NO · rewrites on launch |
| 1Password | NO | YES | PARTIAL | NO |
| KeePassXC | YES · per browser | NO | YES · Settings tab | YES |
| Bitwarden | TOGGLE IN-APP | NO | YES | YES |
| Claude Code (same vendor, diff product) | IMPLICIT · CLI flag | ONLY ON /chrome | YES · /chrome status | PARTIAL |
Note the last row: Anthropic's other product, Claude Code, handles this substantially better. It installs the manifest only when the user runs /chrome and explicitly opts in. The pattern exists inside Anthropic already. Desktop just didn't adopt it.
If Claude Desktop is in your endpoint fleet or approved software list, this matters. Here is the framing I'd bring to a CISO conversation.
If you run a security team: what I'd do this week.
com.anthropic.claudefordesktop.fcoeoabgfenejglbffodgkkbkcdhcgfn). That's the combination that activates the bridge.~/Library/Application Support/*/NativeMessagingHosts/com.anthropic.*.json to your EDR monitoring path set. If they get rewritten outside a user-initiated Claude Desktop launch, that's an IOC.Hover or tap the copy button on any block. Works on macOS. For Linux, swap the base path to ~/.config.
DETECTION · MACOS
PROVENANCE CHECK
ADMIT-BY-LOG
REMEDIATION · NOTE: REAPPEARS ON LAUNCH
PERSISTENCE BREAK
ACTIVATION-GUARD CHECK