Source: https://aiprimetech.io/ru/claude-code/hooks/ [Главная](/ru/) › [Claude Code](/ru/claude-code/) › Хуки [Обзор](/ru/claude-code/)[Установка](/ru/claude-code/install/)[Справочник CLI](/ru/claude-code/cli/)[Цены и лимиты](/ru/claude-code/pricing/)[Agent SDK](/ru/claude-code/sdk/)[Навыки и плагины](/ru/claude-code/skills/)[GitHub](/ru/claude-code/github/)[Веб, настольное приложение и IDE](/ru/claude-code/web-and-desktop/)[Модели](/ru/claude-code/models/)[Ошибки](/ru/claude-code/errors/)[Открытый исходный код?](/ru/claude-code/open-source/)[Практическое руководство](/ru/claude-code/tutorial/)[Для студентов](/ru/claude-code/for-students/)[Автоматизация QA](/ru/claude-code/qa-automation/)[Сравнение с Cursor](/ru/claude-code/vs-cursor/)[Сравнение с Codex и OpenCode](/ru/claude-code/vs-codex/)[Субагенты](/ru/claude-code/subagents/)[Хуки](/ru/claude-code/hooks/)[MCP](/ru/claude-code/mcp/)[Экосистема](/ru/claude-code/ecosystem/)[VS Code](/ru/claude-code/vscode/)[OpenRouter](/ru/claude-code/openrouter/)[Ограничения частоты запросов](/ru/claude-code/rate-limits/)[Руководство на китайском языке](/claude-code/zh/) Последнее обновление: 11 октября 2026 # Хуки Claude Code: детерминированный контроль над действиями агента Хуки — это команды оболочки, которые Claude Code запускает в определённые моменты своего цикла: перед вызовом инструмента, после него, при отправке запроса и при завершении работы. В отличие от инструкций в CLAUDE.md, которые модель может соблюдать или игнорировать, хук выполняется всегда. С их помощью вы задаёте правила, которые соблюдаются неизменно. ## TLDR - Настраиваются в .claude/settings.json (для проекта) или ~/.claude/settings.json (для пользователя), либо с помощью /hooks. - События: PreToolUse, PostToolUse, UserPromptSubmit, Notification, Stop, SubagentStop, PreCompact, SessionStart. - Хук получает JSON через stdin (имя инструмента, входные данные, сессия); код завершения 0 разрешает действие, а код 2 блокирует его и передаёт stderr обратно Claude. - Типичные сценарии: форматирование после каждого изменения, блокировка опасных команд, обязательное прохождение тестов перед завершением работы, уведомления на рабочем столе. ## Структура хука ``` { "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "npx prettier --write \"$(jq -r .tool_input.file_path)\"" } ] } ] } } ``` Три части: событие, условие сопоставления (регулярное выражение для имени инструмента в событиях инструментов; опустите его, чтобы обрабатывать всё) и одна или несколько команд. Команда получает через stdin объект JSON с описанием события — для событий инструментов он включает tool_name и tool_input, с помощью которого пример выше находит только что изменённый файл. Поместите его в .claude/settings.json , чтобы использовать совместно в репозитории, в ~/.claude/settings.json для личного использования, либо выполните /hooks и позвольте Claude Code записать его. ## События - PreToolUse — перед запуском инструмента. Единственное событие, которое может блокировать: код завершения 2 отменяет вызов, а Claude читает ваш stderr как объяснение причины. - PostToolUse — после успешного выполнения инструмента. Форматирование, линтинг и проверка типов в изменённом файле. - UserPromptSubmit — при отправке запроса; может добавлять контекст или отклонять запрос. - Stop / SubagentStop — когда агент (или субагент) собирается завершить работу. Код завершения 2 здесь означает «ещё не закончено» — классический сценарий: запрет завершения работы, пока тесты не проходят. - PreCompact — перед /compact; сохраните всё необходимое из полной истории диалога. - SessionStart — при начале или возобновлении сессии; загрузка окружения, вывод напоминаний. - Notification — когда Claude Code требуется ваше внимание (запрос разрешения, ожидание); подключите уведомления на рабочем столе или в Slack. ## Блокировка опасных команд ``` #!/usr/bin/env bash # .claude/hooks/guard.sh -- PreToolUse, matcher: Bash cmd=$(jq -r '.tool_input.command') if echo "$cmd" | grep -Eq 'rm -rf|git push --force|DROP TABLE|--no-verify'; then echo "blocked by guard.sh: $cmd" >&2 exit 2 fi exit 0 ``` Код завершения 2 задаёт поведение: вызов инструмента не выполняется, а всё, что хук вывел в stderr, становится объяснением, которое видит Claude, — так он может выбрать другой подход вместо повторения того же действия. Любой другой ненулевой код завершения записывается в журнал, но не блокирует вызов. ## «Не завершай работу, пока тесты не пройдут» ``` #!/usr/bin/env bash # Stop hook: refuse to finish while the suite is red if ! npm test --silent >/tmp/claude-test.log 2>&1; then echo "Tests are failing; fix them before finishing:" >&2 tail -n 40 /tmp/claude-test.log >&2 exit 2 fi ``` Используйте вместе с ограничением --max-turns при запусках без интерфейса, чтобы ошибка, которую действительно невозможно исправить, не приводила к бесконечному циклу. ## Хуки, CLAUDE.md и разрешения CLAUDE.md содержит рекомендации, которые читает модель; /permissions — это список действий, которые она может выполнять без запроса разрешения; хуки — это код, который выполняется в любом случае. Используйте CLAUDE.md для стиля и контекста, разрешения — для определения того, что можно выполнять сразу, а что требует согласования, и хуки — для всего, что должно соблюдаться каждый раз: форматирования, поиска секретов, обязательных проверок тестов и журналов аудита. Они работают совместно: разрешение позволяет запускать Bash(git *) , а хук PreToolUse всё равно блокирует git push --force. ## Хуки и шлюз Хуки выполняются локально и никогда не обращаются к API, поэтому ничего не меняется, когда Claude Code направлен на ANTHROPIC_BASE_URL=https://aiprimetech.io. Полезное сочетание: хук Stop , который выводит /cost— статистику использования в таком формате на основе ваших журналов, чтобы команда с оплатой по мере использования видела стоимость каждой сессии при её завершении. ## Сначала попробуйте бесплатно Новые аккаунты получают $5 бесплатного баланса для API по коду CLAUDECODE — этого хватит на вечер работы с Claude Code на Sonnet — затем кредиты с балансом в 7.69231 раза больше номинала. ``` export ANTHROPIC_BASE_URL=https://aiprimetech.io export ANTHROPIC_API_KEY=your_key ``` [Создать аккаунт с кодом CLAUDECODE](/register?promo=CLAUDECODE) ## Часто задаваемые вопросы Что такое хуки Claude Code? Команды оболочки, которые Claude Code автоматически запускает при событиях своего цикла: до и после вызовов инструментов, при отправке запроса и при завершении работы. Их выполнение детерминировано, в отличие от инструкций в CLAUDE.md.Как заблокировать команду с помощью хука? Используйте хук PreToolUse с условием сопоставления Bash, который проверяет tool_input.command из stdin и завершается с кодом 2; текст stderr показывается Claude как объяснение причины.Где размещать хуки? В .claude/settings.json проекта (для совместного использования) или ~/.claude/settings.json (для личного использования), в разделе hooks; /hooks позволяет редактировать их интерактивно. ## Запускайте Claude Code через шлюз Те же модели, две переменные окружения, кредиты с балансом в 7.69231 раза больше номинала — или безлимитный тариф с фиксированной оплатой. Для новых аккаунтов: $5 бесплатного баланса для API по коду CLAUDECODE.[Получить API-ключ](/register?promo=CLAUDECODE) [Посмотреть безлимитные тарифы](/ru/plans/) AI Prime Tech — независимый API-шлюз, который не связан с Anthropic, не одобрен и не спонсируется этой компанией. «Claude» и «Claude Code» — товарные знаки Anthropic. Описанные здесь возможности Claude Code соответствуют публичной документации Anthropic на момент написания и часто меняются; цены и списки моделей на этой странице берутся из текущих настроек шлюза. ## Другие руководства по Claude Code [Claude Code: полное руководство](/ru/claude-code/)[Как установить Claude Code](/ru/claude-code/install/)[Документация CLI Claude Code: команды и флаги](/ru/claude-code/cli/)[Цены и лимиты Claude Code: подробное объяснение](/ru/claude-code/pricing/)[Claude Code SDK, теперь Claude Agent SDK](/ru/claude-code/sdk/)[Навыки и плагины Claude Code](/ru/claude-code/skills/)[Claude Code в GitHub: App, Action и @claude](/ru/claude-code/github/)[Есть ли у Claude Code веб-интерфейс? Веб-версия, настольное приложение и IDE](/ru/claude-code/web-and-desktop/)[Какую модель использует Claude Code и как её изменить](/ru/claude-code/models/)[Ошибки Claude Code и способы их исправления](/ru/claude-code/errors/)[Открыт ли исходный код Claude Code?](/ru/claude-code/open-source/)[Практическое руководство по Claude Code: ваш первый полноценный сеанс](/ru/claude-code/tutorial/)[Claude для студентов: Claude Code, API и что на самом деле дают образовательные программы](/ru/claude-code/for-students/)[Как использовать Claude Code для автоматизации QA](/ru/claude-code/qa-automation/)[Claude Code и Cursor: что и когда выбрать — и как использовать оба инструмента](/ru/claude-code/vs-cursor/)[Claude Code, Codex и OpenCode: сравнение терминальных агентов](/ru/claude-code/vs-codex/)[Субагенты Claude Code: как они работают, как их определять и как устроены команды агентов](/ru/claude-code/subagents/)[MCP в Claude Code: подключение серверов, области действия, удалённый MCP и реальные примеры](/ru/claude-code/mcp/)[Экосистема Claude Code: маршрутизаторы, фреймворки, плагины и списки, в которых они собраны](/ru/claude-code/ecosystem/)[Claude Code в VS Code: расширение, работа через терминал и ошибки](/ru/claude-code/vscode/)[Как использовать OpenRouter в Claude Code и когда этого делать не стоит](/ru/claude-code/openrouter/)[Ошибка ограничения частоты запросов Claude: что означает «API error: rate limit reached» и как её исправить](/ru/claude-code/rate-limits/)[Как пользоваться Claude Code: от установки до повседневной работы](/claude-code/zh/)