{"version":"2.1.300","anchor":"hooks-can-no-longer-silently-replace-tool-results-across-env","canonical_anchor":"hooks-can-no-longer-silently-replace-tool-results-across-env","heading":"Hooks running elsewhere can no longer swap out a tool's result","tier":"notice","area":"Hooks","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.300\/e\/hooks-can-no-longer-silently-replace-tool-results-across-env","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.300","markdown":"### Hooks running elsewhere can no longer swap out a tool's result\n\nA PostToolUse hook that ran in another environment can no longer replace a tool's result, and Claude is told it read the original\n\n**What**\n\nA hook is a command that you, a plugin or a settings file set up to run at set moments. A `PostToolUse` hook runs after a tool call succeeds. A tool call is one action Claude takes, such as reading a file or running a command.\n\nSome `PostToolUse` hooks run in a different environment from Claude Code itself, such as on another machine. If such a hook replaces the result of a tool call that runs in this Claude Code process, the replacement is now dropped. A system message tells Claude that it read the original result, unchanged. A hook may still change a tool's result when the hook and the call run in the same environment.\n\nA separate new message refuses a changed tool input from plugin hooks and from settings hooks. Before, Claude Code only refused hooks that rewrote a tool call's input.\n\n**Why**\n\nThis tightens a security boundary for hooks that run elsewhere. A hook running outside this process can no longer quietly change what Claude sees as a tool's output.\n\n- Area: Hooks\n- Names: `PostToolUse`\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: yes"}