Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.307 ·

Hooks get new rules for allowing, asking and refusing tool permissions

Hook and plugin permission decisions now go through tool.check, can allow a hook's own ask, turn a plugin deny into an ask, and attach a refusal

Group of 5 Use it now Improvements
JSON All of v2.1.307
Use it nowTier: how much it should matter to you
3Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
HooksArea: what it touches
ImprovementsKind: in v2.1.307,
What probably matters to youSection of the release

Unclear Exactly which hook-raised asks a PermissionRequest hook is now allowed to approve is not established.

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:

  • PreToolUse and PermissionRequest hook decisions (allow, ask or deny) are now routed through a tool.check path in a permission engine, and handlers can answer for the engine.
  • A plugin's tool.check deny 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 a refusal attached instead. Before, the plugin's result was used directly.
  • An ask raised by a hook can now carry hooksMayAllow and refusal, and a PermissionRequest hook 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 hooksMayAllow to false, next to personOnly and defaultToNo, so hooks cannot approve it.
  • A new hookAskFloor setting keeps a hook's ask in place, and stops hook-approved automatic allowing, when a sandboxOverride applies.
  • 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.

Read from
Names in the bundlePermissionRequest
How sure we are
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubtExactly which hook-raised asks a PermissionRequest hook is now allowed to approve is not established.

See this entry in the whole of v2.1.307 →

Feedback