— это пользовательские скрипты, команды, HTTP-запросы или плагины, которые автоматически срабатывают на заранее заданных этапах работы ИИ-агента (например, перед выполнением bash-команды, после редактирования файла или при завершении сессии).
- Промпты — это лишь пожелания, которые LLM может случайно или намеренно проигнорировать. Хуки обеспечивают строгий, детерминированный контроль над тем, что агенту делать можно, а что нельзя.
- Перехват и блокировка опасных действий (например, защита от выполнения
rm -rf или запрет на чтение .env файлов с секретами). - Мгновенный запуск автоформатирования (Prettier/Black), линтеров или юнит-тестов сразу после того, как ИИ изменил файл.
- Отправка уведомлений на рабочий стол или в мессенджер, когда ИИ завершил задачу или ждет разрешения на действие.
Обычно настраивается в конфигурационном файле агента.
"command": "bash ./scripts/block-danger.sh"
"matcher": "Write|Edit|MultiEdit",
"command": "npx prettier --write ."
"command": "say 'Claude expects your input'"
PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest
startup, resume, clear, compact
почему сессия завершилась
clear, logout, prompt_input_exit, bypass_permissions_disabled, other
permission_prompt, idle_prompt, auth_success, elicitation_dialog
Bash, Explore, Plan или пользовательские имена агентов
что вызвало сжатие контекста
те же значения, что и у SubagentStart
user_settings, project_settings, local_settings, policy_settings, skills
UserPromptSubmit, Stop, TeammateIdle, TaskCompleted, WorktreeCreate, WorktreeRemove, InstructionsLoaded
всегда срабатывает при каждом возникновении
- Настройте базовые уведомления и банальное автоформатирование файлов после события
PostToolUse. - Настройте регулярные выражения на перехват деструктивных shell-команд или попыток сделать коммит напрямую в
main ветку. - Полезно настроить хук, который автоматически делает локальный git-коммит после каждого успешного завершения задачи агентом.
- Пишите максимально быстрые скрипты, чтобы не создавать задержек в цикле работы агента.
- Настраивайте строгие
Matchers и проверяйте аргументы внутри плагинов, чтобы хуки не срабатывали вхолостую.