Claude Code v2.1.312 — 巨大なCLAUDE.mdの上書き防止とhooks同時実行の上限
Claude Code v2.1.312は、巨大なCLAUDE.mdを冒頭だけ読んで上書きする事故を防ぎ、プロンプト/エージェントhooksの同時実行数に上限を設けました。未知のモデル名での挙動も変わります。
このリリースで何ができるようになるか
Claude Code v2.1.312で動きが変わる中心は、巨大なファイルの保護、hooksの同時実行数、未知のモデル名の扱いの3点です。changelogは約40項目で、大半は修正です。
v2.1.312で影響が大きい3つの変更
巨大なCLAUDE.mdを冒頭だけ読んで上書きしない
後半にだけ書いた規約が、気づかないうちに消える事故を防ぎます。
プロンプト/エージェントhooksに同時実行の上限
同時実行は24件まで。超えた分は待ちます。
未知のモデル名でも短いシステムプロンプトと自動切り替え
Bedrockなどのカスタム名で、短いプロンプトと自動切り替えが既定になります。どちらも環境変数で戻せます。
あなたの開発フローはどう変わるか
使い方によって、効き方が分かれます。
| 使い方 | 影響 | 何が変わるか |
|---|---|---|
| 長大なCLAUDE.mdやrulesをサブディレクトリに置く | 影響明確な恩恵あり | 何が変わるか冒頭だけ見たClaudeによる上書きが止まる |
| hooksを多数登録し、サブエージェントも並列で回す | 影響条件次第 | 何が変わるか重いプロンプトhooksを同じイベントに並べると待ちが出る |
| Bedrock・Vertex・Foundry・Mantleでカスタム名のモデルを使う | 影響条件次第 | 何が変わるかシステムプロンプトと自動切り替えの挙動が変わる |
claude -p を自動化に使う | 影響条件次第 | 何が変わるか不正な名前のコマンドが1つあっても出力が空にならない |
| VS Code拡張で組織の管理設定を使う | 影響条件次第 | 何が変わるかサインイン後に管理設定を取得し続けられる |
| 手元のターミナルでの通常利用 | 影響小さな改善が中心 | 何が変わるか設定変更は要らない |
巨大なCLAUDE.mdを上書きしなくなる
サブディレクトリにある非常に大きなCLAUDE.md、rulesファイル、@ で取り込んだファイルについて、Claudeが冒頭しか見ないまま上書きしてしまう不具合が直りました。Writeツールは、ファイル全体を読むか、その場で編集するようClaudeに求める動きになります。
ルールを長く書き溜めたチームほど関係します。冒頭しか読まれないまま全体が書き戻されると、差分を見ない限り欠落に気づけませんでした。
同じ系統の修正がもう1つあります。Bashで cd してgitリポジトリのさらに深いディレクトリへ移ると、ディレクトリ単位のスキルと paths: を持つスキルが見つからなくなる問題です。こちらも直りました。
hooksの同時実行は24件まで
プロンプトhooksとエージェントhooksは、セッションごとに同時に最大24件までです。サブエージェントが走らせる分も数えます。加えて、イベントの timeout より長く待たされている分が最大12件まで動きます。
timeout は1秒未満の指定が1秒として扱われます。0.5 のような値を書いていた場合、実際の待ち時間が延びます。
timeout の既定値は種類ごとに違います(prompt は30秒、agent は60秒)。同時実行数を気にするのは、同じイベントに重いプロンプトhooksを何本も付けた構成です。
未知のモデル名での挙動が2つ変わる
Bedrock、Vertex、Foundry、Mantleで、Claude Codeが認識しないモデル名を使うときの挙動が変わりました。認識しない名前とは、カスタムデプロイ名や推論プロファイルARNです。
- システムプロンプト: 名前の先にSonnetやHaikuがあっても、短いシステムプロンプトを使います。完全版に戻すには
CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0を設定します - 自動モデル切り替え: 安全分類器が会話にフラグを立てたときの自動切り替えが、未知のモデル名にも及びます。止めるには
CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1を設定します
export CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0
export CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1環境変数リファレンスによれば、CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT が未設定のとき、新しいモデルは短いプロンプトを使い、0 はどのモデルでも完全版を選びます。どちらのプロンプトでも、ツール一式、hooks、MCPサーバー、CLAUDE.mdの探索は変わりません。仕組みはSIMPLE_SYSTEM_PROMPTの記事にまとめています。自動切り替えが何に反応するかはsafety measures flaggedの記事が詳しいです。
Claude apps gatewayでsub以外の列でユーザーを識別する
Claude apps gatewayに oidc.user_id_claim が加わりました。id_tokenの sub ではなく別のクレームで利用者を識別できます。例として、Microsoft Entra IDの oid が挙がっています。
ゲートウェイの設定リファレンスの oidc 表には、メールを別のクレームから読む email_claim が載っています。user_id_claim の行はまだありません。ユーザーIDを後段へ渡す側の仕組みはforward_user_identityの記事で扱っています。
前後のバージョンとの位置関係
| バージョン | 中心になった変更 |
|---|---|
| v2.1.310 | 中心になった変更Bedrock・Vertex・FoundryでもMonitorツールが使える |
| v2.1.311 | 中心になった変更ultrathinkがxhighで動き(Anthropic API経由の対応モデル)、200K超でも圧縮して続行 |
| v2.1.312 | 中心になった変更巨大なCLAUDE.mdの保護、hooksの同時実行上限、未知のモデル名の扱い |
v2.1.312は、巨大ファイルの上書き防止とhooksの同時実行数の上限を加えた更新です。
v2.1.311の内容はv2.1.311の記事にあります。
主な変更点
新機能と変更
oidc.user_id_claimをClaude apps gatewayに追加(前節)- フルスクリーンで、キューに入れたメッセージの下の「to send now」表示をクリックすると、キーと同じく即座に送信する
- 使用上限のメッセージで、5時間の枠を「session limit」ではなく「5-hour limit」と呼ぶ。VS Code拡張でも、リセット時刻を「Resets at 3:10 PM」のように時刻で表示する
- サブエージェントの
autoCompactWindowが、CLAUDE_CODE_AUTO_COMPACT_WINDOWで決めた枠を下げる方向にだけ効く。以前は効果がなく、枠を上げることは今回も起こらない - OpenTelemetryの
mcp_server.nameが、公式Anthropicマーケットプレイスのプラグインが宣言する固定URLのリモートMCPサーバーについて、customではなく実際の名前を報告する - OpenTelemetryの
claude_code.safety_eventイベントを送らなくなった - CLIから始めたクラウドセッションの名前とブランチ名をサーバーが決める
- クラウドセッションのWebFetchのエラーで、名前解決できないホストを「許可されたネットワークドメインの外かもしれない」と説明する。Claudeが許可すべきホスト名を挙げられるようになる
修正(ターミナル・CLI)
- VS Code拡張でサインインした後も、管理設定と組織ポリシーをセッションの最後まで取得し続ける
- ターミナルでセッションを再開した直後の最初の返信が、次の再開時に欠けることがありました(まれなケース)
- 名前が不正なコマンドが1つ混じっていても、ほかのコマンドは読み込まれる。
claude -pの出力が空になることもなくなった - 古いセッションファイルの掃除と同時に動いたとき、ReadツールがPDFページで「pdftoppm failed: Could not write image」と失敗することがありました
- 作業中に新しいeffortレベルを選んだとき、モデルが適用する前の段階では、スピナー、OpenTelemetryの
effort値、トランスクリプトが新しいレベルを示していました。今は実際に効いているレベルを表示します /modelと/effortのキャッシュ警告は「次のメッセージまで再読み込みを待つ」と書いていましたが、作業中の変更は、もっと早く再読み込みを起こすことがあります- 文中で「待機中の項目」に触れただけの最後のメッセージでは、セッションが「あなた待ち」と表示されなくなった
- エージェントビューは、Ctrl+Cで消した直後に終了しても、次の起動で入力を復元しない。空の
!入力でCtrl+Dを押して終了したときも、シェルモードで再び開かない - Vimモードの
d、c、yに、残り行数より大きいgjまたはgkの回数を付けても、テキストは削除もコピーもされない。Vimと同じく、カーソルが動くだけです /helpと/メニューで、/verifyの説明が短くなった(以前はClaude向けの長い説明が出ていました)- プロンプトのeffort表示は、作業中の変更に「次のメッセージまで待つ場合がある」と添え、当てはまらなくなったら消す
修正(VS Code・クラウド・連携)
- VS Code: 組織の設定を読み込めない、または起動時に拒否されたとき、終了コードだけでセッションが終わっていた。タブが理由を示し、「Retry」か「Sign in again」を出す
- クラウドセッション
- 追加: ルーチンの作成・編集時のモデル選択にeffortレベルが加わった。環境設定のセットアップスクリプト欄には、色・行番号・Copyボタンつきのbashエディタが入った
- 改善: リポジトリを追加するステップを開くと、生のJSONではなく結果の短い表が出る
- 修正: 送信に失敗した後に同じメッセージを再送すると2回実行されることがある問題、環境作成の失敗がダイアログの外のトーストにしか出ない問題、ルーチンページのメニューの「Edit」が編集ダイアログを開かない問題
- Remote Control: アーカイブを解除したセッションが、コンピューターが再接続するまで動作中と表示されていた問題。アイドルと表示される
- Claude Tag
- 改善: Slackでの再試行の通知が、一般的なAPIエラーではなく、使用中のモデル名かレート制限に達したことを示す
- 修正: 非公開チャンネルが公開になりIDが変わると、オン/オフの切り替えとエージェント設定がワークスペースの既定に戻る問題
- 修正: ネットワークアクセスが「None」の環境のチャンネルでSlackに返信しない問題、別スレッドで答えるときにファイルを違うスレッドに投稿する問題
- Code Review: GitHubのpushイベントが遅れて届くと、古いコミットを、またはどのコミットも見ずにレビューしていた問題。プルリクエストの現在のコミットをレビューする
古いコミットをレビューしていた問題はどのチームに効くか
Code Reviewの修正が効くのは、pushが立て続けに入る忙しいプルリクエストです。レビューの指摘が今のコードに向いているかを、読む側が疑わずに済みます。
まとめ
今回のリリースで確かめる価値が高いのは、サブディレクトリに大きなCLAUDE.mdやrulesを置いているリポジトリです。上書き事故の経路が1つ塞がりました。hooksをサブエージェント込みで大量に走らせている構成では、24件の上限が待ち時間として現れる可能性があります。BedrockなどでカスタムのモデルIDを使っている場合は、システムプロンプトと自動切り替えの変更を、必要に応じて環境変数で戻せます。それ以外の利用では、設定を変えずに更新して問題ありません。
関連ガイド
このバージョン単体の位置づけや前後の版とのつながりは、Claude Codeの全体像でまとめて確認できます。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。