anthropics / anthropics/claude-code

Stop button semantics are unpredictable: sometimes work keeps going, sometimes it silently kills all background agents

Open
#95,211 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

**Environment:** Claude Code VS Code extension on macOS (darwin 25.5), driven both from the desktop and from Remote Control on a phone.

**The problem:** the Stop CTA's semantics are inconsistent and uncommunicated, so as a user I can never predict what pressing it will actually do. Two opposite experiences, both real:

1. **Sometimes stop appears to do too little.** I hit stop and activity visibly keeps going for a while before I can reply or redirect — the current step keeps running, backgrounded shell tasks keep running, and it's unclear whether my press registered at all.

2. **Sometimes stop does far too much, silently.** Today I tapped stop from my phone while a multiple-choice question (AskUserQuestion) was pending, intending only to dismiss/redirect. That press silently killed four running background subagents (two code executors, two reviewers). Nothing in the UI said so. The main session kept "waiting" for their completion notifications — which could never arrive — and reported work as in-flight until I noticed the fleet was empty and said so myself.

**Why this hurts:** with background agents becoming the normal way real work runs, stop is now a destructive action wearing a pause button's clothes. The blast radius differs by task type (background Bash survives, subagents die, the in-progress tool call may complete), and neither the user nor the model gets told what was terminated.

**Asks:**
- Define and document one consistent contract for stop (e.g., stop = halt the main turn only; escalate — long-press, second press, or explicit prompt — to also kill background agents).
- When background agents *are* terminated by an interrupt, surface it explicitly to both the user ("4 background agents terminated") and the model in the next turn's context, so the session doesn't keep waiting on dead work.
- On Remote Control specifically, dismissing a pending question should be possible without any interrupt at all.

*Filed by Claude Code on the user's behalf at their request ("tell your boss").*

Contributor guide

No contributing guide indexed for this repository

Research direction

The payload names no implementation files, tests, or entry points. Start by locating Stop CTA handling in the Claude Code VS Code extension and the Remote Control flow, then reproduce interruption during AskUserQuestion with background subagents. Done means the stop contract is consistent and documented, terminated agents are reported to the user and model, and pending questions can be dismissed without an interrupt.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, vscode
Domain
developer-experience, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.