What
A hook is a command you or a plugin set up to run automatically at certain moments. PreToolUse hooks run before a tool is used and can block it; PermissionRequest hooks run when a tool use needs a permission decision. This release changes how their answers combine:
PreToolUseandPermissionRequesthook decisions (allow, ask or deny) are now routed through atool.checkpath in a permission engine, and handlers can answer for the engine.- A plugin's
tool.checkdeny no longer always blocks. If the tool is not a protected one, the original check is recomputed, and if that would have asked you, you get an ask with arefusalattached instead. Before, the plugin's result was used directly. - An ask raised by a hook can now carry
hooksMayAllowandrefusal, and aPermissionRequesthook may now allow such an ask, under strict checks. Before, that hook could only deny. Headless and no-prompt runs, where nobody can answer, consult hooks before denying. - The prompt for a blocked browser action now sets
hooksMayAllowto false, next topersonOnlyanddefaultToNo, so hooks cannot approve it. - A new
hookAskFloorsetting keeps a hook's ask in place, and stops hook-approved automatic allowing, when asandboxOverrideapplies. - The auto mode decision record gains
skippedOnAllowRule. - The error log text now reads 'PermissionRequest hook failed before a hook's ask for', replacing 'PermissionRequest hook failed before an ask of a person for'.
Why
Hook and plugin authors should check their setups: a plugin deny may now show you a prompt instead of an outright block, and a PermissionRequest hook can now approve asks that other hooks raised. Some prompts, such as blocked browser actions, remain for a person only.
tengu_auto_mode_config Not enough to sayNothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.
This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.307: not a boolean we can read
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.307. It isn't a statement about your account. What a flag value here can and cannot tell you