Unclear Which denials set toolDenialEndsTurn, and what a reader would observe as a result, is not stated.
What
- A new abort/interrupt reason,
permission-stop, was added alongside the existinginterrupt,turn-abort, andrefusal-fallback-editreasons, with its own error mapping. - When a tool call is denied while the abort reason is
permission-stop, the resulting tool-result message now carries atoolDenialEndsTurnflag. A new helper walks backward through the conversation and treats a user message with this flag set as one that ended the turn, rather than one that was merely interrupted. - This
toolDenialEndsTurnflag is now carried through the rest of the tool-result plumbing (alongside existing fields liketoolDenialKind/userFeedback) and is checked to short-circuit processing when a denial should end the turn. - Subagents are affected too: when a synchronous subagent is stopped for this reason, it's now recorded distinctly (
permission_stop_sync) in telemetry and cleaned up as a system action rather than being reported as a plain user cancellation.
Why
Previously, denying a tool call during a permission stop could be misclassified as a generic interruption. This change makes Claude Code correctly recognize that the turn ended because of the permission denial, so the conversation transcript and telemetry reflect what actually happened.
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
Which denials set toolDenialEndsTurn, and what a reader would observe as a result, is not stated.