エンジニアリング · Claude Code hooks

PreModelSwitch
2.1.251 から。モデル切替の前に block / confirm / annotate

Claude Code 2.1.251(2026-08-28)が PreModelSwitch と PostModelSwitch hook を追加。changelog:block, confirm, or annotate a model switch。SessionStart の resume hook は session staleness と estimated re-cache cost も受け取る。公式の hook イベントであり、HTTP ヘッダを書き換えて別クライアントを装う手順ではない。

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

引用できる 4 点

PreModelSwitch

切替前のイベント名

changelog は PostModelSwitch と対にする。/model、ピッカー、SDK、resume による切替の前に走る。

block / confirm / annotate

公式の 3 動作

deny は切替を取り消す。ask は確認(headless では拒否)。annotate は次リクエストに文脈を足す。exit code 2 でも block できる。製品の hook 意味。

2.1.251

2026-08-28

同じ 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、ツールイベントがある。企業は監査と遮断に使う。

2026-08-28 · 2.1.251

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

更新のあと

手元の changelog と hooks 文書が正。payload は走らせている版の schema。未公開ヘッダは作らない。

確認済み vs 誤読

確認済み

イベント名、block/confirm/annotate、/model とピッカーと同じ経路、resume の staleness と re-cache cost——2.1.251 changelog(2026-08-30 確認)。

誤読

「hook で別のモデル id をゲートウェイに偽造」——主語は Claude Code 自身の切替。公式イベントだけ述べ、ヘッダや originator の書き換えは書かない。「headless で ask が窓を出す」——changelog は headless では拒否と書く。

開始フック vs 切替フック

SessionStart:開始 / resume

リポジトリ規則の注入、ワークスペース確認。2.1.251 から resume に陳旧度と再キャッシュ見積もり。途中の /model は見ない。

PreModelSwitch:モデル変更の前

「このリポジトリではその档へ移るな」「切替前に確認」「次のモデルに制約を注釈」。PostModelSwitch は事後記録。

公式 hook の付け方(観察)

2.1.251+ に上げ、Claude Code hooks 文書どおり PreModelSwitch / PostModelSwitch を登録。changelog の動作は block、confirm、annotate。モデル id の偽造、HTTP ヘッダの書き換え、組織のモデル方針迂回は書かない。方針が止める切替は公式の deny / exit 2。

QCode はこれらの hook を実行しない

PreModelSwitch は Claude Code クライアント内。QCode はモデル API。切替後に実際に当たる販売中 id は、送った model と上流カタログ。自前 API なら開通済み key で公式価格 × サービス料。

FAQ

PreModelSwitch は何で発火?

公開説明は /model、ピッカー、SDK、resume 起因の切替。版の hooks 文書のイベント表が正。

block と confirm の差は?

changelog:deny は取消。ask は確認、headless では拒否。annotate は止めず文脈を足す。

2.1.251 の effort 修正と同じ?

違う。同日のもう一行は xhigh/max + thinking off の 400。hook はイベント、effort はパラメータ。

hook でゲートウェイに別クライアントだと思わせられる?

クライアント識別子や originator の書き換えは書かない。hook が観察・拘束するのは Claude Code 内部のモデル切替。

resume の re-cache cost は請求?

changelog は estimated re-cache cost で、hook の判断用。実際の引き落としは token と公式価格。そのフィールド単独の台帳ではない。

QCode は hook を転送する?

しない。hook はクライアントのライフサイクル。API が見るのは送った Messages / Completions。

情報源

Claude Code changelog 2.1.251(2026-08-28):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。2026-08-30 確認。

モデル切替には公式フックがある。課金は販売中 id

PreModelSwitch は Claude Code クライアントのイベント。API が要るなら、売っている型番を公式価格 × サービス料で。