What
Hooks are scripts you configure to run automatically at set points in a session. A script hook can print JSON, a structured text format, to tell Claude Code what to do. When that JSON does not match the expected format, Claude Code now handles it like this:
- If the hook exited with any code other than 2, the failure is recorded as invalid hook output instead of being raised as an error.
- If the hook exited with code 2, the failure is marked as blocked and recorded separately.
Previously any such mismatch raised an error unless the exit code was 2.
Why
If you write hooks, badly formed output is now tracked as its own kind of failure, and exiting with code 2 still blocks as before.
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
It is not clear whether the message you see when a hook's output is badly formed changed.