Claude Code 2.1.294 чинит хуки, которые пропускали запреты

Хук, в котором прямо написано «Block commands that...», мог пропустить ровно ту команду, которую должен был остановить. В Claude Code 2.1.294 эту ошибку в хуках типа prompt и agent исправили, следует из заметок к релизу на GitHub.
Коротко
- Релиз Claude Code 2.1.294 вышел на GitHub 8 октября и содержит всего два пункта, оба про хуки, которые пользователь пишет обычным текстом, как инструкцию для модели.
- Первый пункт чинит prompt- и agent-хуки, которые пропускали запрещённое, второй улучшает оценку хуков на Stop и SubagentStop вроде «Carry on if the build is broken», чтобы агент реже останавливался раньше времени.
- Кроме двух коротких примеров, в заметках нет ни списка затронутых формулировок, ни сведений о том, с какой версии жила ошибка, так что масштаб проблемы неизвестен.
Если вы не следили, хуки в Claude Code начинались скромнее. В ранних гайдах сообщества тип хука всегда был command, а событий насчитывали шесть: PreToolUse, PostToolUse, SessionStart, Stop, Notification и SubagentStop. Сейчас документация Anthropic среди обработчиков называет промпты для LLM и субагентов, а по данным vibecoding.app, типов обработчиков уже пять (command, http, mcp_tool, prompt и agent), событий 31.
Хуки типа prompt и agent пропускали то, что должны были блокировать
Первая правка касается хуков, написанных как инструкция. Пример из заметок к релизу: «Block commands that...», то есть «блокируй команды, которые...». Такой хук должен был отсекать определённые команды, а на деле пропускал их. В версии 2.1.294, опубликованной на GitHub 8 октября, ошибку исправили для обработчиков двух типов, prompt и agent; командные, HTTP- и MCP-хуки в описании исправления не упоминаются.
Цена такой ошибки зависит от события, на котором висит хук. PreToolUse срабатывает до вызова инструмента и может его остановить, причём запрет из PreToolUse действует даже в режиме bypassPermissions и с флагом --dangerously-skip-permissions. Если хук на этом событии вместо запрета пропускал команду, отказывала защита, которую ставят как раз на случай, когда остальные проверки отключены.
Хуки на Stop и SubagentStop реже дают агенту остановиться раньше времени
Вторая правка про события остановки. По документации Anthropic, Stop срабатывает, когда Claude заканчивает отвечать, а SubagentStop срабатывает, когда заканчивает субагент. Пример хука из заметок: «Carry on if the build is broken», то есть «продолжай, если сборка сломана». Такая фраза должна удерживать агента в работе, пока проблема не решена.
По данным vibecoding.app, Stop относится к событиям, которые могут блокировать, и типичное его применение составляют циклы проверки и напоминания в духе «ты ещё не закончил». В заметках к релизу сказано, что оценку таких хуков, написанных как указание, улучшили, и Claude реже останавливается раньше времени. Как именно изменилась оценка, в заметках не раскрывается.
Почему хук из одной фразы вообще может ошибиться?
Потому что решение по такому хуку принимает модель, а логика не записана в коде. В документации Anthropic хуки описаны как пользовательские shell-команды, HTTP-адреса, вызовы MCP-инструментов, промпты для LLM или субагенты, которые автоматически запускаются в определённые моменты работы Claude Code. Когда событие наступает, обработчик получает JSON с контекстом и может вернуть решение.
У командного хука правило прописано в скрипте, и он отвечает одинаково на одинаковый вход. У prompt-хука правило заменяет фраза на естественном языке, и модели нужно понять, что разрешено. Представьте записку охраннику «не пускай курьеров без пропуска»: если охранник прочтёт её как справку о курьерах и пропустит всех, дверь окажется открытой. В заметках обе правки относятся именно к хукам, сформулированным как инструкция.
Каталог событий при этом большой. По данным того же vibecoding.app, конфигурация хуков вложена в три уровня: событие, группа матчеров и обработчик. Ошибка трактовки на нижнем уровне незаметна, пока хук не встретит команду, которую должен был остановить.
Хуки придумывали ради гарантий: как пишет vibecoding.app, цитируя документацию, они нужны, чтобы определённые действия происходили всегда, без расчёта на то, что LLM сама решит их выполнить. Prompt- и agent-хуки возвращают в эту схему суждение модели, и релиз 2.1.294 показывает, что оно может подвести. На наш взгляд, пока Anthropic не раскрывает, какие формулировки ломались, критичные запреты разумнее держать в командных хуках, где правило записано в коде.
Что проверить после обновления до 2.1.294
В заметках не сказано, с какой версии ошибка присутствовала и нужно ли переписывать существующие хуки. Если у вас есть prompt- или agent-хуки с запретами, после обновления стоит прогнать их на заведомо запрещённых командах и убедиться, что блок срабатывает. Для хуков на Stop и SubagentStop проверка обратная: агент должен продолжать работу, пока условие вроде сломанной сборки не снято.
Читайте также
- Claude Code 2.1.293 перестал переделывать уже сделанное
- На модах Claude Code Anthropic собрала /diff и AGENTS.md
- Проекты Claude Code научились запускать потоки локально
- Claude Code 2.1.251 стримит подагента в Remote Control
- У /code-review в Claude Code появились уровни усилий
- Claude Code получил режим Ultracode
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
