claude-code - 💡(How to fix) Fix Claude in Chrome: bridge rejects valid OAuth token with "Invalid token or user mismatch" [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#46757Fetched 2026-04-12 13:33:51
View on GitHub
Comments
1
Participants
2
Timeline
5
Reactions
0
Timeline (top)
labeled ×4commented ×1

Chrome extension cannot authenticate with wss://bridge.claudeusercontent.com, so Claude Code CLI always reports "Browser extension is not connected" even though the extension is correctly installed and signed in.

Environment

  • Account: [email protected] (Max plan, organization admin)
  • Claude Code: 2.1.101
  • Chrome: 147.0.7727.56 (arm64, macOS 25.2.0)
  • Claude in Chrome extension: 1.0.66 (Beta)
  • Region: Taiwan (also tested with US VPN — same result)

Expected behavior

mcp__claude-in-chrome__tabs_context_mcp returns tab information from the connected Chrome extension.

Actual behavior

Tool call always returns:

Browser extension is not connected. Please ensure the Claude browser extension is installed and running...

Reproduction

  1. Install Claude in Chrome extension and complete OAuth login via Options page
  2. Verify tokens are stored: chrome.storage.local has valid accessToken, refreshToken, tokenExpiry, accountUuid, bridgeDeviceId
  3. Call any Claude in Chrome MCP tool from Claude Code CLI → fails

Diagnosis

From the extension's service worker console, the Pa() bridge connection flow always fails at the connect message:

const ws = new WebSocket(`wss://bridge.claudeusercontent.com/chrome/${accountUuid}`);
ws.onopen = () => ws.send(JSON.stringify({
  type: 'connect',
  client_type: 'chrome-extension',
  device_id: bridgeDeviceId,
  os_platform: 'macOS',
  extension_version: '1.0.66',
  oauth_token: accessToken
}));

Response:
MSG: {"type":"error","error":"Invalid token or user mismatch"}
CLOSE: 1008 Auth failed

What we verified

-The accessToken is valid — GET https://api.anthropic.com/api/oauth/profile with the same token returns HTTP 200 with correct account data, and account.uuid matches the URL path UUID.
- ✅ ping messages to the bridge get pong back (bridge is reachable and WebSocket itself works).
- ❌ connect messages always fail with the same error, regardless of:
  - client_type: both chrome-extension and claude-code
  - URL path UUID: tried account UUID, organization UUID, and application UUID
  - Bridge environment: same on both prod (bridge.claudeusercontent.com) and staging (bridge-staging.claudeusercontent.com)
  - Network: same on direct Taiwan connection and US VPN

The OAuth scopes on the issued token are user:profile user:inference user:chat (from the extension's OAuth config). Possibly the bridge requires an additional scope or server-side entitlement this account doesn't
 have.

Error Message

MSG: {"type":"error","error":"Invalid token or user mismatch"}

  • ❌ connect messages always fail with the same error, regardless of:

Root Cause

Chrome extension cannot authenticate with wss://bridge.claudeusercontent.com, so Claude Code CLI always reports "Browser extension is not connected" even though the extension is correctly installed and signed in.

Environment

  • Account: [email protected] (Max plan, organization admin)
  • Claude Code: 2.1.101
  • Chrome: 147.0.7727.56 (arm64, macOS 25.2.0)
  • Claude in Chrome extension: 1.0.66 (Beta)
  • Region: Taiwan (also tested with US VPN — same result)

Expected behavior

mcp__claude-in-chrome__tabs_context_mcp returns tab information from the connected Chrome extension.

Actual behavior

Tool call always returns:

Browser extension is not connected. Please ensure the Claude browser extension is installed and running...

Reproduction

  1. Install Claude in Chrome extension and complete OAuth login via Options page
  2. Verify tokens are stored: chrome.storage.local has valid accessToken, refreshToken, tokenExpiry, accountUuid, bridgeDeviceId
  3. Call any Claude in Chrome MCP tool from Claude Code CLI → fails

Diagnosis

From the extension's service worker console, the Pa() bridge connection flow always fails at the connect message:

const ws = new WebSocket(`wss://bridge.claudeusercontent.com/chrome/${accountUuid}`);
ws.onopen = () => ws.send(JSON.stringify({
  type: 'connect',
  client_type: 'chrome-extension',
  device_id: bridgeDeviceId,
  os_platform: 'macOS',
  extension_version: '1.0.66',
  oauth_token: accessToken
}));

Response:
MSG: {"type":"error","error":"Invalid token or user mismatch"}
CLOSE: 1008 Auth failed

What we verified

-The accessToken is valid — GET https://api.anthropic.com/api/oauth/profile with the same token returns HTTP 200 with correct account data, and account.uuid matches the URL path UUID.
- ✅ ping messages to the bridge get pong back (bridge is reachable and WebSocket itself works).
- ❌ connect messages always fail with the same error, regardless of:
  - client_type: both chrome-extension and claude-code
  - URL path UUID: tried account UUID, organization UUID, and application UUID
  - Bridge environment: same on both prod (bridge.claudeusercontent.com) and staging (bridge-staging.claudeusercontent.com)
  - Network: same on direct Taiwan connection and US VPN

The OAuth scopes on the issued token are user:profile user:inference user:chat (from the extension's OAuth config). Possibly the bridge requires an additional scope or server-side entitlement this account doesn't
 have.
RAW_BUFFERClick to expand / collapse

Summary

Chrome extension cannot authenticate with wss://bridge.claudeusercontent.com, so Claude Code CLI always reports "Browser extension is not connected" even though the extension is correctly installed and signed in.

Environment

  • Account: [email protected] (Max plan, organization admin)
  • Claude Code: 2.1.101
  • Chrome: 147.0.7727.56 (arm64, macOS 25.2.0)
  • Claude in Chrome extension: 1.0.66 (Beta)
  • Region: Taiwan (also tested with US VPN — same result)

Expected behavior

mcp__claude-in-chrome__tabs_context_mcp returns tab information from the connected Chrome extension.

Actual behavior

Tool call always returns:

Browser extension is not connected. Please ensure the Claude browser extension is installed and running...

Reproduction

  1. Install Claude in Chrome extension and complete OAuth login via Options page
  2. Verify tokens are stored: chrome.storage.local has valid accessToken, refreshToken, tokenExpiry, accountUuid, bridgeDeviceId
  3. Call any Claude in Chrome MCP tool from Claude Code CLI → fails

Diagnosis

From the extension's service worker console, the Pa() bridge connection flow always fails at the connect message:

const ws = new WebSocket(`wss://bridge.claudeusercontent.com/chrome/${accountUuid}`);
ws.onopen = () => ws.send(JSON.stringify({
  type: 'connect',
  client_type: 'chrome-extension',
  device_id: bridgeDeviceId,
  os_platform: 'macOS',
  extension_version: '1.0.66',
  oauth_token: accessToken
}));

Response:
MSG: {"type":"error","error":"Invalid token or user mismatch"}
CLOSE: 1008 Auth failed

What we verified

-The accessToken is valid — GET https://api.anthropic.com/api/oauth/profile with the same token returns HTTP 200 with correct account data, and account.uuid matches the URL path UUID.
- ✅ ping messages to the bridge get pong back (bridge is reachable and WebSocket itself works).
- ❌ connect messages always fail with the same error, regardless of:
  - client_type: both chrome-extension and claude-code
  - URL path UUID: tried account UUID, organization UUID, and application UUID
  - Bridge environment: same on both prod (bridge.claudeusercontent.com) and staging (bridge-staging.claudeusercontent.com)
  - Network: same on direct Taiwan connection and US VPN

The OAuth scopes on the issued token are user:profile user:inference user:chat (from the extension's OAuth config). Possibly the bridge requires an additional scope or server-side entitlement this account doesn't
 have.

extent analysis

TL;DR

The Chrome extension's authentication with the Claude bridge may be failing due to insufficient OAuth scopes or missing server-side entitlements.

Guidance

  • Verify the required OAuth scopes for the Claude bridge connection, ensuring that the accessToken has the necessary permissions.
  • Check the server-side entitlements for the account, as the issue might be related to missing or insufficient entitlements.
  • Test the connection with an accessToken that has a broader set of scopes, such as user:admin or claude:bridge, to determine if the issue is scope-related.
  • Review the Claude bridge documentation to ensure that the client_type and device_id are correctly formatted and match the expected values.

Example

No code snippet is provided, as the issue is more related to configuration and authentication rather than code.

Notes

The issue may be specific to the account or organization configuration, and further investigation is needed to determine the root cause. The provided information suggests that the accessToken is valid for other API calls, but the bridge connection requires additional scopes or entitlements.

Recommendation

Apply workaround: Test the connection with an accessToken that has a broader set of scopes to determine if the issue is scope-related. This will help to identify if the problem is due to insufficient OAuth scopes or missing server-side entitlements.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Claude in Chrome: bridge rejects valid OAuth token with "Invalid token or user mismatch" [1 comments, 2 participants]