[BUG] Cowork device bridge never completes device handshake after socket opens (regression after update to 2.9939.2)
Account: personal account (not Enterprise)
Affected device: Claude Desktop (macOS), listed in Settings -> Cowork -> local devices, added Jul 7, 2026
Issue
Since 2026-09-24 20:14 ET, this Mac's Cowork device bridge has failed on every attempt: the app opens a WebSocket to wss://bridge.claudeusercontent.com, gets a clean TLS handshake and HTTP 101 Switching Protocols within 25ms, but the server never replies to the app's connect frame. The app retries every <=30 seconds; every retry times out the same way (58+ timeouts so far). Before 20:14, the connection dropped intermittently with WebSocket code 1006 every 20-60 minutes but self-recovered within seconds each time -- that pattern is normal and not the bug being reported.
Likely trigger
The persistent failure began ~4 minutes after the app auto-updated to build 2.9939.2 at 20:10 ET. Before the update, drops recovered; after it, they don't.
Ruled out on this end
- Network -- DNS resolves correctly, traffic goes out directly over Wi-Fi (not through Tailscale), and the WebSocket upgrade itself succeeds every time.
- Sleep/wake -- the Mac has been continuously awake since a 20:36 boot with zero sleep events, and the app holds a no-sleep assertion throughout.
- Local app state -- restarting the app, restarting the Mac, and a full sign-out/sign-in all failed to change the behavior.
Log excerpt (main.log)
2026-09-24 20:13:35 [remote-tools-device] socket closed: 1006
2026-09-24 20:14:28 [remote-tools-device] pong timeout (1 consecutive) -- resetting
2026-09-24 20:14:46 [remote-tools-device] handshake timeout <- never recovered
2026-09-24 20:43:46 [remote-tools-device] device_registered (not authenticated) -- resetting to refresh row PK
2026-09-24 20:51:22 [remote-tools-device] connect frame sent: device_id keyed
-> handshake timeout (15s), repeats every <=30s
Endpoint: wss://bridge.claudeusercontent.com (160.79.104.10) -- TLS OK, HTTP 101 OK
Interpretation
The server is accepting the socket but not completing the device handshake -- the one non-timeout reply ("device_registered (not authenticated)") suggests this device's server-side record may be stale or mismatched, possibly tied to the 2.9939.2 update. This looks like it needs a server-side reset of this device's registration/credential, not further client-side troubleshooting.
Note on next steps
Holding off on removing this device under Settings -> Cowork -> local devices, since that risks resetting folder permissions on existing Cowork tasks bound to it. Flagging that risk here in case there's a safer server-side fix, or in case removing it won't be necessary once the handshake issue is addressed.
Reference: this same symptom is reproducible from the Cowork (claude.ai) side as well, in a chat/task bound to this same device.
Happy to provide the full main.log or additional timestamps on request.
(Conversation ID 215476094809658 with Fin)
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗