Claude Code v2.1.251:モデル切り替えフック、/costのプロンプトキャッシュ統計、権限チェックの強化
Claude Code v2.1.251では、PreModelSwitchとPostModelSwitchフック、/costのプロンプトキャッシュ統計、/usageの支出上限バーが追加され、シンボリックリンク、サンドボックス、設定に関する権限の抜け穴が修正されました。
Claude Code v2.1.251は、変更履歴に71項目が並ぶ大規模なリリースです。モデル切り替えの前後で発火するフックイベント、プロンプトキャッシュと支出上限の表示、フォアグラウンドのサブエージェントの動作をRemote Controlクライアントへライブストリーミングする機能が追加されました。残りの変更の多くは権限まわりの強化で、シンボリックリンク経由のパス、プラグインコマンドのパス、サンドボックスの出力ファイル、適用前に承認が必要になった設定などが対象です。
新機能
モデル切り替えフック
新しいフックイベントPreModelSwitchとPostModelSwitchにより、フックでモデルの切り替えをブロック、確認、または注釈付けできるようになりました。また、再開時に実行されるSessionStartフックが、セッションの古さ(staleness)と推定される再キャッシュコストを受け取るようになりました。
プロンプトキャッシュと支出上限の表示
/costにセッションごとのプロンプトキャッシュ行が追加され、ヒット率、ミス、再キャッシュされたトークン数、ウォーム/コールドの状態を確認できます。ステータスラインスクリプトには対応するprompt_cacheオブジェクトが渡されます。支出上限が設定されたClaude appsゲートウェイ経由で利用している開発者向けには、/usageにSpend limitバーが、ステータスラインにrate_limits.spend_limitフィールドが追加されました。
Remote Controlでのサブエージェントのライブ表示
Remote Controlクライアントで、フォアグラウンドのサブエージェントのツール呼び出しと結果をライブストリーミングで受け取れるようになりました。デフォルトであるバックグラウンドのサブエージェントは、引き続きステータスのみが表示されます。
ヘルプにバックグラウンドセッションのコマンドを掲載
claude --helpにattach、logs、stop、respawn、rmが表示されるようになりました。実行中のバックグラウンドセッションに対して--resumeを使った場合のメッセージには、正確なclaude attach <id>コマンドが示されます。
モデルとeffortのデフォルト
CLAUDE_CODE_SUBAGENT_MODELは、すべてを上書きするのではなく、サブエージェントのデフォルトモデルを設定するものになりました。エージェント定義のmodel:や、起動ごとに明示的に指定したモデルがこれより優先されます。/effortがモデルごとにデフォルトのeffortレベルを保存するようになり、モデルを切り替えてもそれぞれの設定が保持されます。- シート制のEnterpriseサブスクリプションのデフォルトモデルが、他のプレミアムプランと同じOpus 5になりました。
- アクティブなモデルが認識済みのClaudeモデルでない場合(カスタムの
ANTHROPIC_BASE_URL経由のサードパーティモデルなど)、デフォルトのコミットトレーラーがCo-Authored-By: Claude Codeになりました。
承認が必要になった設定
- サンドボックスのTLSを終端する、サンドボックスの通信を独自のプロキシ経由にする、認証情報を注入する、またはサンドボックスの分離を弱めるサーバー管理設定は、適用前に承認が必要になりました。
- マネージド設定またはプロジェクト設定からの
ANTHROPIC_CUSTOM_HEADERSが、認証情報、組織/テナント、ルーティング、API動作に関するヘッダー(AuthorizationやHostなど)を設定する場合は承認が必要になりました。 - プロジェクトレベルの
.claude/settings.jsonのenvでは、CLAUDE_CONFIG_DIR、CLAUDE_CODE_TMPDIR、TMPDIR/TMP/TEMPが設定されなくなりました。これらはシェル、ユーザー設定、マネージド設定で指定してください。 - マネージド設定の承認ダイアログには、前回の承認以降に変更された設定のみが表示されるようになりました。
Claude in ChromeがClaude Codeの権限チェックを使用
Claude in Chromeのブラウザ操作は、常にClaude Codeの権限チェックを経由するようになりました。これにはテレメトリが無効なセッションも含まれ、以前はそうしたセッションでChrome拡張機能独自のプロンプトが使われていました。
ネイティブバイナリの縮小
ネイティブバイナリが約5 MB小さくなりました。これとは別に、使用頻度の低い6言語(1c、gml、isbl、mathematica、maxima、sqf)のシンタックスハイライトが削除され、変更履歴によるとこれによりバイナリが2.5 MB小さくなっています。
修正と改善
権限とセキュリティ
- ファイルツール(Read、Write、Edit)が、権限チェック後に作業ディレクトリ内で差し替えられたシンボリックリンクをたどり、承認された場所の外を読み書きできてしまう問題を修正
- GrepとGlobが、シンボリックリンクの検索パス経由で到達したファイルに
Read(...)の拒否ルールを適用していなかった問題を修正 - マーケットプレイスのエントリで宣言されたプラグインコマンドがプラグインディレクトリの外を指せる問題を修正。そのようなパスはパストラバーサルエラーで拒否されます
- 整数シェル変数に算術式を代入するBashコマンド(例:
OPTIND=1/0、RANDOM=2+2)が自動承認されていた問題を修正。承認を求めるようになりました - プロジェクト設定で詳細なベータトレースや生のAPIボディのログ記録を有効にできた問題と、下位スコープのベータトレースエンドポイントがマネージド設定やホストアプリで固定されたOTLPコレクターを迂回できた問題を修正
- サンドボックス内でコマンドを実行する際のBash出力ファイルの作成・読み戻し方法を変更し、サンドボックス内のコマンドがそれらをリダイレクトしたり置き換えたりできないようにしました
会話とモード
- モデルが思考のみを出力したターンの後、会話が「text content blocks must be non-empty」エラーで行き詰まる問題を修正
- effortがxhigh/maxで思考がオフのとき、Opus 5へのリクエストが失敗する問題を修正。この場合effortは
highとして送信されます - セッションの途中でマネージド設定の
disableAutoModeが届いた際、実行中のオートモードのセッションがデフォルトモードに戻らなかった問題を修正 - ディレクトリの変更によってセッションが同じIDの既存トランスクリプトに移された際、トランスクリプトが警告なく上書きされる問題を修正
バックグラウンドセッションとサブエージェント
- バックグラウンドセッションとそのサブエージェントが、
git worktree addで自ら作成したgit worktree内のファイルを編集できない問題を修正 - バックグラウンドに移したセッション(
←、/background、--bg)が、シェルでエクスポートされたVertex/Bedrockゲートウェイ(ANTHROPIC_*_BASE_URL+CLAUDE_CODE_SKIP_*_AUTH)を失い、すべてのリクエストが失敗する問題を修正 - 多数のサブエージェントを並列実行した際のTUIの遅延を修正。毎秒の進捗表示がトランスクリプトに積み重ならず、直前のものを置き換えるようになりました
- エージェントチームで、チームメイトの最終回答がチームリードに届かない問題を修正。内容のない「available」通知ではなく、アイドル通知で届くようになりました
SDK、MCP、クラウドセッション
- SDK MCPサーバーのハンドシェイク確認が失われた際に、SDKおよびクラウドセッションが無期限にハングする問題を修正。待機は70秒でタイムアウトし、そのサーバーのみが失敗として扱われます
--input-format stream-jsonで、メッセージidなしでクライアントから注入されたアシスタントのツール呼び出しが最初のものに統合され、結果が失われる問題を修正(古いセッションの再開時を含む)
パフォーマンスとプロバイダー
- 冗長なUI再レンダリングを削減し、インタラクティブセッションのターン中のCPU使用率を改善
- モデルのツール呼び出しが不正な形式だった場合、壊れた出力をリトライ時のコンテキストから除外するようになりました(Bedrock、Vertex、Foundryを含む)
/radioがBedrock、Vertex AI、Foundry、Claude Platform on AWSで、またテレメトリが無効な場合にも利用可能になりました
VS Code
- Remote Controlのバナーが、Remote Controlがオンまたは失敗したときに表示されるフッターのピルに変わり、claude.ai/codeでセッションを開けるようになりました。オン/オフは
/remote-controlで切り替えます
v2.1.251には合計71件の変更が含まれています。すべての項目は完全な変更履歴をご覧ください。
アップデート方法
- インストール済みのバージョンを確認:
claude --version - その場でアップデート:
claude update - プロジェクトの
.claude/settings.jsonのenvでCLAUDE_CONFIG_DIR、CLAUDE_CODE_TMPDIR、TMPDIR/TMP/TEMPを設定している場合は、プロジェクトレベルのenvではこれらが設定されなくなったため、シェル、ユーザー設定、マネージド設定に移してください。CLAUDE_CODE_SUBAGENT_MODELを使用している場合は、エージェント定義のmodel:や起動ごとに明示したモデルがこれより優先される点にご注意ください。