What
Hooks are your own scripts that Claude Code runs to check or react to its actions, such as a tool call (an action Claude takes, like running a command). When a hook cannot do its check, the call is now blocked with an explanation instead of going ahead:
- "Blocked: this call's input can't be written as JSON, so the hook could not check it."
- A block when Claude Code "could not work out which hooks apply to this call".
PermissionRequesthooks, which decide whether a tool may run, get a deny.- Many new messages for command checks in cloud sessions that use hooks supplied by a server.
The block is skipped only when the flag tengu_quiet_hopcroft (a switch Anthropic controls from its servers) is true, the value came from the server, and a further condition is met. Otherwise, including when no value is available, the block applies. The flag server returned off for this site's account and for an anonymous check, but no reading has been taken under this release yet.
Why
A hook that fails no longer lets a call through unchecked. If your hooks sometimes fail on unusual input, expect those calls to be blocked with one of these messages.
tengu_quiet_hopcroft Off in both readingsThe flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.
This account: off · anonymous baseline: off · compiled default in v2.1.288: off
These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.
Read once, for one account on one subscription tier, against v2.1.288. It isn't a statement about your account. What a flag value here can and cannot tell you
Which hook events this covers, and an extra condition that can also lift the block, were not established.