{"version":"2.1.293","anchor":"tool-result-metadata-gains-permission-decision","canonical_anchor":"tool-result-metadata-gains-permission-decision","heading":"Tool results record how their permission check ended","tier":"internal","area":"Permissions","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293\/e\/tool-result-metadata-gains-permission-decision","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293","markdown":"### Tool results record how their permission check ended\n\nTool results now carry a permission_decision field giving the decision, where it came from, and optionally the kind of reason\n\n**What**\n\nA tool call is one action Claude takes, such as running a command or editing a file. Before it runs, Claude Code checks whether it is allowed. The extra information attached to a tool's result can now include `permission_decision`, which records how that check ended:\n\n- the decision\n\n- its source\n\n- optionally, the type of reason\n\nMessages from subagents, helper agents Claude starts, carry only this field.\n\n**Why**\n\nPrograms that run Claude Code through its SDK, the toolkit for building on Claude Code, can read why a call was allowed or blocked directly, instead of working it out from the result's text.\n\n- Area: Permissions\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}