{"version":"2.1.299","anchor":"userpromptsubmit-and-promptsubmit-hook-blocks-now-carry-str","canonical_anchor":"userpromptsubmit-and-promptsubmit-hook-blocks-now-carry-str","heading":"Prompts stopped by hooks now come with a reason","tier":"notice","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299\/e\/userpromptsubmit-and-promptsubmit-hook-blocks-now-carry-str","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299","markdown":"### Prompts stopped by hooks now come with a reason\n\nWhen a `UserPromptSubmit` hook or `prompt.submit` handler stops a prompt, Claude Code now records which kind of stop it was\n\n**What**\n\nWhen a `UserPromptSubmit` hook or a `prompt.submit` handler stops your prompt, Claude Code now tags why, where before the block message was the only sign. The reasons are:\n\n- `blocked_by_hook`\n\n- `no_verdict`\n\n- `stopped_by_hook`\n\n- `dropped_by_hook`\n\n- `not_passed_on`\n\n- `rewrite_unplaceable`\n\nThe last one means a hook rewrote the prompt but the rewrite could not be put in place. In that case the prompt now ends there.\n\n**Why**\n\nTools built on the SDK (the kit for building on Claude Code) and usage reports can now tell why a prompt was stopped.\n\n- Area: Hooks\n- Names: `UserPromptSubmit`, `prompt.submit`\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}