{"version":"2.1.293","anchor":"hook-output-telemetry-and-remote-hook-sanitising","canonical_anchor":"hook-output-telemetry-and-remote-hook-sanitising","heading":"Hooks running away from the tool can no longer rewrite its input or result","tier":"notice","area":"Hooks","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293\/e\/hook-output-telemetry-and-remote-hook-sanitising","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293","markdown":"### Hooks running away from the tool can no longer rewrite its input or result\n\nHooks that ran somewhere other than the tool can no longer change its input or result: input changes become a denial, result changes are dropped\n\n**What**\n\nHooks are your own scripts or plugin scripts that Claude Code runs at set points, such as just before or after it uses a tool. A tool is an action Claude takes, like running a command or editing a file. Claude Code now strips some decisions from hooks that did not run in the same place as the tool they are answering for:\n\n- A `PreToolUse` hook that tries to change the tool's input now causes the tool call to be denied.\n\n- A `PostToolUse` hook that tries to replace the tool's result with `updatedToolOutput` is ignored, and the original result stands.\n\nIn both cases Claude is told what happened with a fixed message, and a warning is logged.\n\nClaude Code also now sorts each hook's answer into kinds, such as rewriting input, replacing a result, updating permissions, answering as the person, or stopping, and reports which kind it was.\n\n**Why**\n\nIf you use plugin or remote hooks that rewrite tool inputs or results, they will no longer do so for tools that run somewhere else. Input rewrites in that situation now block the tool call instead.\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 4\/5\n- Scope: individual\n- Heads-up: yes"}