Главная › Claude Code › Хуки
ОбзорУстановкаСправочник CLIЦены и лимитыAgent SDKНавыки и плагиныGitHubВеб, настольное приложение и IDEМоделиОшибкиОткрытый исходный код?Практическое руководствоДля студентовАвтоматизация QAСравнение с CursorСравнение с Codex и OpenCodeСубагентыХукиMCPЭкосистемаVS CodeOpenRouterОграничения частоты запросовРуководство на китайском языке
Последнее обновление: 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

Часто задаваемые вопросы

Что такое хуки 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-ключ Посмотреть безлимитные тарифы

AI Prime Tech — независимый API-шлюз, который не связан с Anthropic, не одобрен и не спонсируется этой компанией. «Claude» и «Claude Code» — товарные знаки Anthropic. Описанные здесь возможности Claude Code соответствуют публичной документации Anthropic на момент написания и часто меняются; цены и списки моделей на этой странице берутся из текущих настроек шлюза.

Другие руководства по Claude Code

Claude Code: полное руководствоКак установить Claude CodeДокументация CLI Claude Code: команды и флагиЦены и лимиты Claude Code: подробное объяснениеClaude Code SDK, теперь Claude Agent SDKНавыки и плагины Claude CodeClaude Code в GitHub: App, Action и @claudeЕсть ли у Claude Code веб-интерфейс? Веб-версия, настольное приложение и IDEКакую модель использует Claude Code и как её изменитьОшибки Claude Code и способы их исправленияОткрыт ли исходный код Claude Code?Практическое руководство по Claude Code: ваш первый полноценный сеансClaude для студентов: Claude Code, API и что на самом деле дают образовательные программыКак использовать Claude Code для автоматизации QAClaude Code и Cursor: что и когда выбрать — и как использовать оба инструментаClaude Code, Codex и OpenCode: сравнение терминальных агентовСубагенты Claude Code: как они работают, как их определять и как устроены команды агентовMCP в Claude Code: подключение серверов, области действия, удалённый MCP и реальные примерыЭкосистема Claude Code: маршрутизаторы, фреймворки, плагины и списки, в которых они собраныClaude Code в VS Code: расширение, работа через терминал и ошибкиКак использовать OpenRouter в Claude Code и когда этого делать не стоитОшибка ограничения частоты запросов Claude: что означает «API error: rate limit reached» и как её исправитьКак пользоваться Claude Code: от установки до повседневной работы