[BUG] Claude in Chrome: persistent 403 WebSocket handshake failure with user:null in feature flags response (Windows 11, Team plan)
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 extension fails to connect to the bridge with a persistent 403 WebSocket error.
The extension's offscreen.html repeatedly attempts to connect to
wss://bridge.claudeusercontent.com/chrome/{session-id} but receives
"Error during WebSocket handshake: Unexpected response code: 403".
The session ID in the bridge URL never changes across Claude Desktop restarts,
extension reloads, or re-authentication. The /claude_in_chrome feature flags
endpoint returns "user": null despite the user being authenticated (profile API
returns 200). The bridge connection never succeeds, so list_connected_browsers
always returns "not connected".
What Should Happen?
The Chrome extension should successfully establish a WebSocket connection
to the bridge, allowing Claude Desktop to detect the browser via
list_connected_browsers and enable browser automation tools.
Error Messages/Logs
[offscreen.html console]
WebSocket connection to 'wss://bridge.claudeusercontent.com/chrome/fac863cb-368f-46cc-824c-a92cf5c404ae'
failed: Error during WebSocket handshake: Unexpected response code: 403
[service worker network tab]
GET https://bridge.claudeusercontent.com/ → 426 (Upgrade Required) — confirms server IS reachable
WebSocket fac863cb-368f-46cc-824c-a92cf5c404ae → Finished (failed handshake, 403)
[/claude_in_chrome API response — key excerpt]
{ "features": { "chrome_ext_bridge_enabled": { "value": true, "on": true, "source": "defaultValue" } }, "user": null }
Steps to Reproduce
- Account has two organizations on the same email address:
one Team plan org (Utron) and one personal Free plan org
- Install Claude Desktop (Windows) and sign in with the Team plan org
- Install Claude in Chrome (Beta) extension v1.0.75
- In Claude Desktop Settings → Connectors, enable Claude in Chrome
- Click the extension icon → sign in → select the Team plan org
- Open chrome://extensions → Developer mode → inspect offscreen.html
- Observe: persistent 403 on WebSocket handshake to bridge.claudeusercontent.com
- Note: session ID in the bridge URL does not change across:
- Claude Desktop restarts
- Extension re-authentication
- Clearing extension site data and IndexedDB
Claude Model
Sonnet (default)
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
Claude Code Version: 2.1.160 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
This issue is specific to Claude in Chrome (the browser extension), not the CLI itself.
- Account has two orgs on the same email: Team plan (Utron) + personal Free plan
- Chrome is managed by organization
- Native messaging host is correctly registered in Windows registry
- Extension v1.0.75 is installed, enabled, signed in with Utron org
- Claude in Chrome connector is enabled in Desktop settings
- /claude_in_chrome feature flags API returns "user": null
- Session ID in bridge URL is identical across restarts and re-auths
- Profile API returns 200 — user IS authenticated
- Screenshots attached: offscreen.html 403 error, network tab showing failed WebSocket
<img width="988" height="579" alt="Image" src="https://github.com/user-attachments/assets/8d577c86-5df5-4417-89b2-d216dcc8fae4" />
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗