{"version":"2.1.299","anchor":"hook-failure-with-no-git-bash-blocks-and-denies-carry-a-ver","canonical_anchor":"hook-failure-with-no-git-bash-blocks-and-denies-carry-a-ver","heading":"Hook outcomes record why there was no verdict","tier":"notice","area":"Windows","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299\/e\/hook-failure-with-no-git-bash-blocks-and-denies-carry-a-ver","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299","markdown":"### Hook outcomes record why there was no verdict\n\nBlocking hook errors now carry a noVerdict reason, a missing Git Bash blocks, and SDK messages gain a prompt_submit_outcome object\n\n**What**\n\nA hook is a user-set command that runs at certain moments, for example when you submit a prompt. When a hook fails, Claude Code now records more about why.\n\n- A hook that fails because there is no Git Bash is now blocked, and the log says \"no Git Bash\". Before, there were only two block reasons.\n\n- Blocking errors now carry a `noVerdict` of `hook_timed_out` or `hook_failed`.\n\n- The SDK system message format has a new internal `prompt_submit_outcome` object. Its kinds are `blocked_by_hook`, `stopped_by_hook`, `dropped_by_hook`, `not_passed_on` and `no_verdict`. `no_verdict` carries a `no_verdict_kind` such as `remote_run_failed` or `hook_timed_out`. The object also has `prompt_kept` and `reason`, and covers plugin 'code module' outcomes.\n\n**Why**\n\nPrograms built on Claude Code can tell why a UserPromptSubmit hook ended a prompt without matching message text. On Windows, a hook that cannot run because Git Bash is missing now blocks.\n\n- Area: Windows\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: yes"}