{"version":"2.1.290","anchor":"tool-outcome-denied-by-rule-distinguished-from-validation","canonical_anchor":"tool-outcome-denied-by-rule-distinguished-from-validation","heading":"Usage data now tells blocked tool calls apart from invalid ones","tier":"internal","area":"Telemetry","scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.290\/e\/tool-outcome-denied-by-rule-distinguished-from-validation","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.290","markdown":"### Usage data now tells blocked tool calls apart from invalid ones\n\nClaude Code's usage data now labels a tool call stopped by a permission rule separately from one that failed its input checks\n\n**What**\n\nClaude Code records how each tool call ends in its usage analytics. A call that ends in an error is now labelled `denied_by_rule` when a permission rule blocked it. Otherwise it is still labelled `validation_failed`, as before, meaning its inputs did not pass checks.\n\n**Why**\n\nThe analytics no longer mix up calls you blocked with calls that were malformed. Nothing changes in what you see while using Claude Code.\n\n- Area: Telemetry\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: org\n- Heads-up: no"}