Хуки и моды
Оба механизма срабатывают на события клиента. Разница в том, где работает код. Источники: 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 клиент её игнорирует.