Follow Discord
Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.275 ·

Tool results and denials can now carry a structured 'remedy'

Failed or denied tool calls now include a structured remedy code so hosts can offer a fix without parsing error text

TierUnder the hoodhow much it should matter to you
Useful1my rating, 1 to 5
Signal1worth watching, 1 to 5
AreaTool Resultswhat it touches
KindInternal Changesin v2.1.275,
Group of 6 Under the hood

Failed or denied tool calls now include a structured remedy code so hosts can offer a fix without parsing error text

What

  • A new internal remedy field can be attached to a tool result's metadata (tool_result_meta), giving a structured reason for a failure instead of free text. Its possible values include mcp_needs_auth, mcp_disabled, mcp_required_missing, auth_expired, auth_overridden, auth_missing_scope, design_needs_authorization, sandbox_violation, outside_reads_blocked, memory_paused, feature_disabled, policy_denied, spawn_arg_limit, and staged_for_review.
  • This remedy is now threaded through as toolResultRemedy when building the tool-result message shown to Claude, and included in the transcript summary for denied or blocked tool calls alongside the existing non_execution_kind.
  • Errors produced after a failed tool call now include toolResultRemedy next to the existing toolDenialKind, both produced by new classifier functions that turn internal permission-deny and connection/auth failures into these structured kinds.

Why

This lets tools and host applications programmatically detect why a call failed, for example missing MCP authorization versus a sandbox violation, and suggest the right fix instead of relying on parsing human-readable error text.

How sure we are
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubtThe finding does not say what a remedy value looks like or where it is shown to the user.

See this entry in the whole of v2.1.275 →

Feedback