Synthetic assistant turn 'No response requested.' silently fires on auto-injected 'Continue from where you left off.' prompts
Summary
The VS Code / code-server entrypoint occasionally auto-injects a meta-user message "Continue from where you left off." (with isMeta: true) which is paired with a synthetic assistant turn that the CLI fabricates without calling the model — content is the literal string "No response requested.". Operator sees the conversation as if the assistant declined the prompt; their next manual message gets a normal response. So the session itself is fine, but each occurrence costs a round-trip and is confusing in the UI.
Versions seen
- Reproduced on
2.1.116,2.1.123. Upgrading to2.1.168in progress; will update if behavior changes. - All occurrences from
entrypoint: "claude-vscode"(code-server in browser). Have not seen it from the terminal CLI entrypoint.
Evidence (from session transcript at ~/.claude/projects/.../<sessionId>.jsonl)
Counts across one 38 MB session transcript covering 2026-05-17 → 2026-06-05:
auto-injected "Continue from where you left off." (isMeta=true) : 7
synthetic "No response requested." : 7
LLM-generated "No response requested." responses : 0
user-typed "Continue from where you left off." : 2
100% correlation between meta-Continue auto-injection and the synthetic empty response. Zero instances of the LLM actually producing this string.
Sample synthetic assistant turn JSON:
{
"type": "assistant",
"message": {
"id": "dc48aec4-5478-43a4-b956-ba4296775992",
"model": "<synthetic>",
"stop_reason": "stop_sequence",
"stop_sequence": "",
"usage": {"input_tokens": 0, "output_tokens": 0, ...},
"content": [{"type": "text", "text": "No response requested."}]
},
"parentUuid": "<meta-Continue message uuid>",
"entrypoint": "claude-vscode",
"version": "2.1.123"
}
The corresponding user message:
{
"type": "user",
"message": {"role": "user", "content": [{"type": "text", "text": "Continue from where you left off."}]},
"isMeta": true,
"promptId": "1cf30d86-f80f-4a72-8677-09d3ef9baedf",
"entrypoint": "claude-vscode",
"version": "2.1.123"
}
Both messages share the same millisecond timestamp.
Pattern of when it fires
- Always after a tool result (Bash, Read, Edit observed — not just TodoWrite as I'd originally suspected) — the prior assistant turn ended naturally
- Always preceded by some idle gap (operator switched away / phone disconnect / browser tab refocus)
- The next REAL user message after the synthetic stop reliably gets a normal model response, so neither the session nor the agent loop is wedged — just one spurious round of "I have nothing to do" in the UI
Probably-correlated state
~/.claude/ide/had 63 stale.lockfiles from dead code-server PIDs accumulated over weeks. Cleaning them up may or may not change the behavior — reporting in case it gives the team a hint about the reconnect handshake path that drives the auto-Continue.
Why this matters
The synthetic turn looks identical in the UI to a real assistant declining to act. Operators read it as "Claude has nothing to do" and re-prompt manually, which is wasted time and breaks the autonomous-completion contract that's increasingly important for long-running work. Also: if the auto-Continue mechanism is intentional (reconnect recovery), the synthetic response defeats the recovery — the model never runs.
Suggested directions
- If the meta-Continue is meant as a reconnect recovery signal, route it through actual model inference instead of synthesizing a "no response" closure.
- If the synthesizer is intentional (some race-resolution guard), at minimum make the text neutral so operators don't read it as a Claude reply — or hide it from the UI entirely.
- Either way, surface to the operator that the reconnect happened, since right now it looks like a silent assistant decision.
Happy to attach the full transcript privately if useful.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗