You'll noticeTier: how much it should matter to you
3Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
WindowsArea: what it touches
ImprovementsKind: in v2.1.299,
ImprovementsSection of the release
What
A 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.
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.
Blocking errors now carry a noVerdict of hook_timed_out or hook_failed.
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.
Why
Programs 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.