Claude Code in Desktop app silently stalls mid-turn — no UI indication, requires user interrupt to recover
Bug Description
Claude Code (in the Desktop app) frequently stalls mid-turn after announcing a tool call. It says it's going to read a file, write a mockup, or take a screenshot — then nothing happens. No tokens streaming, no spinner, no "clauding" animation, no error message. The only way to recover is to send a message (I typically just type "ok") which interrupts the stalled turn and gets Claude responding again.
Evidence from Logs
Frequency: ~40 "ok" interrupts in 2 days
I searched my transcript backups for bare "ok" messages I sent purely to un-stick frozen turns:
- Session
63bd3ace(Mar 28, 7pm–11:42pm): 26 "ok" messages in 4.5 hours — one every ~10 minutes - Session
760698a0(Mar 29): 5 "ok"s in 26 minutes - Session
5230bfde(Mar 28 afternoon): 4 "ok"s in 46 minutes - Total unique: 40 "ok" interrupts across 2 days
Root Cause 1: SSE stream drops (65 in one week)
main.log shows 65 ERR_HTTP2_PROTOCOL_ERROR SSE stream disconnections in one week (Mar 23–29). On Mar 28, they occurred with exact hourly cadence:
09:25, 10:25, 11:25, 12:25, 13:25, 14:25, 15:25, 16:25, 17:25, 18:25, 19:25
The app reconnects the SSE stream within ~1 second, but if the drop occurs mid-turn (while Claude is executing a tool call), the tool response appears to be lost and the UI freezes with no indication.
Root Cause 2: Preview MCP screenshot timeouts (39 occurrences)
[warn] [Preview MCP] preview_screenshot timed out after 30000ms
39 instances in the current log. On Mar 27 alone, 14 timeouts — including 10 back-to-back between 9:54pm and 10:03pm (potentially 5 minutes of staring at a frozen UI).
No UI feedback during stall
The critical UX issue: when either of these failures occurs mid-turn, the UI shows nothing — no error toast, no "reconnecting" indicator, no retry prompt. The user sees Claude's last text ("Let me read that file...") and then dead silence. It looks identical to the app simply doing nothing.
Expected Behavior
- When an SSE stream drops mid-turn, the app should silently retry the tool call or show a "Connection interrupted, retrying..." indicator
- When a Preview MCP tool call times out, the turn should continue (with an error message to Claude) rather than silently freezing
- At minimum: if no progress occurs for >15 seconds mid-turn, show a visual indicator that something has stalled
Environment
- Claude Desktop: MSIX 1.1.9493 (Windows Store)
- Claude Code (embedded CCD): 2.1.87
- Windows 11 Pro (10.0.26200)
- 16 GB RAM
- 12 MCP servers connected
Log file locations (Windows)
%APPDATA%\Claude\logs\main.log— SSE stream errors, CCD cycle health, preview timeouts%APPDATA%\Claude\logs\unknown-window.log— UI-side errors (QueryClient, render loops)~\.claude\transcript-backups\— JSONL transcripts showing "ok" interrupt pattern
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗