Hooks в Claude Code: автодействия по событию
Что такое hooks в Claude Code, чем они отличаются от команд и как заставить инструмент сам запускать проверки после правок. Простыми словами, на опыте QuboLab.
Обновлено 30 июня 2026 г.
Hook — это автодействие, которое Claude Code выполняет сам, когда наступает определённое событие. Например: каждый раз, когда помощник изменил файл, автоматически запускается проверка кода или форматирование — без вашей команды. Если команда со слешем — это «по кнопке, когда я захотел», то hook — «само, по событию». Удобно для того, что должно происходить всегда и без напоминаний.
Определение
Hook (по-английски «крючок», «зацепка») — это правило вида «когда случилось X — сделай Y», которое срабатывает автоматически. Вы один раз описываете его в настройках, и дальше Claude Code сам исполняет его в нужный момент.
События бывают разные: помощник собирается выполнить инструмент, уже выполнил его, изменил файл, завершил ответ. К каждому такому моменту можно «прицепить» свою команду — например, прогнать линтер (проверку стиля кода) или автоформатирование. Главное отличие от обычной просьбы: hook не нужно вызывать. Он отрабатывает сам, потому что вы заранее договорились, что в этой ситуации он нужен.
Когда использовать
Hooks хороши там, где действие должно происходить всегда, а не когда вы вспомнили:
- Автопроверка кода. После каждой правки — прогнать проверку на ошибки, чтобы поймать их сразу, а не на «боевом» сайте.
- Автоформатирование. Привести код к единому виду, не задумываясь об этом вручную.
- Защита от опасного. Hook может перехватить рискованную команду и потребовать подтверждения — связка с режимом разрешений.
Когда НЕ стоит
Не делайте hook из всего:
- Разовое действие. Если что-то нужно один раз — попросите словами, hook тут лишний.
- Когда вы ещё не нащупали процесс. Сначала пройдите задачу руками пару раз, поймите, что именно должно срабатывать автоматически, — и только потом фиксируйте в hook.
- Тяжёлая операция на каждый чих. Если на событие повесить долгую команду, работа начнёт тормозить. Hook должен быть быстрым.
Пошаговая инструкция
Hooks настраиваются в файле настроек Claude Code. Покажу логику на самом частом примере — автопроверка после правки файла.
- 1Решить, что и когда должно срабатывать
Сформулируйте правило словами: «после того как помощник изменил файл — запусти проверку кода». Сначала на бумаге, чтобы понять событие (изменение файла) и действие (проверка).
- 2Открыть настройки
Hooks описывают в файле настроек
.claude/settings.jsonвнутри проекта. Это обычный текстовый файл; если его нет — его можно создать. В нём есть разделhooks, куда и добавляют правила. - 3Добавить правило
В правиле указывают событие (например, после применения инструмента, меняющего файлы) и команду, которую надо выполнить. Команда — обычная строчка терминала, та же, что вы запускали бы руками (например, запуск линтера или форматтера).
- 4Проверить на деле
Дайте помощнику изменить любой файл и посмотрите: проверка должна запуститься сама. Если что-то не так — поправьте команду или событие в настройках. Это обычная отладка, как с любым правилом.
Пример
Самый ценный hook в реальной работе — автопроверка кода после правок. Логика простая: помощник что-то изменил → сразу прогоняется проверка → если она нашла проблему, видно её тут же, а не когда сайт уже сломался у пользователей.
В настройках это выглядит примерно так (упрощённо):
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "npm run lint" }
]
}
]
}
}
Здесь событие — «помощник применил инструмент правки файла» (Edit или Write), а действие — запустить проверку npm run lint. Дальше это происходит само, и мне не нужно каждый раз помнить «а проверил ли я».
Частые ошибки
На чём спотыкаются новички:
- Путают hook и команду. Команду вы запускаете сами; hook срабатывает автоматически на событие. Если действие нужно «по требованию» — это команда, а не hook.
- Вешают на событие долгую операцию. Тяжёлая команда на каждую правку превращает работу в ожидание. Hook должен быть быстрым.
- Не проверяют, что hook вообще сработал. Добавили правило и забыли. Стоит один раз убедиться, что оно отрабатывает, иначе вы думаете, что защищены, а это не так.
- Ошибка в команде. Если в hook вписана команда, которой нет в проекте, он будет молча падать. Сначала проверьте, что та же команда работает руками.
Частые вопросы
Чем hook отличается от slash-команды?+
Команду со слешем вы запускаете сами, когда захотели. Hook срабатывает автоматически на событие — например, после каждой правки файла — без вашего участия. Команда — «по кнопке», hook — «само».
Нужно ли уметь программировать, чтобы настроить hook?+
Чуть-чуть технического придётся коснуться: hook описывают в текстовом файле настроек, и в нём указывают команду терминала. Но сама команда — обычно та же, что вы и так запускали бы руками (проверка, форматирование). Программировать с нуля не нужно.
Hooks работают во всех проектах сразу?+
По умолчанию hook живёт в настройках конкретного проекта (.claude/settings.json). Можно вынести правило в личные настройки — тогда оно будет действовать во всех ваших проектах. Чаще удобнее держать hooks по проектам, потому что проверки у всех разные.
Может ли hook остановить опасное действие?+
Да, это одно из главных применений. Hook на событие «перед выполнением команды» может проверить, что именно собирается сделать помощник, и потребовать подтверждения или вовсе заблокировать рискованный шаг. Это работает в связке с режимом разрешений.
Термины
- Hook (автодействие)Hook — это автодействие, которое Claude Code выполняет сам, когда наступает событие: например, после каждой правки файла автоматически запускается проверка кода. В отличие от команды со слешем, hook не нужно вызывать — он срабатывает по событию без вашего участия.
- Режим разрешений (permission mode)Режим разрешений определяет, что Claude Code может делать сам, а что — только с вашего подтверждения. От «спрашивать перед каждым действием» до «разрешить всё без вопросов». Это рычаг безопасности: на черновике можно ослабить, на «боевом» проекте — держать строгим.
- Команда со слешем (slash command)Команда со слешем — это короткая команда в Claude Code, которая начинается со знака «/», например `/init` (настроить проект) или `/clear` (начать беседу заново). Это быстрый способ запустить нужное действие, не объясняя его словами каждый раз.