Chrome integration regression: "Invalid token or user mismatch" since v2.1.38/2.1.39 (was working in 2.1.37)
Summary
Claude in Chrome browser automation worked perfectly in v2.1.37 (Feb 9-10) and broke starting in v2.1.39 (Feb 12). The WebSocket bridge at bridge.claudeusercontent.com now rejects every connection with "Invalid token or user mismatch" (close code 1008). This is a regression, not a new setup issue.
Evidence: Before and After
Working (v2.1.37, Feb 9-10)
2026-02-09T09:52:57 CALL tabs_context_mcp
2026-02-09T09:53:02 → SUCCESS (availableTabs returned with real tabIds)
2026-02-09T09:53:07 CALL navigate → SUCCESS (navigated to internal site)
2026-02-09T10:29:14 CALL computer → SUCCESS (screenshot captured)
Full browser automation working: navigation, screenshots, form interaction, tab management. 6 successful tool calls, 0 failures in that session.
Broken (v2.1.39+, Feb 12 onwards)
2026-02-12T05:14:21 CALL tabs_context_mcp
2026-02-12T05:14:22 → FAILED: Browser extension is not connected
Every session from v2.1.39 through current v2.1.63 fails identically. 0 successes across dozens of sessions over 3 weeks.
Bridge error (debug log)
[Claude in Chrome] Connecting to bridge: wss://bridge.claudeusercontent.com/chrome/<account-uuid>
[Claude in Chrome] WebSocket connected, sending connect message
[Claude in Chrome] Bridge received: {"type":"error","error":"Invalid token or user mismatch"}
[Claude in Chrome] Bridge connection closed (code: 1008, duration: 0ms)
[Claude in Chrome] Bridge reconnecting in 3000ms (attempt 2)
The WebSocket connects fine. The bridge rejects the OAuth token in the auth handshake. This repeats every 30 seconds until the retry limit is reached.
Environment
- macOS: 26.2 (Apple Silicon / arm64)
- Claude Code: v2.1.63 (broken since v2.1.39)
- Last working version: v2.1.37
- Chrome extension: v1.0.56
- Plan: Max (direct Anthropic, not Bedrock/Vertex)
- Account: Same account throughout, confirmed matching in both CLI and extension
What I've Tried
All of these made no difference:
- Removed Claude Desktop entirely (uninstalled from /Applications)
- Removed Claude Desktop's native messaging host config (
com.anthropic.claude_browser_extension.json) to eliminate collision - Full
claude logout→claude logincycle - Restarted Chrome multiple times
- Restarted Claude Code (fresh sessions)
- Ran
/chrome→ "Reconnect extension" - Started with
claude --chromeflag - Killed stale
--chrome-native-hostprocesses - Killed all other Claude Code sessions
- Verified extension enabled in
chrome://extensions/ - Verified same email account in both CLI config and claude.ai
Config State
// ~/.claude.json (relevant fields)
{
"hasCompletedClaudeInChromeOnboarding": true,
"cachedChromeExtensionInstalled": true,
"claudeInChromeDefaultEnabled": true
}
// Feature flag (server-side, cannot override locally)
// cachedGrowthBookFeatures:
"tengu_chrome_auto_enable": false
Note: tengu_chrome_auto_enable is false but the feature was working in v2.1.37 with presumably the same flag state. So either the flag wasn't checked in v2.1.37 and a new gate was added in v2.1.38+, or the flag was true and got flipped server-side around the same time.
Native Messaging Host
// ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/
// com.anthropic.claude_code_browser_extension.json
{
"name": "com.anthropic.claude_code_browser_extension",
"description": "Claude Code Browser Extension Native Host",
"path": "/Users/<redacted>/.claude/chrome/chrome-native-host",
"type": "stdio",
"allowed_origins": ["chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/"]
}
Related Issues
- #25618 — Same "Invalid token or user mismatch" error (closed as not planned)
- #25736 — macOS duplicate (closed)
- #29528 — Similar report with feature flag analysis
The difference: this is a confirmed regression with exact version pinpointing (working in 2.1.37, broken in 2.1.39), not a fresh install problem. Session JSONL logs provide before/after proof from the same machine and account.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗