Sweep 19 Sep 2026 · 02:36Z Build v2.1.278 500 read Stable v2.1.267 Latest v2.1.278 Next v2.1.278 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.275 ·

Permission decisions now record a separate decision_reason_code

Permission-decision telemetry now includes a structured decision_reason_code alongside the existing reason text

TierYou'll noticehow much it should matter to you
Useful1my rating, 1 to 5
Signal1worth watching, 1 to 5
AreaPermissionswhat it touches
KindImprovementsin v2.1.275,
Group of 3 You'll notice

Permission-decision telemetry now includes a structured decision_reason_code alongside the existing reason text

What

When Claude Code makes a permission decision (allowing, denying, or asking about a tool use), it now records a new decision_reason_code field in its internal telemetry, in addition to the existing decision_reason/decision_reason_type fields.

  • The code is one of a closed set of values, including outside_reads_blocked (when permissions.blockReadsOutsideWorkingDirectories refused a path), memory_paused (triggered by /pause-memory), and classifier_transcript_too_long (when an auto-mode classifier's transcript exceeded the context window).
  • Permission-deny messages for file access outside the working directory now also include a blockedPath field naming the offending path.
  • Internally, the reason code and reason message are now produced by separate helper functions, splitting what used to be one derived value into a code plus a human-readable message.

Why

Splitting the reason into a stable code and a separate message makes it easier to reliably track and analyze why permission requests were denied or required confirmation, without depending on parsing free-form text.

See this entry in the whole of v2.1.275 →