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-заголовки и притворяться другим клиентом.
Четыре факта для цитаты
Имя события до переключения
Changelog ставит его рядом с PostModelSwitch. Срабатывает до смены из /model, пикера, SDK или resume.
Три официальных действия
Deny отменяет смену; ask требует подтверждения (в headless отказывается); annotate добавляет контекст следующему запросу. Exit code 2 тоже может блокировать. Семантика продуктового hook.
28.08.2026
Тот же changelog чинит effort … is not supported when thinking is disabled. Одно обновление — две поверхности.
Новые поля 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-подобные идентификаторы клиента.
Хронология
У Claude Code уже были SessionStart, Stop, события инструментов. Enterprise использует их для аудита и блокировки.
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 — официальная цена × сбор на продаваемые модели.
Рядом
Автоматизация hooks Claude Code
Существующие SessionStart / Stop; страница добавляет только срез смены модели.
Slash-команды Claude Code
/model и пикер — один из триггеров PreModelSwitch.
Anthropic Agent Skills
Другая официальная поверхность расширений; не мешайте имена с событиями hook.
Разбор changelog Claude Code 2.1.251, не обещание неопубликованных полей payload. QCode не исполняет клиентские hooks и не обходит политику моделей организации.