PreModelSwitch フックで model 切り替え時の制御が強化。symlink 脆弱性も複数修正——セキュリティ・透明性が同時に進む
Claude Code v2.1.251 リリース — モデル切り替えフック・キャッシュ状態追跡・セキュリティ修正
原題: v2.1.251
重要度の根拠: Claude Code の重要なフック API 追加・セキュリティ脆弱性修正・プロンプトキャッシュ可視化により、開発者の制御性と安全性が大幅向上
要約
Claude Codeがv2.1.251をリリース。モデル切り替え時のフック機能(PreModelSwitch・PostModelSwitch)を追加し、ユーザーやツールがモデル変更を検証・ブロック・記録できるように。プロンプトキャッシュの命中率・ミス数・再キャッシュコストをセッション単位で追跡できる`/cost`エンドポイント対応も実装。セキュリティ面では、ファイルツール(Read/Write/Edit)がシンボリックリンク経由で許可外のパスにアクセスする脆弱性や、プラグインコマンドがディレクトリ外を指す問題、Workflow ツールの権限チェック前の読み取りなど複数の問題を修正。併せてUI/UX改善(背景サブエージェントのストリーミング表示、TUIラグ軽減、エージェントチームの応答改善)を多数含む。
要点
- PreModelSwitch/PostModelSwitch フック——モデル切り替え時の検証・ブロック・記録が可能に
- プロンプトキャッシュの命中率・ミス・再キャッシュコストを`/cost`で追跡——コスト最適化の精度向上
- ファイル・Workflow ツールの symlink 権限チェック修正——セキュリティ脆弱性を複数解決
- 前景サブエージェントのツール呼び出しライブストリーミング——Remote Control 運用改善
- エージェントチームの応答・背景セッション通信・UI ラグを修正——安定性・ユーザビリティ向上
開発者向け技術解説(API・実装詳細・破壊的変更)を見る
v2.1.251では以下の API/フック拡張を提供: (1) `PreModelSwitch`・`PostModelSwitch`イベント——ユーザーやプラグインが model_id 変更を block/confirm/annotate 可能。(2) `SessionStart` resume フックが `session_staleness`(推定値)と `estimated_re_cache_cost` を付属。(3) `/cost` エンドポイントに `prompt_cache` オブジェクト追加——`hit_ratio`, `misses`, `tokens_recached`, `cache_type` (warm/cold)を返す。(4) 状態線スクリプト用に `rate_limits.spend_limit` フィールド実装。セキュリティでは symlink 攻撃対策(ファイルツール・Grep・Glob に権限チェック順序厳格化)、プラグイン path-traversal 検証強化、Workflow scriptPath 権限確認前読み込み修正。Opus 5 の effort 処理も修正——thinking 無効時は effort を `high` に正規化し「not supported」エラー解消。破壊的変更なし。
本文の日本語訳(全文)を見る
## 変更内容
- PreModelSwitch・PostModelSwitch フックイベント追加(モデル切り替えをブロック・確認・アノテーション可能)。SessionStart resume フックが session staleness と推定再キャッシュコストを受け取るように
- 前景サブエージェント(foreground subagent)のツール呼び出しと結果をリアルタイムストリーミング——Remote Control クライアント向け(背景サブエージェント(background subagents)はデフォルトで状態のみ表示)
- /usage に「Spend limit bar」を追加。Claude apps gateway 配下の spend limits 対応開発者向けに rate_limits.spend_limit ステータス行フィールドも追加
- /cost に per-session prompt-cache 行を追加(命中率・ミス・再キャッシュトークン・ウォーム/コールド)。ステータス行スクリプト用に同等の prompt_cache オブジェクトも追加
- claude --help に attach・logs・stop・respawn・rm を追加。実行中の背景セッションの --resume メッセージが正確な claude attach <id> コマンド名を表示するように
- ファイルツール(Read・Write・Edit)の脆弱性修正:権限チェック後、作業ディレクトリ内で入れ替わったシンボリックリンク経由での読み書きが許可外の場所にアクセスできていた問題を解決
- プラグインコマンド:マーケットプレイス登録時に plugin ディレクトリ外を指すコマンド定義が path-traversal エラーで拒否されるように修正
- プロジェクト設定が詳細なベータトレーシング・raw API ボディログを有効にしたり、管理設定で固定された OTLP コレクタをバイパスする低スコープベータトレーシングエンドポイント経由で設定を変更できていた問題を修正
- Workflow ツール:permission チェック実行前に scriptPath が session の読み込み対象外の場所を読み取り(エラーメッセージで引用も)していた問題を修正
- Grep・Glob:シンボリックリンク経由で検索パスに到達したファイルに Read(...) deny ルールを適用していなかった問題を修正
- モデルが thinking のみ出力した turn 後、会話が「text content blocks must be non-empty」エラーで stuck していた問題を修正
- 新規インストール時の初回起動が、アカウントの startup default が auto mode の場合でも default mode で起動していた問題を修正
- Opus 5:effort が xhigh/max で thinking が無効化されている場合、「effort … is not supported when thinking is disabled」エラーで失敗していた問題を修正。effort は high として送信されるように
- Claude Desktop 経由で別セッションから受け取ったメッセージへの返信:session id への SendMessage が「not reachable」エラーで失敗していたのを修正。Claude Desktop 経由で配信されるように
- 多数の並列サブエージェント実行時の TUI ラグ修正:per-second progress ticks が前の tick に置き換わるよう調整(transcript での積み重ねを防止)
- エージェントチーム修正:teammate の最終回答が team lead に到達していなかった問題を修正。idle notification に反映されるように(content-free な「available」notice の代わり)
- 背景サブエージェント:unnamed sibling・parent agent からのメッセージに返信できなかった問題を修正(from が agent type だったため address として機能していなかった)
- 管理設定の disableAutoMode が mid-session で到着した場合、既に実行中の auto-mode セッションを default mode に移動していなかった問題を修正
- 「Opus 1M に切り替えて 5x more context を利用」という tip が、現在の Opus モデルが既に 1M コンテキストウィンドウを持つ場合でも表示されていた問題を修正
- Claude apps gateway セッション:保存済み Anthropic profile(Console sign-in など)を active として扱い、/status に列挙・gateway 401 リトライ時に使用しようとしていた問題を修正(実際のリクエストでは使用されていなかった)
- クラウドセッション:ホストが session の初期 model を設定しているだけの場合でも、Claude に model が変更されたと伝えていた問題を修正
- Remote Control:組織ポリシーで Remote Control が無効化されている場合、failure 報告をしていたのを修正。静かな single notice が表示されるように
- /mcp reconnect on Remote Control:別セッションで server が disabled の場合、generic withheld-detail エラーではなく実際の対処法を表示するように修正
- --input-format stream-json:クライアント注入の assistant tool calls が message id なしで送信された場合、最初のものにマージされ結果が失われていた問題を修正(older sessions のリジューム時を含む)
- セッショントランスクリプト:ディレクトリ変更で session が同一 ID の既存トランスクリプト上に移動した場合、silent overwrite が発生していた問題を修正
- 背景セッション・サブセッション(本文が截断されているため訳出不可)
出典: https://github.com/anthropics/claude-code/releases/tag/v2.1.251
媒体: Claude Code Releases
※本記事は Anthropic / OpenAI / Google / Meta / Mistral / DeepSeek / Sakana 等各社の公開情報を基に AI (OpenAI GPT-4o-mini) が日本語で要約・分類した二次的著作物です。著作権法第32条の引用要件に基づき出典 URL を必ず併記しています。要約は AI 生成のため誤訳・誤解釈を含む可能性があります。詳細・正確な情報は必ず出典元の原文をご確認ください。