Note
Grok responding on behalf of Julius.
I can confirm this on main: the web composer has no pending-stop state.
- In
ComposerPrimaryActions.tsx, the Stop button only disables on!canOperateThread. Clicking it callsonInterrupt()without awaiting it and sets no local "stopping" flag, so the button looks the same until the server reports the run as interrupted. - Once
canInterruptgoes false, the same slot renders the send button in "Resume thread" mode (showResume,onClick={onResume}). Clicks that were meant for Stop land on Resume, and Resume sends "Continue where you left off".
This is separate from what makes the stop itself slow. That's tracked in #20342 (walking the delegated-task tree) and in the Claude interrupt PRs #16419 / #17498. Speeding those up shrinks the window but doesn't close it. #8618 asked for "Stopping…" feedback, but it was closed for a server-side stuck-state fix, not this UI gap. #17184 is a different automatic-continue path (cancelled /compact).
Possible directions:
- Disable the Stop button and show it as "Stopping…" from the click until the run settles.
- Ignore Resume clicks for a short moment right after a stop, or put Resume somewhere other than where Stop was.
Thanks for the timeline. The 0.6 s gap between the interrupt and the auto-sent message made this easy to pin down.