[BUG] Claude in Chrome side panel (Cowork mode): GET /api/bootstrap returns 403 from extension context while identical authenticated request returns 200 from a claude.ai tab — endless sign-in loop

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 29, 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?

Environment

  • Claude in Chrome extension v1.0.85, new Cowork side panel mode
  • Chrome (latest stable), Windows 11
  • Account: Max plan; routingHint JWT flags include edge_default_route
  • Network: traffic routed through a self-hosted WireGuard VPN (Amnezia) with a datacenter exit IP; Cloudflare PoP FRA

Symptom

The new (Cowork) side panel cannot start a session. After signing in and completing onboarding, the embedded frame dies (crashed-frame icon / "claude.ai refused to connect"), then the panel falls back to the "Sign in to Claude" screen. Clicking "Sign in on claude.ai" opens claude.ai where I am already signed in. "Already signed in? Reload" does not help. Switching back to the classic side panel works fine.

Root cause observed via DevTools

The panel's bootstrap request fails:

  • GET https://claude.ai/api/bootstrap403 Forbidden (server: cloudflare, remote 160.79.104.10)
  • The request DOES include full session cookies (sessionKey, __cf_bm, anthropic-device-id, routingHint, ...) — verified in Request Headers, so this is not a third-party-cookie issue.

Meanwhile, the exact same request issued same-origin from a regular claude.ai tab, same Chrome profile, same IP, same cookies:

  • GET https://claude.ai/api/bootstrap200 OK with full account payload (cf-ray a32c24431945dc90-FRA)

Additional data point: in a regular claude.ai tab, GET https://claude.ai/manifest.json (a credential-less request) also returns 403, while all other ~135 page-load requests return 200.

Hypothesis

Edge/WAF filtering appears to reject requests whose fetch metadata differs from normal same-origin traffic (extension-context Origin: chrome-extension://... / Sec-Fetch-Site, or credential-less fetches), at least for datacenter-reputation IPs. This silently breaks the entire Cowork side panel while the website itself works flawlessly.

What I ruled out

  • Third-party cookie blocking (cookies are present on the 403 request)
  • Ad blockers and all extensions injecting into claude.ai (removed/disabled — no change)
  • Hardware acceleration off, Chrome updated, claude.ai site data cleared, fresh sign-in — no change

Expected behavior

Side panel bootstrap should succeed, or at least the panel should surface the 403 to the user instead of an endless sign-in loop.

What Should Happen?

The new Cowork side panel should bootstrap successfully using the existing claude.ai session (GET /api/bootstrap should return 200 from the extension context, as it does from a regular claude.ai tab). If the request is rejected, the panel should show the actual error instead of falling back to an endless "Sign in to Claude" loop.

Error Messages/Logs

Side panel DevTools, Network tab:

Request URL: https://claude.ai/api/bootstrap
Request Method: GET
Status Code: 403 Forbidden
Remote Address: 160.79.104.10:443
Referrer Policy: strict-origin-when-cross-origin
Request Cookie header: present, includes sessionKey, __cf_bm, anthropic-device-id, routingHint (values redacted)

Same request from a regular claude.ai tab (same profile, same IP, same cookies):

GET https://claude.ai/api/bootstrap -> 200 OK
server: cloudflare
cf-ray: a32c24431945dc90-FRA
body: full account payload

Also observed in the regular tab during a normal page load (all other requests 200):
GET https://claude.ai/manifest.json -> 403

Steps to Reproduce

  1. Sign in to claude.ai (Max plan) in Chrome; account/network such that traffic exits via a datacenter/VPN IP (self-hosted WireGuard, Cloudflare PoP FRA in my case)
  2. Install Claude in Chrome extension v1.0.85 and open the side panel in the new Cowork mode
  3. Click "Sign in on claude.ai" in the panel, complete sign-in and onboarding (accept permissions/risk dialogs)
  4. Panel's embedded frame goes blank with a crashed-frame icon, then "claude.ai refused to connect", then the panel returns to the "Sign in to Claude" screen
  5. Open DevTools on the side panel (right-click -> Inspect -> Network): GET https://claude.ai/api/bootstrap returns 403 Forbidden even though the request carries full session cookies
  6. For comparison, run the same request from a claude.ai tab console: await fetch('/api/bootstrap', {credentials:'include'}) -> 200 OK
  7. Switch the panel back to classic mode -> everything works

Claude Model

None

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

N/A — Claude in Chrome extension v1.0.85 (Cowork side panel)

Platform

Other

Operating System

Windows

Terminal/Shell

Other

Additional Information

_No response_

View original on GitHub ↗