[BUG] Claude in Chrome bridge permanently rejects valid tokens with "Invalid token or user mismatch" for Cowork — server-side stale state

Resolved 💬 4 comments Opened Feb 20, 2026 by nicha16 Closed Feb 27, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Claude in Chrome connector in Cowork permanently fails to connect via the WebSocket bridge. The bridge accepts the WebSocket handshake (status 101) but immediately rejects the application-level auth message with "Invalid token or user mismatch" (close code 1008).

This persists after clearing every possible client-side token/cache store, including Claude Desktop Electron auth, Chrome cookies, IndexedDB, Service Workers, extension LevelDB, and extension runtime storage via chrome.storage.local.clear(). The bridge UUID never changes, indicating stale server-side state that no client-side fix can resolve.

This appears related to #24593, #25151, and #26305, but those involve Claude Code CLI. This is purely Claude Desktop (Cowork) ↔ Chrome extension via the cloud bridge.

What Should Happen?

Claude Desktop should successfully connect to the Chrome extension via the WebSocket bridge at bridge.claudeusercontent.com and establish a working session, allowing Cowork to use Claude in Chrome for browser automation tasks.

Expected Behavior
Claude Desktop should connect to the bridge and establish a session with the Chrome extension.

Actual Behavior
From ~/Library/Logs/Claude/main.log:
[Claude in Chrome] ensureConnected called, connected=false, authenticated=false, wsState=undefined
[Claude in Chrome] Connecting to bridge: wss://bridge.claudeusercontent.com/chrome/5e216c8a-9c47-48cd-83a8-4b694c83c64d
[Claude in Chrome] WebSocket connected, sending connect message
[Claude in Chrome] Bridge error: Invalid token or user mismatch
[Claude in Chrome] Bridge connection closed (code: 1008, duration: 0ms)
[Claude in Chrome] No longer connecting, giving up

This repeats indefinitely on every retry attempt.

Meanwhile, chrome-native-host.log shows:
Chrome native host starting (version 0.1.0)
Socket created successfully at: /tmp/claude-mcp-browser-bridge-nicha/3714.sock
Socket server listening for connections

The native host infrastructure works perfectly. The Control Chrome (Desktop MCP) connector also works perfectly — full handshake, all 10 tools registered. Only the Claude in Chrome cloud bridge fails.

Error Messages/Logs

[Claude in Chrome] ensureConnected called, connected=false, authenticated=false, wsState=undefined
[Claude in Chrome] Connecting to bridge: wss://bridge.claudeusercontent.com/chrome/5e216c8a-9c47-48cd-83a8-4b694c83c64d
[Claude in Chrome] WebSocket connected, sending connect message
[Claude in Chrome] Bridge error: Invalid token or user mismatch
[Claude in Chrome] Bridge connection closed (code: 1008, duration: 0ms)
[Claude in Chrome] No longer connecting, giving up

Steps to Reproduce

Environment

OS: macOS (Apple Silicon), Sequoia
Claude Desktop: v1.1.3770
Claude in Chrome extension: v1.0.53
Chrome native host: v0.1.0
Plan: Max (single account, no Team/Enterprise)
Auth method: Email magic link (consistent across all sign-in points)
Claude Code CLI: Not installed

Steps to Reproduce

Open Chrome with Claude in Chrome extension installed and signed in
Open Claude Desktop → Settings → Connectors → Claude in Chrome enabled
Open Cowork → enable Claude in Chrome in connector dropdown
Claude Desktop attempts to connect to bridge → immediately rejected

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Claude Desktop: v1.1.3770

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

Key Identifiers

Bridge UUID: 5e216c8a-9c47-48cd-83a8-4b694c83c64d (never changes despite full client wipes)
Organization ID: 890e15de-808d-4809-a44b-2216f5c8a5a4
Extension bridgeDeviceId: 08971388-c855-40cf-9776-dc4f5e08992a (regenerated fresh after wipe, still rejected)

Network Evidence
Chrome DevTools Network tab (filtered to WebSocket) shows 59 connection attempts to wss://bridge.claudeusercontent.com/chrome/5e216c8a-9c47-48cd-83a8-4b694c83c64d, all returning status 101 (WebSocket upgrade succeeds) but 0 kB transferred (rejected at application layer before any data exchange).
Client-Side Troubleshooting Exhausted
All of the following were attempted, none resolved the issue:

Standard restart cycle (quit Chrome → quit Desktop → reopen Chrome → reopen Desktop)
Sign out / sign in of Chrome extension
Cleared Chrome cookies for claude.ai and anthropic.com
Cleared Claude Desktop Electron auth cache (Local Storage/, Session Storage/, Cookies, Cookies-journal under ~/Library/Application Support/Claude/)
Deleted Chrome extension LevelDB (~/Library/Application Support/Google/Chrome/Default/Local Extension Settings/fcoeoabgfenejglbffodgkkbkcdhcgfn/)
Deleted Chrome IndexedDB and Service Worker data for claude.ai
Cleared Desktop OAuth token cache (confirmed fresh token obtained on reconnect)
Cleared bridge sockets (rm -rf /tmp/claude-mcp-browser-bridge-$USER/)
Fully uninstalled and reinstalled Chrome extension from Chrome Web Store
Toggled Claude in Chrome connector OFF/ON in Desktop Settings multiple times
Cleared extension runtime storage via DevTools console (chrome.storage.local.clear() + chrome.runtime.reload())
Verified: single Chrome profile, single account, consistent email magic link auth method everywhere, no Claude Code CLI installed

Root Cause Analysis
The bridge UUID 5e216c8a-9c47-48cd-83a8-4b694c83c64d is not stored locally — it appears to be derived or assigned server-side. After every client-side wipe, Desktop obtains a fresh OAuth token, the extension gets a fresh bridgeDeviceId, but the bridge server continues to reject with the same error on the same UUID.
This strongly suggests the bridge server has cached identity state (possibly from a previous session or auth context) that doesn't match freshly issued tokens, and no client-side action can clear it.
Request
Please investigate and reset the bridge state for this account on bridge.claudeusercontent.com.

View original on GitHub ↗

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