{"version":"2.1.288","anchor":"hook-registration-failure-reasons-dot-folder-shell-prefix","canonical_anchor":"hook-registration-failure-reasons-dot-folder-shell-prefix","heading":"Claude Code says why a hook was not registered","tier":"notice","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.288\/e\/hook-registration-failure-reasons-dot-folder-shell-prefix","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.288","markdown":"### Claude Code says why a hook was not registered\n\nHooks that are skipped now come with a reason, such as a missing script or a script in an unread dot-folder\n\n**Unclear.** Where in Claude Code these reasons are shown is not established.\n\n**What**\n\nWhen a hook (a command set up to run automatically at certain moments) is not registered, Claude Code now gives a reason:\n\n- its script is in a dot-folder (a folder whose name starts with a dot) that this machine does not read hooks from, with advice to check the script and move it to `~\/.claude\/hooks`\n\n- it would run through your `CLAUDE_CODE_SHELL_PREFIX`, which this machine cannot verify\n\n- its script is missing\n\nA separate status reads that the hook is not registered yet and your next message tries again.\n\n**Why**\n\nIf you define hooks, a skipped hook now comes with something you can act on instead of disappearing silently.\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}