
Claude Code v2.1.250〜v2.1.251 の主要アップデート - プロジェクト設定の env 制限とプロンプトキャッシュの可視化
クラウド事業統括本部の石川です。Claude Code の v2.1.250 〜 v2.1.251(2026-08-27 〜 2026-08-28)のアップデートをまとめてご紹介します。権限まわりの修正が目立つ回で、設定を細かく作り込んでいる方ほど確認しておきたい内容だと感じます。今日は、プロンプトキャッシュの可視化について試してみました。
前回のアップデート記事はこちらです。
アップデートサマリー
対象は 2 バージョン(v2.1.250 〜 v2.1.251、2026-08-27 〜 2026-08-28)、合計 72 件です。v2.1.250 は CHANGELOG に「Bug fixes and reliability improvements」の 1 行のみが記載されており、残る 71 件は v2.1.251 のものです。内訳は修正が最も多く、次いで改善、権限・サンドボックスに関わる変更、新機能、破壊的変更と続きます。
注目のアップデート
/cost にプロンプトキャッシュの状況が追加(v2.1.251)
/cost にセッション単位のプロンプトキャッシュ行が追加されました。ヒット率・ミス数・再キャッシュされたトークン数・warm/cold が表示され、ステータスラインスクリプト用に対応する prompt_cache オブジェクトも追加されています。
セッションが長引くほどキャッシュの効き方はコストに直結するので、数字で切り分けられるようになったのは運用上ありがたいと感じます。
モデル切り替えのフックイベントが追加(v2.1.251)
PreModelSwitch と PostModelSwitch のフックイベントが追加され、モデル切り替えのブロック・確認・注釈ができるようになりました。あわせて SessionStart の resume フックが、セッションの陳腐化(staleness)と再キャッシュの推定コストを受け取るようになっています。
使うモデルを組織で揃えたい場合や、意図しない切り替えを避けたい場合に、フックで止められる意味は大きいと感じます。
thinking のみのターンで会話が止まる問題を修正(v2.1.251)
モデルが thinking のみを出力したターンの後に「text content blocks must be non-empty」エラーで会話が進まなくなる問題が修正されました。
会話そのものが進まなくなる種類の不具合なので、心当たりのある方は優先して更新する価値があると感じます。
バックグラウンド化で Vertex / Bedrock のゲートウェイ設定が失われる問題を修正(v2.1.251)
バックグラウンド化したセッション(←、/background、--bg)が、シェルでエクスポートされた Vertex / Bedrock のゲートウェイ設定(ANTHROPIC_*_BASE_URL と CLAUDE_CODE_SKIP_*_AUTH)を失い、すべてのリクエストが失敗する問題が修正されました。
Bedrock や Vertex AI をゲートウェイ経由で使っている環境では、バックグラウンド実行が丸ごと機能しない状態だったことになり、影響は小さくなかったのではないでしょうか。
ファイル操作ツールがシンボリックリンクの差し替えを追う問題を修正(v2.1.251)
ファイル操作ツール(Read / Write / Edit)が、権限チェックの後に作業ディレクトリ内で差し替えられたシンボリックリンクを追ってしまい、承認された場所の外を読み書きしうる問題が修正されました。
作業ディレクトリで範囲を絞っていても回避されうる経路だったため、allow / deny を細かく運用している環境ほど重要な修正だと感じます。
Bash の権限チェックが算術式代入を自動承認する問題を修正(v2.1.251)
Bash の権限チェックが、整数のシェル変数へ算術式を代入するコマンド(例: OPTIND=1/0、RANDOM=2+2)を自動承認してしまう問題が修正されました。これらは承認を求めるようになっています。
一見無害な変数代入が自動承認の対象になっていたわけで、権限チェックの網羅性という観点で目を通しておきたい修正だと感じます。
対象バージョンと期間
| バージョン | 公開日 | CHANGELOG 記載数 |
|---|---|---|
| v2.1.250 | 2026-08-27 | 1 |
| v2.1.251 | 2026-08-28 | 71 |
新機能
PreModelSwitch/PostModelSwitchフックイベントが追加され、モデル切り替えのブロック・確認・注釈が可能になりました。SessionStartの resume フックはセッションの陳腐化(staleness)と再キャッシュの推定コストを受け取ります(v2.1.251)- フォアグラウンドで動くサブエージェントのツール呼び出しと結果が、Remote Control クライアントへライブストリーミングされるようになりました。既定であるバックグラウンドのサブエージェントは従来どおりステータスのみの表示です(v2.1.251)
/costにセッション単位のプロンプトキャッシュ行(ヒット率・ミス数・再キャッシュされたトークン数・warm/cold)と、ステータスラインスクリプト用のprompt_cacheオブジェクトが追加されました(v2.1.251)/usageに Spend limit バーが追加され、ステータスライン用にrate_limits.spend_limitフィールドが追加されました。支出上限が設定された Claude apps ゲートウェイ配下の開発者が対象です(v2.1.251)claude --helpにattach/logs/stop/respawn/rmが掲載されました。実行中のバックグラウンドセッションに対する--resumeのメッセージも、実行すべきclaude attach <id>コマンドを正確に示します(v2.1.251)
権限・サンドボックスまわりの変更
- ファイル操作ツール(Read / Write / Edit)が、権限チェックの後に作業ディレクトリ内で差し替えられたシンボリックリンクを追ってしまい、承認された場所の外を読み書きしうる問題が修正されました(v2.1.251)
- Grep と Glob が、シンボリックリンク経由の検索パスから到達したファイルに
Read(...)の deny ルールを適用していなかった問題が修正されました(v2.1.251) - マーケットプレイスのエントリで宣言されたプラグインコマンドがプラグインディレクトリの外を指せてしまう問題が修正されました。そのようなパスはパストラバーサルエラーとして拒否されます(v2.1.251)
- Workflow ツールが、権限チェックの前に、セッションが読み取りを許可されていない
scriptPathを読み込み、かつエラーメッセージ中に引用してしまう問題が修正されました(v2.1.251) - プロジェクト設定から詳細なベータトレーシングや生の API ボディログを有効化できてしまう問題と、より低いスコープのベータトレーシングエンドポイントが managed settings やホストアプリで固定された OTLP コレクターを迂回する問題が修正されました(v2.1.251)
- Bash の権限チェックが、整数のシェル変数へ算術式を代入するコマンド(例:
OPTIND=1/0、RANDOM=2+2)を自動承認してしまう問題が修正されました(v2.1.251) - managed settings の
disableAutoModeがセッションの途中で届いた際、すでに auto モードで動作中のセッションが default モードに戻らない問題が修正されました(v2.1.251) - Claude in Chrome のブラウザ操作が、テレメトリを無効化したセッションを含めて常に Claude Code の権限チェックを通るようになりました。従来それらのセッションでは Chrome 拡張自身のプロンプトが使われていました(v2.1.251)
- サンドボックスの TLS を終端する、サンドボックスのトラフィックを自前のプロキシ経由にする、認証情報を注入する、サンドボックスの隔離を弱める、といったサーバー管理の設定は、適用前に承認が必要になりました(v2.1.251)
- managed settings やプロジェクト設定からの
ANTHROPIC_CUSTOM_HEADERSが、認証情報・組織/テナント・ルーティング・API 挙動に関わるヘッダー(Authorization、Hostなど)を設定する場合に承認を要するようになりました(v2.1.251) - サンドボックス内で実行されるコマンドの Bash 出力ファイルの作成方法と読み戻し方が変更され、サンドボックス化されたコマンドがそれらをリダイレクトしたり置き換えたりできなくなりました(v2.1.251)
- エラーメッセージ・メニュー・コマンド結果における MCP サーバー名のサニタイズが改善されました(v2.1.251)
改善
- 対話セッションのターン中の CPU 使用率が、冗長な UI の再描画を削減することで改善されました(v2.1.251)
- インストールサイズが改善され、ネイティブバイナリが約 5 MB 小さくなりました(v2.1.251)
CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST配下(Claude Desktop など)での Amazon Bedrock のセッション開始が改善され、Bedrock のモデル ID または ARN が与えられたセッションが推論プロファイルの探索を待たなくなりました(v2.1.251)- シート課金の Enterprise サブスクリプションの既定モデルが、他のプレミアムプランと同様に Opus 5 になりました(v2.1.251)
/effortが既定の effort レベルをモデルごとに保存するようになり、モデルを切り替えても各モデルの設定が維持されます(v2.1.251)/radioが Bedrock・Vertex AI・Foundry・Claude Platform on AWS でも、またテレメトリを無効化している場合でも利用できるようになりました(v2.1.251)- Bedrock・Vertex・Foundry 上、およびテレメトリ無効時のフッターの PR バッジが、
gh pr viewではなくgh auth token・GH_TOKEN・GITHUB_TOKENを用いて GitHub API を直接呼ぶようになりました(v2.1.251) - モデルのツール呼び出しが不正な形式だった場合のリトライが改善され、壊れた出力がリトライのコンテキストから取り除かれるようになりました。Bedrock・Vertex・Foundry でも同様です(v2.1.251)
- managed settings の承認ダイアログが、前回承認した時点から変更のあった設定のみを表示するようになりました(v2.1.251)
- プラグイン / LSP のインストール提案と auto モードの既定化提案が、入力中の内容を送信またはクリアするまで表示を待つようになりました。プロンプトを送信する Enter がそれらに応答してしまうことがなくなります(v2.1.251)
- 自身のサブエージェントから届くメッセージの提示方法が改善され、送信者が無関係な Claude セッションではなくこのセッション内のワーカーであることが Claude に伝えられます(v2.1.251)
- サブエージェントパネルや
/tasksから開いたバックグラウンドのサブエージェント・フォークのトランスクリプトを表示中、プロンプトのプレースホルダーが「Message @name…」と表示されます(v2.1.251) - 有効なモデルが認識済みの Claude モデルでない場合(カスタム
ANTHROPIC_BASE_URL配下のサードパーティモデルなど)、既定のコミットトレーラーがCo-Authored-By: Claude Codeになりました(v2.1.251) - クラウドセッションで、Bash コマンドの実行中にセッションのネットワークプロキシが接続を切断した場合、ツール結果が「connection reset」だけでなくホスト名と理由を示すようになりました(v2.1.251)
/scheduleが、Claude Code に設定された MCP サーバーはクラウドルーチンに接続できないことを説明するようになりました(v2.1.251)- managed settings がゲートウェイログインを強制する(または設定を読み取れない)ことだけを理由に、サインイン前にアナリティクスが無効化されることがなくなりました(v2.1.251)
- [VSCode] Remote Control のバナーがフッターのピル表示に変更されました(Remote Control が有効なとき、または失敗したときに表示)。claude.ai/code でセッションを開けます。
/remote-controlでオン・オフを切り替えます(v2.1.251)
修正(主要なもの)
安定性・操作性に関わる修正を中心に抜粋します。
- thinking のみのターン後に会話が停止する問題を修正: モデルが thinking のみを出力したターンの後に「text content blocks must be non-empty」エラーで会話が進まなくなる問題が修正されました(v2.1.251)
- Opus 5 のリクエスト失敗を修正: thinking を無効にした状態で effort が xhigh / max のとき、Opus 5 へのリクエストが「effort … is not supported when thinking is disabled」で失敗する問題が修正されました。この場合 effort は
highとして送られます(v2.1.251) - セッショントランスクリプトの上書きを修正: ディレクトリの変更によってセッションが既存の同一 ID のトランスクリプト上に再配置された際に、トランスクリプトが黙って上書きされる問題が修正されました(v2.1.251)
- バックグラウンドセッションのゲートウェイ設定喪失を修正: バックグラウンド化したセッションが、シェルでエクスポートされた Vertex / Bedrock のゲートウェイ設定(
ANTHROPIC_*_BASE_URLとCLAUDE_CODE_SKIP_*_AUTH)を失い、すべてのリクエストが失敗する問題が修正されました(v2.1.251) - エージェントチームの回答未達を修正: チームメイトの最終回答がチームリードに届かない問題が修正されました。内容のない「available」通知ではなく、アイドル通知に回答が含まれます(v2.1.251)
- バックグラウンドセッションのプラグインスキル欠落を修正: 別の Claude Code プロセスがプラグインマーケットプレイスを更新している最中に、バックグラウンドセッションがプラグインスキルを 1 つも持たない状態で起動し、そのままになる問題が修正されました(v2.1.251)
- SDK MCP サーバーのハングを修正: ハンドシェイクの応答が失われた際に SDK およびクラウドのセッションが無期限にハングする問題が修正されました。70 秒でタイムアウトし、該当サーバーのみ失敗として扱われます(v2.1.251)
- stream-json のツール呼び出し欠落を修正:
--input-format stream-jsonで、メッセージ ID なしに送られたクライアント注入のアシスタントツール呼び出しが最初の 1 件にマージされ、その結果が失われる問題が修正されました。古いセッションの再開時も含みます(v2.1.251) - 地味に嬉しい修正:
emacs -nwやmicroのように/dev/ttyを開くエディタで、バックグラウンドセッションの Ctrl+G が「Emacs quit unexpectedly」で失敗する問題が修正されました(v2.1.251)。バックグラウンドセッションでも普段のエディタがそのまま開けるようになるので、地味ながら日々の操作感に効いてくると感じます - このほか、Remote Control と
/mcpのエラー表示、tmux / GNU screen での表示と選択、git worktree とバックグラウンドセッションのファイル編集、/usage-creditsと Claude apps ゲートウェイまわりの表示、VSCode 拡張のサインイン画面など、多数の細かな不具合が修正されています。なお v2.1.250 は CHANGELOG に「Bug fixes and reliability improvements」の 1 行のみが記載されており、個別の変更点は公開されていません
破壊的変更・非推奨
プロジェクト設定の env から一部の環境変数を設定できなくなりました(v2.1.251)
プロジェクトレベルの .claude/settings.json の env から、CLAUDE_CONFIG_DIR・CLAUDE_CODE_TMPDIR・TMPDIR/TMP/TEMP を設定できなくなりました。これらはシェル・ユーザー設定・managed settings で設定します。
以下は CHANGELOG に記載された設定キー名のみを使った設定例です。
変更前(〜v2.1.250):
// <project>/.claude/settings.json
{
"env": {
"CLAUDE_CONFIG_DIR": "/path/to/shared-config",
"CLAUDE_CODE_TMPDIR": "/path/to/work-tmp",
"TMPDIR": "/path/to/work-tmp"
}
}
変更後(v2.1.251〜):
# シェル(あるいはユーザー設定・managed settings)で指定する
export CLAUDE_CONFIG_DIR=/path/to/shared-config
export CLAUDE_CODE_TMPDIR=/path/to/work-tmp
export TMPDIR=/path/to/work-tmp
CLAUDE_CODE_SUBAGENT_MODEL の優先順位が変わりました(v2.1.251)
CLAUDE_CODE_SUBAGENT_MODEL が、すべてを上書きするのではなくサブエージェントの既定モデルを設定する変数に変わりました。エージェント定義の model: と spawn 時の明示指定が優先されます。
以下は CHANGELOG に記載された環境変数名と設定キーのみを使った例です。
6 言語のシンタックスハイライトが削除されました(v2.1.251)
利用の少ない 6 言語(1c、gml、isbl、mathematica、maxima、sqf)のシンタックスハイライトが削除されました。バイナリは 2.5 MB 小さくなっています。
/cost のプロンプトキャッシュ表示を試してみた
v2.1.251 で /cost に追加されたセッション単位のプロンプトキャッシュ行は、対話モードで確認します。手順は次のとおりです。
- 対象のプロジェクトディレクトリで
claudeを起動し、対話モードに入る - ファイルの読み込みや編集を伴うやり取りを何度か重ねる(プロンプトキャッシュ行はセッション単位の集計のため)
- プロンプト入力欄で
/costを実行する
実際の出力

v2.1.251 で追加された行
Prompt cache (main): 11 requests · 90% of input tokens from cache · no misses · warm (1h TTL, last activity 31s ago)
CHANGELOG の記載(hit ratio, misses, tokens re-cached, warm/cold)との対応は次のとおりです。
| 表示 | 意味 | CHANGELOG の項目 |
|---|---|---|
11 requests |
このセッションで発行した API リクエスト数 | (前提となる母数) |
90% of input tokens from cache |
入力トークンのうちキャッシュから読めた割合 | hit ratio |
no misses |
キャッシュミスが 0 件 | misses |
warm (1h TTL, last activity 31s ago) |
キャッシュが有効な状態。TTL は 1 時間、最終アクティビティは 31 秒前 | warm/cold |
表示されなかった項目について
CHANGELOG に挙がっている tokens re-cached(再キャッシュされたトークン数)は、この出力には現れていません。no misses でミスが発生しておらず、再キャッシュの対象が無かったためではないかと推測します(ミスが出たときに現れる項目と見ています)。
(main) の意味
(main) はサブエージェントではなくメインの会話を指す表記だと推測します。根拠は集計値のずれです。
Prompt cache (main)は11 requestsに対する集計Usage by modelは 87.7 万トークンのキャッシュ読み込みを計上
モデル別内訳から計算したキャッシュ比率は 877.9k ÷ (877.9k + 76.6k + 1.5k) ≒ 92% で、表示されている 90% と微妙にずれます。両者の集計範囲が異なる(Usage by model はサブエージェント分を含む)ことが理由ではないかと考えています。
最後に
今回はシンボリックリンクや算術式代入といった、権限チェックをすり抜けうる経路の修正が並びました。いずれも普段の操作では気づきにくい部分なので、allow / deny を細かく運用している環境ほど、早めに更新しておく価値があると感じます。
プロジェクト設定に env を書いている方や、CLAUDE_CODE_SUBAGENT_MODEL でサブエージェントのモデルを固定していた方は、破壊的変更の節を確認してみてください。気になる変更があればアップデートして確認してみてください。
参考文献








