[BUG] Claude Code (Windows desktop app v2.1.119) hangs indefinitely on prompt submission — infinite spinner, no streaming output
Summary
Claude Code running inside the Windows Claude desktop app hangs forever after the user submits a prompt. The session spinner runs indefinitely (verified 2+ minutes, user reports it sits "forever"), no tokens stream back, no errors surface in the UI, and the only recovery is force-killing the claude.exe subprocess.
Environment
- OS: Windows 11
- Claude desktop app: 1.4758.0.0
- Claude Code subprocess: 2.1.119 (
%APPDATA%\Claude\claude-code\2.1.119\claude.exe) - Mode: Cowork / agent mode (subprocess spawned by Claude desktop with
--output-format stream-json --input-format stream-json)
Symptoms
- User submits first prompt in a fresh Cowork session.
- Spinner shows elapsed time ticking (e.g.
2m 9s) but no output ever appears. - The
claude.exechild process is still alive, parented to the desktop app, but cumulative CPU is very low (~3–5 seconds total) — suggests it's blocked on I/O, not thinking/working. - Other concurrent Cowork sessions in the same desktop app continue working normally, so it isn't a global lockup.
- Force-killing the specific stuck PID frees the UI; user can then start a new session normally.
Process snapshot at time of hang
Four claude.exe v2.1.119 children of the desktop app PID, all spawned with stream-json IO. The hung one was launched with:
claude.exe --output-format stream-json --verbose --input-format stream-json \
--effort max --model claude-opus-4-7[1m] --permission-prompt-tool stdio \
--allowedTools mcp__computer-use,mcp__ccd_session__spawn_task,mcp__ccd_session__mark_chapter \
--setting-sources=user,project,local --permission-mode bypassPermissions \
--allow-dangerously-skip-permissions --include-partial-messages \
--plugin-dir <...> --replay-user-messages --settings {}
Not using --resume, so it was a fresh session attempt.
Reproduction
Not yet reliably reproducible — appears intermittent. Suspect either:
- A wedged stream-json handshake between the desktop app and the Claude Code child (no first stream message ever sent, child waiting for stdin).
- A plugin/MCP startup step that never returns (lots of plugin dirs are loaded; one slow MCP server could block tool init).
- Network call to the API that is silently retrying without backing out.
Suggestions for the team
- Add a startup-phase timeout/heartbeat — if no model token or tool event has streamed within N seconds of prompt submission, log a clear diagnostic to the user instead of an indefinite spinner.
- Surface MCP/plugin init progress in the desktop UI so users can see if a plugin is the cause of the hang.
- Consider a "this session looks stuck — restart it?" UI affordance after, say, 60s of zero output, to avoid users having to open Task Manager and find the right PID.
Workaround
Force-kill the specific hung claude.exe v2.1.119 PID under the desktop app parent, then start a new session. Killing only the stuck child doesn't disturb other open Cowork sessions.
Reporter: Dan (dan@secondsummit.ninja) — happy to attach desktop app logs, MCP server logs, or a process dump if helpful.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗