Unclear It is not clear whether the feature check behind this is switched on for anyone.
What
The part of Claude Code that runs tools had empty placeholders for what happens when you stop a tool. Now armStoppedResultWait, takeKeptResult and stoppedResultWaitOf have real code, behind a check, ae(), whose value was not worked out:
- Stop wait: when you interrupt a running tool whose name matches
B8o, a timer holds back the stop. A result that arrives before the timer runs out can be kept and saved, taken, or withdrawn. Otherwise the tool is marked as interrupted andonStopWaitChangeis called. Before, the result was replaced by a made-upuser_interruptederror. - Receipt marker: an
asyncReplReceiptmarker is added to the information about why a tool stopped. - Detached runs: when an async REPL run has a receipt and
turnAbortDetachesEval(e.reason)is true, the function that gives the reason for an interruption returns nothing. - Quiet tool calls: one new branch can make a tool call collapsible and quietly absorbed when
Cy()is true. - Waiting on scripts:
_V()returnsscriptAskHoldsor nothing. What calls it was not traced.
Why
When this is active, pressing Esc during a turn may let a running REPL job keep going, or keep its result, instead of being reported as interrupted. This changes what you get back from a tool after pressing stop.
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
It is not clear whether the feature check behind this is switched on for anyone.