[BUG] Cowork OAuth exchange hangs indefinitely — no server response (macOS Apple Silicon)
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?
Cowork tab sits on "Authenticating" indefinitely. Regular Claude chat auth works fine on the same account. The Cowork VM boots healthily and reports Network status: CONNECTED and API reachability: REACHABLE — the failure is specifically in the Cowork OAuth client token exchange, which initiates but never receives a response.
When Cowork is opened, main.log shows the app correctly initiating the OAuth exchange using Cowork client ID a473d7bb-17ac-43a7-abc0-a1343d7c2805:
LocalAgentModeSessions.start:
using oauth config {
apiHost: 'https://api.anthropic.com',
clientId: 'a473d7bb-17ac-43a7-abc0-a1343d7c2805',
redirectUri: 'https://console.anthropic.com/oauth/code/callback',
scope: 'user:inference user:file_upload user:profile',
domain: '.claude.ai'
}
[oauth] no cached token found for orgId=<redacted>
[oauth] performing fresh oauth exchange for orgId=<redacted>
The exchange then hangs — no success log, no error log, no HTTP response logged. Differs from #33216 in that no 500 is returned; the request appears to never complete.
After the hang, config.json only contains the regular chat client token (9d1c250a-e61b-44d9-88ed-5944d1962f5e), never the Cowork client token.
Troubleshooting already performed:
- Full cache wipe (
Local Storage,Session Storage,Network,IndexedDB,Cookies,config.json) followed by fresh re-authentication - No VPN installed or running (
scutil --nc listempty; no VPN processes inps) - Corporate network ruled out via personal hotspot test — same failure on cellular
- Keychain healthy; regular chat OAuth token writes and reads successfully
- App confirmed on latest version
- Verified via
tcpdumpthat HTTPS traffic toapi.anthropic.comis reaching the server and receiving responses during the failed exchange window, confirming the failure is server-side
Reference IDs
Org ID, Account ID, and Session ID available to Anthropic staff on request via private message/email. Failed exchange timestamp: 2026-04-24 13:21:26 America/New_York.
What Should Happen?
Expected Behavior
The Cowork OAuth exchange completes, a Cowork token is cached in config.json, and the Cowork tab becomes usable.
Actual Behavior
The Cowork OAuth exchange initiates but never receives a response from the auth server. The "Authenticating" spinner persists indefinitely. No error is logged. The VM is booted and ready but never receives a session token to do work with.
Additional Context
Likely related to #33216 but with a different failure mode (indefinite hang with no server response, vs. the 500 Internal Server Error reported there). Note: this form is labeled "Claude Code" but the bug is in the Cowork feature of the Claude Desktop consumer app. Filing here based on precedent of other Desktop/Cowork bugs accepted in this repo (e.g., #33216, #52367).
Error Messages/Logs
**Logs**
The Cowork OAuth exchange initiates and then never completes. Excerpt from `~/Library/Logs/Claude/main.log`:
2026-04-24 13:21:26 [info] LocalAgentModeSessions.start:
2026-04-24 13:21:26 [info] using oauth config {
apiHost: 'https://api.anthropic.com',
clientId: 'a473d7bb-17ac-43a7-abc0-a1343d7c2805',
redirectUri: 'https://console.anthropic.com/oauth/code/callback',
scope: 'user:inference user:file_upload user:profile',
domain: '.claude.ai'
}
2026-04-24 13:21:26 [info] [oauth] looking up token for orgId=<redacted>, cacheKey=a473d7bb-17ac-43a7-abc0-a1343d7c2805:<redacted>:https://api.anthropic.com:user:inference user:file_upload user:profile
2026-04-24 13:21:26 [info] [oauth] no cached token found for orgId=<redacted>
2026-04-24 13:21:26 [info] [oauth] performing fresh oauth exchange for orgId=<redacted>
2026-04-24 13:21:26 [warn] Transcript not found for session local_<redacted> (cliSessionId: none)
No further `[oauth]` lines follow — no success, no error, no HTTP response logged. The next activity in the log is the app restart ~40 seconds later.
For contrast, the Cowork VM side is healthy throughout. Excerpt from `~/Library/Logs/Claude/cowork_vm_node.log`:
[VM:steps] vm_boot completed (185ms)
[VM:steps] guest_vsock_connect completed (5421ms)
[VM] Network status: CONNECTED
[VM] Guest connection changed: true
[VM:steps] install_ca_certificates completed (0ms)
[VM] API reachability: REACHABLE
[Keepalive] Starting (interval=2000ms)
[VM:start] Startup complete, total time: 7019ms
Confirmation that the request reaches Anthropic's servers and receives responses during the hang window, via `tcpdump -i any -n host api.anthropic.com and port 443`:
13:24:49.262931 IP <local-ip>.61312 > 160.79.104.10.443: Flags [P.], length 32
13:24:49.312344 IP 160.79.104.10.443 > <local-ip>.61312: Flags [P.], length 28
13:24:49.312506 IP <local-ip>.61312 > 160.79.104.10.443: Flags [.], ack 29, length 0
13:24:51.688949 IP <local-ip>.63155 > 160.79.104.10.443: quic, initial, length 1232
13:24:51.708423 IP 160.79.104.10.443 > <local-ip>.63155: quic, initial, length 22
Bidirectional HTTPS traffic with `api.anthropic.com` (`160.79.104.10`) is flowing normally, confirming the OAuth exchange request is leaving the machine and being received by the server — the failure is on the response side, not the network path.
Steps to Reproduce
- Open Claude Desktop on macOS [your version] on Apple Silicon, signed into account normally
- Confirm regular Claude chat works (send any message, receive response)
- Click the Cowork tab
- Observe the "Authenticating" spinner appears and never resolves
- Check
~/Library/Logs/Claude/main.log— see the Cowork OAuth exchange initiate with clientIda473d7bb-17ac-43a7-abc0-a1343d7c2805and never complete
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.119 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗