Hook-события - это точки жизненного цикла, к которым можно привязать детерминированную реакцию, и их удобнее держать по семействам, а не сплошным списком. Есть события сессии и конфигурации, промпта и отображения, жизненного цикла инструмента, агентов и задач, памяти и контекста, файловой системы и worktree, MCP-взаимодействия и завершения хода. Полный текущий список - в официальном hooks reference; этот справочник даёт карту семейств и того, что hook может сделать в каждом.
Ключевое различие между событиями - что hook в них может решать. На PreToolUse hook способен разрешить, изменить или заблокировать вызов инструмента ещё до его выполнения - это самое сильное место для политики. На PostToolUse и PostToolUseFailure он реагирует уже на результат: форматирует, тестирует, аудирует. UserPromptSubmit позволяет проверить или дополнить промпт, а Stop и StopFailure - вмешаться в завершение хода. Возможности события определяют, какую задачу к нему разумно цеплять.
События сессии и инфраструктуры дают контекст и провенанс. SessionStart, ConfigChange и SessionEnd удобны для настройки окружения и аудита; InstructionsLoaded, PreCompact и PostCompact - для отслеживания происхождения инструкций и непрерывности при сжатии; события файловой системы и worktree (FileChanged, WorktreeCreate, WorktreeRemove) - для реакции на изменения окружения. События агентов и задач (SubagentStart/Stop, TaskCompleted) служат для контроля оркестрации. Ниже - карта семейств и их типичных задач.
Пользоваться справочником стоит с той же оговоркой, что и всей главой про hooks: hook - это программный контроль с правами вашего процесса, поэтому его ревьюят и тестируют как код. Точный набор событий, их вход и коды возврата зависят от версии, поэтому перед тем как строить политику на конкретном событии, сверяются с официальным reference и проверяют поведение через claude --debug. Матчеры чувствительны к регистру - Bash, а не bash, - и это частая причина "hook не срабатывает".
| Семейство | События | Что можно |
|---|---|---|
| Жизненный цикл инструмента | PreToolUse | Разрешить / изменить / заблокировать до выполнения |
| PostToolUse / PostToolUseFailure | Реакция на результат: формат, тест, аудит |
| Промпт/отображение | UserPromptSubmit, Notification | Проверить/дополнить промпт; уведомления |
|---|
| Сессия/конфигурация | SessionStart, ConfigChange, SessionEnd | Настройка окружения, аудит |
|---|
| Агенты/задачи | SubagentStart/Stop, TaskCompleted | Контроль оркестрации |
|---|
| Память/контекст | InstructionsLoaded, PreCompact, PostCompact | Провенанс, непрерывность при сжатии |
|---|
| ФС/worktree | FileChanged, WorktreeCreate/Remove | Реакция на изменения окружения |
|---|
| MCP | Elicitation, ElicitationResult | Контролируемый пользовательский ввод |
|---|
| Завершение хода | Stop, StopFailure | Проверка, уведомления при завершении |
|---|