Перейти к содержимому

Хуки и моды

Оба механизма срабатывают на события клиента. Разница в том, где работает код. Источники: Hooks guide, Mods overview, сверено 23.10.2026.

Хук - команда оболочки (в документации есть ещё HTTP-запрос и хуки на основе запроса к модели), которую Claude Code запускает в определённый момент работы. Смысл в предсказуемости: действие происходит всегда, а не когда модель вспомнила. Типичные события: PreToolUse (перед вызовом инструмента, может его заблокировать), PostToolUse (после), SessionStart (начало или возобновление сессии).

Хук лежит в файле настроек, например .claude/settings.json, либо в hooks/hooks.json плагина. Пример по мотивам документации: после каждой правки файла прогонять форматтер.

{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }
]
}
]
}
}

matcher выбирает инструменты, к которым хук относится. В AI KIT так устроены уведомления: у dex-telegram-notifier в hooks/hooks.json скрипт повешен на события Stop, Notification и SubagentStop, и Telegram присылает сообщение, когда Claude закончил или ждёт вас (каталог утилит).

Мод - плагин, код которого (JavaScript или TypeScript) работает внутри процесса Claude Code и реагирует на события: вызов инструмента, отправленный запрос, отрисовка части интерфейса. Он может наблюдать событие, изменить его или взять на себя. А ещё мод может то, чего не умеют хуки-команды, skills и MCP: рисовать панель рядом с разговором или строку над полем ввода, добавлять команду, которая выполняется сразу без хода модели, и переопределять часть родного интерфейса.

Минимальный мод - три файла: plugin.json, hooks/hooks.json, который указывает на модуль, и сам модуль. Так же устроены моды каталога:

mods/dex-github-pr-tracker/
├── hooks/hooks.json "modules": ["./register.tsx"]
├── hooks/register.tsx точка входа
└── README.md

Моды каталога:

Мод Что показывает
dex-github-pr-tracker PR текущей ветки: проверки, вердикт ревью, треды; строка над вводом и панель /pr
dex-gitlab-mr-tracker То же для merge request GitLab, панель /mr
dex-jira-tracker Задачи Jira через jira-cli, панель /jira
dex-session-dispatcher Все сессии Claude Code на машине: кто работает, кто ждёт ответа

Подробности и установка: Моды в каталоге, устройство - Моды.

  • Моды включены по умолчанию в терминале с Claude Code 2.1.287 и новее; в приложении Desktop - с 2.1.286. Проверить версию: claude --version.
  • Мод не изолирован. Он работает с вашими правами: читает и пишет файлы, запускает процессы, делает сетевые запросы, видит каждый запрос и каждый вызов инструмента. Ставьте моды только от авторов, которым доверяете.
  • Посмотреть, на какие события подписан мод и что он просит у клиента, можно до установки: claude plugin validate ./папка-мода выводит строки hooks: и calls:.
  • Отключить один мод: выключить его плагин в /plugin. Отключить все: запуск с --safe-mode для одной сессии либо "disableAllHooks": true в ~/.claude/settings.json для всех (последнее останавливает и обычные хуки, и вашу строку состояния).
  • Моды работают в терминале, приложении Desktop и расширении VS Code. В claude -p и в облачных сессиях хуки мода исполняются, но интерфейс не рисуется.
  • Мод и утилита - разные вещи. Утилита запускает отдельный процесс на событие или команду и возвращает текст. Мод живёт внутри клиента. В каталоге один плагин не бывает и тем и другим.
  • API модов в каталоге считается нестабильным. По документации репозитория он меняется между релизами Claude Code без предупреждения: MOD_FRAMEWORK.md.
  • Старая переменная больше не нужна. CLAUDE_CODE_ENABLE_FUNCTION_HOOKS нужна была до 2.1.286; с 2.1.287 клиент её игнорирует.