Follow Discord
Sweep 06 Nov 2026 · 01:32Z Build v2.1.319 537 read Stable v2.1.311 Latest v2.1.318 Next v2.1.319 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
PluginsArea: what it touches
ImprovementsKind: in v2.1.307,
What probably matters to youSection of the release

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 bundletool.check
Since it was published

The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.

Confirmed since Anthropic's documentation has since written up tool.check, on Configure permissions. That precedence covers hooks in settings files and in a plugin's `hooks/hooks.json`. A [mod](https://code.claude.com/docs/en/plugins/mods/overview.md) you install that handles the [`tool.check`](https://code.claude.com/docs/en/plugins/mods… permissions see the edit
How sure we are
One source agreesOne thing we can check says the same as this entry.
Anthropic's documentation agreesAnthropic's documentation has since written up tool.check, on Configure permissions.

See this entry in the whole of v2.1.307 →

Feedback