Hooks are commands Claude Code runs automatically at set moments, for example before a tool is used. Claude Code now shows notices that explain why hooks are not running. The reasons they cover include:
- a managed policy, meaning settings your organization controls
- bare mode
- safe mode
--settings, the flag that loads settings from a file or inline JSON for one session
One case is handled specially. If your project settings set disableAllHooks and a managed-settings source could not be read, Claude Code cannot tell whether your organization allows those hooks, so project hooks are turned off. Depending on the hooks involved, the session either stops or shows a notice.
When CLAUDE_CODE_USE_COWORK_PLUGINS is set, a notice says which settings file Claude Code reads instead.
If your hooks stop running, you now get a reason instead of silence. In the case where Claude Code cannot read your organization's settings, it stops rather than guessing, so it does not run hooks that might not be allowed.
* Fixed `claude agents` offering bypass permissions that background sessions then ignored when consent was saved only in `.claude/settings.local.json` or a `--settings` file; it now asks for consent first, and a session that ignores bypass…see the edit
--settings on Claude Code changelog