Инженерия · Claude Code hooks

PreModelSwitch
С 2.1.251: block / confirm / annotate до смены модели

Claude Code 2.1.251 (28.08.2026) добавляет хуки PreModelSwitch и PostModelSwitch. Changelog: block, confirm, or annotate a model switch. Resume-хуки SessionStart теперь получают session staleness и estimated re-cache cost. Это официальные события, не инструкция переписывать HTTP-заголовки и притворяться другим клиентом.

#PreModelSwitch#PostModelSwitch#2.1.251#block / confirm / annotate

Четыре факта для цитаты

PreModelSwitch

Имя события до переключения

Changelog ставит его рядом с PostModelSwitch. Срабатывает до смены из /model, пикера, SDK или resume.

block / confirm / annotate

Три официальных действия

Deny отменяет смену; ask требует подтверждения (в headless отказывается); annotate добавляет контекст следующему запросу. Exit code 2 тоже может блокировать. Семантика продуктового hook.

2.1.251

28.08.2026

Тот же changelog чинит effort … is not supported when thinking is disabled. Одно обновление — две поверхности.

re-cache cost

Новые поля resume

SessionStart resume hooks now receive session staleness and the estimated re-cache cost. Когда смена модели сбрасывает кэш — наблюдаемый сигнал стоимости, не обход биллинга.

SessionStart не видел /model посреди сессии

Существующие гайды по hooks закрывают Stop, SessionStart, события инструментов. До 2.1.251 у смены модели через /model или пикер не было пары хуков. PreModelSwitch — этот зазор: политика, аудит и промпты вешаются на саму смену, а не только на старт сессии.

Пикер может выставить per-session effort

Тот же релиз: пикер модели может задать effort и флаг ultracode на сессию; /effort помнит дефолт на модель. «Следующая модель», которую видит PreModelSwitch, может нести effort. Наблюдайте запрос. Не переписывайте Originator-подобные идентификаторы клиента.

Хронология

Существующие hooks

У Claude Code уже были SessionStart, Stop, события инструментов. Enterprise использует их для аудита и блокировки.

28.08.2026 · 2.1.251

Added PreModelSwitch and PostModelSwitch hook events (block, confirm, or annotate a model switch).

После обновления

Верьте локальному changelog и docs по hooks. Поля payload — schema вашей версии. Страница не выдумывает неопубликованные заголовки.

Подтверждено vs неверное чтение

Подтверждено

Имена событий, block/confirm/annotate, тот же путь что /model и пикер, staleness и re-cache cost на resume — changelog 2.1.251, перепроверка 30.08.2026.

Неверное чтение

«Хуком подделать другой model id на шлюзе» — подлежащее это собственный поток смены Claude Code. Страница фиксирует официальные события, не перепись заголовков или originator. «Ask откроет окно в headless» — changelog: в headless ask отказывается.

Хуки старта vs хуки смены

SessionStart: открытие / resume

Инъекция правил репо, проверка workspace. С 2.1.251 resume несёт устаревание и оценку перекэша. Середину сессии /model не видит.

PreModelSwitch: до каждой смены модели

«Этот репозиторий не уходит на тот ярус», «подтвердите до смены», «аннотируйте ограничение следующей модели». PostModelSwitch пишет после факта.

Как вешаются официальные hooks (наблюдение)

Обновитесь до 2.1.251+, зарегистрируйте PreModelSwitch / PostModelSwitch по документации hooks Claude Code. Действия changelog: block, confirm, annotate. Шагов подделки model id, переписи HTTP-заголовков и обхода политики моделей организации нет. Если политика должна остановить смену — официальный deny / exit 2.

QCode эти hooks не исполняет

PreModelSwitch живёт в клиенте Claude Code. QCode — API моделей. Какой продаваемый id реально попадёт после смены, следует из поля model и апстрим-каталога. Свой API — уже открытый ключ по официальной цене × сбор.

FAQ

Когда стреляет PreModelSwitch?

Публично: /model, пикер, SDK, смены из resume. Таблица событий в docs hooks вашей версии важнее.

Block против confirm?

Changelog: deny отменяет; ask подтверждает и в headless отказывается. Annotate не блокирует, добавляет контекст.

Это тот же фикс effort в 2.1.251?

Нет. Другая строка того дня — 400 на xhigh/max + thinking off. Hooks — события, effort — комбинация параметров.

Может ли hook убедить шлюз, что я другой клиент?

Страница не описывает перепись идентификаторов клиента или originator. Hooks наблюдают и ограничивают внутреннюю смену модели Claude Code.

re-cache cost на resume — это счёт?

Changelog: estimated re-cache cost для решений hook. Фактическое списание — токены и официальные цены, не это поле как отдельная книга.

QCode форвардит эти hooks?

Нет. Hooks — жизненный цикл клиента. API видит только Messages / Completions, которые вы отправили.

Источники

Changelog Claude Code 2.1.251 (28.08.2026): Added PreModelSwitch and PostModelSwitch hook events (block, confirm, or annotate a model switch); SessionStart resume hooks now receive session staleness and the estimated re-cache cost. code.claude.com/docs/en/changelog. Перепроверка 30.08.2026.

Смена модели может иметь официальные хуки; биллинг — по продаваемым id

PreModelSwitch — событие клиента Claude Code. Для API — официальная цена × сбор на продаваемые модели.