3 сентября 2026 г.
Плагины Claude Code переходят с конфига на код: хуки станут функциями
Anthropic 03.09.2026 показала пятый тип хуков — function: вместо строки в hooks.json хук пишется функцией на TypeScript. Фича не выпущена, отклик в issue #91870 решит, поедет ли она в прод.

ClaudeDevs
@claudedevs
Мы пробуем новый способ расширять и настраивать Claude Code: Function Hooks. Вот пара видео о том, что с ними можно будет делать. Пока не зашипили — очень ждём фидбека в нашем issue на GitHub.
· 78,8 тыс. просмотров
В Claude Code работают четыре типа хуков — command, prompt, agent и http, и каждый описан строкой в hooks.json. Мейнтейнер плагина OrchestKit Йонатан Гросс пишет в том же issue, что везёт 153 записи в hooks.json и около 50 тысяч строк TypeScript: хук описан и в конфиге, и в своей карте диспатча, а при расхождении молча ничего не делает.
Теперь предлагается один ключ в конфиге и код рядом. В hooks/hooks.json добавляется `{"modules": ["./my-hooks.ts"]}`, а в папке hooks/ лежит файл, экспортирующий `register(on)`. Команда `claude plugin validate` перечисляет события, на которые плагин подписался, ещё до первого запуска.
Хук стал функцией. Сигнатура — `($, e, next)`, как middleware в Koa. Минимальный пример из техдока Anthropic перехватывает вызов Bash и возвращает отказ на `rm -rf /`. Пара PreToolUse и PostToolUse больше не нужна: у одного события пять размещений относительно действия — before, after, during, instead и modifying, и последнее правит аргументы на лету, например поднимает таймаут.
Хуки достают и до интерфейса. Событие ui.render оборачивает рендер компонентов, а один хук на ui.press ловит нажатие одной кнопки и в терминале, и в десктопном Claude Code. Аудит-лог сворачивается в одну функцию: `on("*")` видит каждое событие, включая вызовы других плагинов и отказы.
Что плагину доступно, решает админ. У модуля нет свободного доступа к файлам и сети: всё идёт через объект `$` вида `$.tool.call`, `$.ui.log`, `$.fs.read`, и модуль, который трогает `$` иначе, не проходит validate. Плагин организации регистрируется первым и на событии engine.create отдаёт вниз урезанный `$` — снятую способность ни один плагин ниже не вернёт. Автор предложения, инженер Anthropic Элис Потит, уточнила в треде: `$.fs`, `$.http` и `$.process` в наборе, скорее всего, будут.
Anthropic пишет в issue прямо: зашипится это или нет, определит отклик сообщества.
Первоисточник

