Desktop client generates synthetic "No response requested" on isMeta auto-continuation, blocking agent results

Resolved 💬 2 comments Opened Mar 21, 2026 by baton-noir Closed Mar 21, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The Desktop client generates a synthetic "No response requested." response to its own isMeta: true auto-continuation messages. Transcript evidence shows these responses tagged as model: <synthetic> with zero token usage, confirming the isMeta message never reaches the API. This is a client-side issue, not a model behaviour issue.

Root cause: When Desktop reconnects or an agent completes, Desktop sends an isMeta: true "Continue from where you left off." message. Instead of passing this to the API, Desktop immediately generates a synthetic assistant response ("No response requested.") with zero tokens. The model never sees either the isMeta message or the agent results.

Amplifier: hooks. While the synthetic response is the root cause (present since at least v2.1.51, before any hooks were configured), hooks that fire on isMeta messages significantly worsen the impact:

  • SessionStart hooks with a broad matcher (e.g. "") fire on the resume event triggered by the Desktop reconnection, injecting startup content mid-conversation. This makes the model believe the session has restarted.
  • UserPromptSubmit hooks fire on the isMeta message (since it's treated as a user prompt), injecting task context on top of a contentless auto-continuation.
  • The combination of synthetic "No response requested" + hook-injected content produces a context that looks like "new session, nothing to do" rather than "agent completed, process results."

The bug is observable without hooks (confirmed on 2026-03-03, no hooks configured), but hooks transform it from a silent artefact into an active derailment.

Two trigger scenarios:

  1. After agent completion: Desktop sends "Continue from where you left off." and immediately generates a synthetic dismissal. The model never sees the agent results.
  2. On user interruption during agent execution: The synthetic "No response requested." is inserted into the conversation, severing the model's awareness of its own in-flight tool call. When the user then asks a follow-up, the model sees only the synthetic response as its last action and misdiagnoses itself as having failed to act.

Secondary effects observed:

  • Model loses track of completed work and attempts to redo it
  • Model confabulates explanations ("context compression", "I failed to spawn the agent") because it genuinely has no information about what happened during the synthetic exchange
  • Redundant agent launches when the model believes its prior agent call never executed

CLI sessions are unaffected. The same agent workflows, same project, same hooks, same model complete normally in CLI. The bug is isolated to the Desktop client's handling of isMeta messages.

What Should Happen?

  1. The isMeta: true "Continue from where you left off." message should be passed to the API, not intercepted with a synthetic response. The model should process agent results and continue.
  2. Hooks should not fire on isMeta messages. Either: (a) skip hook execution for isMeta events entirely, or (b) expose an isMeta field in the hook input schema so hooks can filter them.

Error Messages/Logs

From transcript JSONL (content sanitized). The critical field is model: <synthetic> with zero token usage, confirming Desktop generates this response client-side:

Pattern 1 - After agent completion:

line N   | last-prompt      |                     |
line N+1 | queue-operation  | enqueue             |
line N+2 | queue-operation  | dequeue             |
line N+3 | user             | isMeta=True         | "Continue from where you left off."
line N+4 | assistant        | model=<synthetic>   | "No response requested."  (0 tokens)

Pattern 2 - User interrupts running agent:

line N   | assistant        |                     | [Agent tool_use launched]
line N+1 | last-prompt      |                     |
line N+2 | queue-operation  | enqueue             | (user types message)
line N+3 | assistant        | model=<synthetic>   | "No response requested."  (0 tokens)
line N+4 | user             | isMeta=absent       | "This is taking a while..."
line N+5 | assistant        |                     | "That was my mistake - I failed to spawn..."

In Pattern 2, the model's self-diagnosis at line N+5 is incorrect - it had spawned the agent (34 tool calls over ~5 minutes), but the synthetic message made its own prior action invisible.

Pattern 3 - Desktop reconnection with SessionStart hook (amplified):

line N   | Desktop reconnects
line N+1 | user             | isMeta=True         | "Continue from where you left off."
line N+2 | assistant        | model=<synthetic>   | "No response requested."  (0 tokens)
line N+3 | hook_progress    | SessionStart:resume  | SESSION STARTUP content injected
line N+4 | assistant        |                     | [model sees "new session" + "nothing to do"]

Pattern 3 was the dominant failure mode from 2026-03-13 to 2026-03-18, when the SessionStart hook matcher was "" (matching all events including resume). Changing the matcher to "startup" eliminated Pattern 3 but left Patterns 1 and 2 intact.

All patterns observed across 6 Desktop sessions (versions 2.1.51 through 2.1.78). Zero occurrences across 3 CLI sessions using the same agent types, hooks, and model.

Steps to Reproduce

Pattern 1 (post-completion):

  1. Open a session in Claude Code Desktop (Code mode)
  2. Give a task that launches one or more agents (e.g. via the Agent tool)
  3. Wait for agents to complete (~2-5 minutes)
  4. Desktop auto-sends an isMeta: true "Continue from where you left off."
  5. Desktop generates a synthetic "No response requested." (never reaches the API)
  6. Agent results are lost; model does not continue

Pattern 2 (user interruption):

  1. Open a session in Claude Code Desktop (Code mode)
  2. Give a task that launches a long-running agent
  3. While the agent is running, type a message (e.g. asking about the delay)
  4. Desktop inserts synthetic "No response requested." into the conversation
  5. Model sees only the synthetic response as its last action, loses awareness of the running agent
  6. Model misdiagnoses itself as having failed and relaunches the agent

To confirm it's Desktop-specific: Run the same task via CLI (claude command). Agents complete and results return normally.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Observed across 2.1.51, 2.1.76, 2.1.78 (Desktop, 6 sessions). CLI 2.1.81 unaffected (3 sessions).

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Claude Code Desktop

Additional Information

Root cause analysis timeline:

| Date | Event | Bug present? |
|------|-------|-------------|
| 2026-03-03 | No hooks configured. Two Cowork/Desktop sessions (v2.1.51) | Yes - synthetic "No response requested" on isMeta, but silent (model moved on) |
| 2026-03-11 | First hooks created (PreToolUse, PreCompact, SessionStart:compact) | Not observed |
| 2026-03-13 | SessionStart matcher changed to "" (fires on all events including resume) | Bug amplified - every Desktop reconnection re-fires startup hook mid-conversation |
| 2026-03-18 | SessionStart matcher fixed to "startup" (Pattern 3 eliminated) | Pattern 3 gone, Patterns 1-2 remain |
| 2026-03-19 | UserPromptSubmit hook created (fires on isMeta messages) | New amplifier introduced |
| 2026-03-21 | Bug first explicitly diagnosed via transcript analysis | 3 Desktop sessions affected in one day |

Key evidence:

  • model: <synthetic> with zero token usage confirms client-side generation
  • Bug exists without hooks (2026-03-03, v2.1.51) but is near-invisible
  • Hooks amplify by injecting content (startup prompts, task constraints) on top of the synthetic response
  • CLI: 0/3 sessions affected. Desktop: 6/6 sessions affected (across v2.1.51-2.1.78)
  • Also affects Cowork mode

User-side mitigations applied:

  • SessionStart matcher """startup" (2026-03-18) - stops hook re-firing on Desktop reconnections
  • Added "Continue from where you left off" as negative pattern in UserPromptSubmit hook (2026-03-21) - stops task context injection on isMeta messages
  • These mitigations reduce severity but do not fix the root cause (synthetic response generation)

Related issues:

  • #13973 - "Claude stops responding after successful tool calls with 'No response requested.'" (closed as completed, Dec 2025). Same symptom; may have regressed or never been fully fixed for Desktop.
  • #25435 - Confirms "Continue where you left off" is a Desktop auto-message (closed as duplicate)
  • #32085 - Background agent resume issues from polling/retry angle (open)

Feature request (secondary): The UserPromptSubmit hook input schema has no isMeta field. Hooks cannot distinguish real user prompts from system-generated auto-continuation messages. Exposing an isMeta or source field would let hooks skip isMeta events. Currently the only workaround is content-matching on the prompt text.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗