You're halfway through reading a long answer when the conversation suddenly freezes. "Response incomplete." "Claude is not responding. Try stopping." The rest of the reply never arrives, and if you don't know what to do next, you end up starting the session over again every time.
The confusing part is that this isn't a single bug. "Incomplete response" is a symptom that can originate in at least four different layers: the network, the generation process itself, the tool-call pipeline, or the browser state. Refreshing the page or logging out and back in without first narrowing down which layer is stuck rarely fixes the underlying cause. This guide walks through how to identify the layer and recover — in order, so you can stop guessing.
Three things to check before doing anything else
When the "Response incomplete" message appears, scan these three signals first. The right recovery path depends entirely on them.
Is the generation cursor still pulsing? If yes, Claude is still trying to produce tokens. This is almost always a network or streaming issue, and you can usually recover the rest of the answer.
Did a tool call (Bash, Edit, Read) fire just before the freeze? This is the classic Claude Code stall — the tool hangs and the chat shows "incomplete" while the tool process is still blocking.
Did the text end mid-sentence, mid-code-block, or mid-list? That's a hard token limit, not a connection issue. Recovery requires a follow-up prompt, not a retry.
With these three answers in hand, the right fix usually becomes obvious.
Case 1: The cursor is still moving — it's a network problem
If the loading indicator is still showing but no new tokens are arriving, the problem is almost always between your browser and Anthropic's servers, not in the model itself.
In my own experience, this is most common on corporate VPNs and proxies. Claude streams replies as Server-Sent Events, and some middleboxes quietly kill SSE connections that idle even for a few seconds — exactly what happens during Extended Thinking.
The fix, in order:
First, click Stop at the top of the screen, but do not refresh the page. Refreshing discards the in-flight response and hides the "Continue" button.
Second, on Web, click "Continue" (or "Try again"). In Claude Code CLI, run claude --continue to resume the previous session. In most cases the missing portion regenerates cleanly.
Third, if the freeze repeats, drop the VPN or proxy and try again. It's worth asking your admin whether long-lived connections to api.anthropic.com are allowed — some firewalls rewrite or terminate them.
Case 2: It froze during a tool call — a Claude Code–specific case
When Claude Code shows "Try stopping the current command", a tool invocation has stalled. Common culprits:
- A Bash command is waiting for stdin (interactive commands being run in non-interactive mode)
- A Read against a very large file (multi-MB) saturates the context window
- A subagent has entered a deep loop
The first move is Ctrl+C to interrupt the current tool call. If that doesn't release it, press Esc twice — Claude Code will attempt a hard tool abort. That clears most of these cases.
If you know Bash is the stuck tool, open another terminal, find the Claude Code child process with ps aux | grep claude, and kill only the tool child — not the parent. Killing the parent tears down the whole session.
If you ran an interactive command (vim, top, less) and that caused the hang, add a guardrail to your CLAUDE.md for this project: "Never use interactive commands. Always prefer non-interactive flags such as --batch or --no-pager." This alone prevents most repeat incidents.
Case 3: It ended mid-sentence — the output cap
If the response cuts off inside a code block, mid-list, or mid-word, you've almost certainly hit the output token limit. Claude's maximum response length varies by product and model, but Claude Code in particular has a hard ceiling per turn.
The tell: the text ends somewhere that clearly isn't a finishing sentence — an unclosed code fence, a truncated list item, a half-written function.
The fix is boring: ask Claude to continue. "Please continue from where you stopped, without omitting anything" works reliably. A subtle but important detail: say "without omitting anything" explicitly, otherwise Claude sometimes restarts with a summary instead of resuming verbatim.
If you hit this repeatedly, the deeper issue is that you're asking for too much per turn. Break the task into smaller pieces. "Rewrite these five files" is more fragile than "Let's rewrite the first file; I'll confirm, then we'll move on." It feels slower, but the success rate goes up dramatically.
Case 4: Extended Thinking froze partway
With Extended Thinking enabled, the model can exhaust its thinking budget before it ever gets to the visible reply — and that shows up as an incomplete response even though no real answer was ever produced.
Try the same question without Extended Thinking first. If it answers, shrink the thinking budget (or the task) before turning it back on. In Claude Code, /think accepts intensity levels (think, think hard, ultrathink); drop one level and retry.
When nothing recovers — the safe way to start over
Sometimes a session is simply unrecoverable. Two habits make that restart much smoother.
Start the new session from scratch, not with claude --resume. The resumed context often carries whatever state caused the original stall.
Keep a short CLAUDE.md in your working directory that summarizes the current task, constraints, and files you've already changed. Even three lines is enough for Claude to pick up where you left off, without re-learning everything from the last conversation.
And write down what actually fixed it. "Response incomplete" recurs, and a one-line note ("VPN off → Continue worked") turns next week's five-minute problem into a ten-second one.
The checklist to run every time
When you see "Response incomplete", walk through these four questions in order:
- Is the loading indicator still moving? (yes = network / no = generation finished)
- Was a tool call running? (yes = Ctrl+C, then Esc twice)
- Did the text end mid-sentence? (yes = ask for a verbatim continuation)
- Was Extended Thinking on? (yes = retry without it first)
That's it. Most "incomplete" states are recoverable without killing the session. Try the checklist before you start a new chat.