Claude Code v2.1.311 — ultrathinkがxhighで動き、200K超でも圧縮して続行
Claude Code v2.1.311は、ターミナルのultrathinkが対象モデルでxhigh effortになり、200K超でも会話を圧縮して続けます。セルフホストランナーには--hold-idle-fileが加わりました。
このリリースで何ができるようになるか
Claude Code v2.1.311で動きが変わるのは、ultrathinkと200K超の扱い、セルフホストランナーの3点です。
v2.1.311で影響が大きい3つの変更
ultrathinkがxhigh effortで動く
対話ターミナルで、Opus 5.5、Sonnet 5.5、Haiku 5.5、Fable 5.1をAnthropicのAPI経由で使うときが対象です。ultrathinkの虹色表示は、実際に効く場所にだけ出ます。
200K超で止まらず、圧縮して続ける
「Usage credits required for 1M context」で止まっていた標準コンテキストのセッションが、会話を圧縮してそのまま続きます。
セルフホストランナーに保持オプション
--hold-idle-fileと--max-hold-minで、ホスト側に残ったプロセスが動いている間、アイドルのセッションを手放さずに置けます。
変更履歴は約90項目で、大半が修正です。圧縮まわりの取りこぼし、サブエージェントの挙動、MCPの表示、VS Code拡張とクラウドセッションの細部が中心です。
あなたの開発フローはどう変わるか
使い方によって、効き方がはっきり分かれます。
| 使い方 | 影響 | 何が変わるか |
|---|---|---|
| ターミナルでultrathinkを使う | 影響明確な恩恵あり(対象モデルのみ) | 何が変わるかそのターンがxhigh effortで動く |
| 200K超の会話を標準コンテキストで続ける | 影響明確な恩恵あり | 何が変わるかエラーで止まらず、圧縮して続く |
| 長いリストのあるCLAUDE.mdを使う | 影響条件次第 | 何が変わるか起動後やファイル編集後の長い固まりが直る |
| サブエージェントでMCPツールを使う | 影響条件次第 | 何が変わるか接続が遅れて完了するサーバーのツールも使える |
| セルフホストランナーを運用する | 影響条件次第 | 何が変わるか残プロセスがある間、アイドルセッションを保持できる |
| 通常の対話利用 | 影響小さな改善が中心 | 何が変わるか設定の変更は要らない |
ultrathinkがxhighで動く条件
これまでのultrathinkは、プロンプトに含めると、その1ターンだけ深い推論を求めるキーワードでした。v2.1.311からは、対話ターミナルで次の4モデルをAnthropicのAPI経由で使っているとき、そのターンがxhigh effortで動きます。
- Opus 5.5
- Sonnet 5.5
- Haiku 5.5
- Fable 5.1
Claudeが作業している最中にultrathinkを打ち足した場合は、そのターンの残りが引き上げられます。虹色の表示も変わりました。ultrathinkを引用符で囲んだときや、ファイルパスの一部になっているときは虹色になりません。キーワードが効く場所にだけ出ます。
虹色にならないときの確認先は、モデル設定のドキュメントに3つ載っています。
- ultrathinkを引用符・括弧・パス・コマンドの外に打ち直す。
/で始まるプロンプトでは効きません CLAUDE_CODE_EFFORT_LEVELがxhighより低く設定されていないか。自分のmaxEffortLevelをxhigh以上に上げる、または組織管理者に組織の上限を上げてもらう/modelで上の4モデルのいずれかに切り替える。Amazon Bedrockのように効かない環境では、effortを直接設定する
echo "${CLAUDE_CODE_EFFORT_LEVEL:-unset}"出力が low・medium・high のように xhigh より低い値なら、ultrathinkでは引き上げられません。Claude Codeの外のシェルで実行した場合、この確認で見えるのはシェルの環境変数だけで、settingsの env に書いた値は表示されません。組織の上限の読み方はeffort上限の記事で扱っています。
モデル設定のドキュメントには、この挙動の要件としてClaude Code v2.1.311以降と書かれています。
200K超で止まらず圧縮して続く
標準コンテキストのセッションで、リクエストが200Kトークンを超えると、「Usage credits required for 1M context」のメッセージで止まることがありました。v2.1.311では、Claude Codeが会話を圧縮してから続けます。
モデル設定のドキュメントによれば、Sonnet 5以降、Haiku 5.5、Opus 4.7以降、Fable系はもともと1Mウィンドウで動き、[1m] の接尾辞は要りません。200Kに抑えたい場合は CLAUDE_CODE_DISABLE_1M_CONTEXT=1 を使います。今回の修正が効くのは、200Kの標準コンテキストで、リクエストがそれを超えた場面です。
関連して、モデル名とIDからは、効果のない [1m] の接尾辞と、その表示ラベルが外れます。接尾辞を付けた指定は、これまでどおり受け付けられます。
セルフホストランナーで残プロセスを待つ
セルフホストランナーは、--release-idle-session-min で、アイドルのセッションの枠を手放せます。ただし、nohup で起動したジョブのように、セッションがホストに残したプロセスがまだ動いていても、枠が戻されることがありました。
v2.1.311の --hold-idle-file は、ホストが更新し続けるファイルを指定します。ファイルが更新されている間は、アイドルのセッションを保持します。--max-hold-min は保持の上限で、既定は1440分、つまり1日です。
デプロイ手順の例に沿った形は次のとおりです。
claude self-hosted-runner \
--environment-secret-file /etc/claude/environment-secret \
--release-idle-session-min 30 \
--hold-idle-file /var/lib/claude-hold/hold-idle \
--max-hold-min 240--max-hold-min は --release-idle-session-min より大きくしておきます。同じか小さいと、何も保持されません。ファイルの更新はホスト側の仕事で、公式の例ではcronで1分ごとに touch します。更新が3分止まると、保持が終わります。cron側のスクリプトは、ホストに残したプロセスがあるかどうかを見て、保持ファイルを touch するかを決めます。この判定がプロセスの終了を検知しない作りだと、アイドルセッションは --max-hold-min の上限まで残ります。
この仕組みはrunnerをroot以外のユーザーで動かす前提です。rootで動かすとセッション自身が保持ファイルに touch できてしまうため、保持ファイルはセッションが書き込めないディレクトリに置きます。
主な変更点
圧縮・コンテキストまわりの修正
- 自動圧縮の直後に、編集済みの
MEMORY.mdとCLAUDE.mdの古い内容をClaudeが見てしまう問題を修正しました - 圧縮でモデルの返答に要約が含まれないとき、置き換える前に、多くの場合もう一度要約を求めるようになりました
DISABLE_COMPACTを設定してもエージェントチームのチームメイトが履歴を圧縮していた問題と、巻き戻しメニューに「Summarize from here」「Summarize up to here」が出ていた問題を修正しました- 設定ファイルと、modの
$.env.setに書いたDISABLE_COMPACTは、圧縮を止める方向にだけ働きます。再び有効に戻す用途には使えません /effortが、プランモードでプランのモデルとセッションのモデルが違うときのプロンプトキャッシュミスを警告するようになりました/usageの「What's contributing to your limits usage?」に、大きなプロンプトキャッシュミスが出ない問題を修正しました
DISABLE_COMPACT は、環境変数リファレンスで「自動圧縮と手動の /compact の両方を止める」変数です。設定ファイルやmodから、圧縮をオンに戻す使い方はできなくなりました。アイドル時の圧縮だけを止めたいときは、idle compactionの記事の別の手段が合います。
固まる・止まる問題の修正
- 非常に長いリスト項目を含むCLAUDE.mdでも、起動時やファイルの読み書きの後に長く固まらなくなりました
- MCPサーバーがリソース読み取りに応答しない間や、スキルのダウンロード中でも、割り込みがタイムアウトを待たずに効きます
- WriteとEditで数千行を変えても、完了後に最大5秒止まったり、変更行数が0行と出たりしなくなりました
- Coworkのクラウドセッションでは、WebFetchとWebSearchが止まった応答に固まらず、未完了のリクエストは300秒で失敗します
- APIが再試行しないよう指示した応答まで再試行して、ターンが数分止まる問題を直しました。
CLAUDE_CODE_RETRY_WATCHDOGの無人再試行では、際限なく止まっていました - 指定時間を超えたシェルコマンドは、そこまでの出力を見せ、バックグラウンドで動き続けていると伝えます
サブエージェントと並行実行
- サブエージェントの開始後に接続を終えたMCPサーバーのツールも、そのサブエージェントから使えます
SubagentStopフックは、サブエージェントの完了時に1回だけ走ります。これまでは動いている間、毎分2回ほど走っていました- 起動したバックグラウンドのサブエージェントが作業している間、隔離されたworktreeは削除されません
- 自動モードで、自分のシェルを待つバックグラウンドエージェントが、処理を再開するたびに新しいメイン会話のターンを始める問題を直しました
/code-reviewのようにサブエージェントで動くスキルは、クラウドやバックグラウンドのセッションが再起動しても2回目を走らせません- エージェントチームのセッションを
--resume、--continue、/resume、--session-idで戻すと、タスクリストが表示されます。/branchが元のセッションのリストに書き込む問題も直っています
MCPとCLIの表示
claude mcp add、claude mcp remove、/mcpは、リポジトリのルートより下で実行しても、ローカルスコープのサーバーを持つ~/.claude.jsonのプロジェクト項目を指します。これまでは今のフォルダを指していましたclaude mcp listとclaude mcp getの失敗行で、エラーコードが二重に出なくなりました(例:ENOENT: ENOENT: …)/mcpは、認証なしで動くリモートサーバーを「Clear authentication」の後に失敗と表示しなくなり、資格情報を送らないリモートサーバーも「authenticated」と表示しません--plugin-dirのフォルダの先頭に空の.mcp.jsonがあっても、フォルダ内のプラグインが1つにまとまって読み込まれることはありません--output-format jsonとstream-jsonの出力は、文字列の中のDEL、C1制御文字、Unicodeの書式文字を\uXXXXでエスケープします。パース後の値は変わりません
JSON出力を自前のスクリプトで切り出している場合、以前は生の制御文字が文字列に入っていた箇所に \uXXXX が入ります。標準のJSONパーサーで読む限り値は同じです。
Remote Control・クラウド・ブリッジ
- ネットワークプロキシが起動時のリクエストを遮っても、Remote Controlのセッションは約2分「Connecting」のまま待たされません
- ClaudeがクラウドセッションやRemote Controlのセッションに送ったメッセージが、Claudeのモバイルアプリで自分のメッセージとして表示される問題を修正しました
- Remote Controlやクラウドセッションに添付したファイルがディスクがいっぱいで保存できなかった場合や、1メッセージの添付が20件を超えて外れた場合に、その理由をClaudeに伝えるようにしました
- ターンの間にクラッシュしたバックグラウンドセッションが、アタッチ中・ピン留め中・スケジュール済みのタスクやウェイクアップがあるときに再起動されない問題を修正しました
- プラグインや設定が
agentを指定していると、再起動後のCoworkのクラウドセッションがコネクタと大半のツールを失う問題を修正しました。Coworkのクラウドセッションは、この設定を無視します claude daemon restartは無効なので、「background service did not respond」のエラーはclaude daemon stop --anyを案内します。この操作でバックグラウンドセッションが終わることも書かれます
表示・操作性
- ↑キーでエージェントのチャットタブに配信待ちのメッセージが呼び出されなくなり、再送で二重になることもありません
! open /tmp/shot.pngや/review look at /tmp/shot.pngのように、画像ファイルのパスを含むテキストを貼ると、画像が添付されてパスがプロンプトから消える問題を修正しました- 引用符や括弧の中に1つだけある円記号、たとえば
"\"や(\)も、Claudeの返答から消えずに残ります /rewindの確認文の表現と、手動編集やBashによる編集がコード復元の影響を一切受けないという誤った警告を修正しました/ideは、インストールが完了してから、VS Code拡張を入れたと伝えます。失敗時や完了前に入れたと言うことも、何も入れていないのにJetBrainsプラグインを入れたと言うこともなくなりました- フルスクリーンのリストで、スクロールバーの矢印やバーのクリックは、マウスボタンを離したときに働きます。離す前にバーの外へ動かせば取り消せます
- スクリーンリーダーのモードで、
/permissionsのルール削除が「Deleted allow rule …」とすぐ読み上げられ、Claudeの質問は「Questions: Color (answered), Pages」の形で記号なしに列挙されます。Escで取り下げたフィードバックがプラン承認で送られる問題も直りました - エージェントビューのCtrl+Dは、プロンプトに合わせて、空の入力で2回押すと終了します
起動時間・モデル設定・利用規約まわり
- ProとMaxのアカウントで、前回の確認から1時間以内の起動なら2つのネットワークリクエストを省き、起動が速くなります
claude --model opusのように、引数がオプションとその値だけの起動も速くなりました- Bedrock、Mantle、Vertex、Foundryでは、モデル設定を
downloads.claude.aiの署名付きファイルから読み込みます。止めるにはCLAUDE_CODE_MODEL_CATALOG=offを設定します CLAUDE_CODE_SYNC_SKILLSを設定し、フィーチャーフラグの取得を切ったセッションは、同じマシンの別セッションが取得した、10分以内のclaude.aiスキル一覧を再利用します- 権限ルールについての起動時の警告は、ルールが変わるまで、ユーザーにつき1回だけ表示されます
claude purgeは、消すのはこのコンピューター上のデータだけで、Anthropicに保存されたものは消えないと表示します- ClaudeのProとMaxの契約者が契約を使えないとき、管理者への相談を促すメッセージが、請求設定を案内するメッセージに変わりました
Bedrock・Mantle・Vertex・Foundryでは、署名付きのモデル設定ファイルを downloads.claude.ai から読み込む動きが加わります。外向きの通信を絞っている環境では、このホストを通すか、CLAUDE_CODE_MODEL_CATALOG=off で止めるかを、更新の前に決めておけます。ゲートウェイと環境変数の関係はLLMゲートウェイの環境変数の記事にあります。
VS Code拡張
- Claudeの返答のコードブロックに、ライト・ダーク・ハイコントラストダークの各テーマで構文の色が付きます
- 遅い
UserPromptSubmitフックの実行中に、「Running UserPromptSubmit hooks」のスピナーが出て、スクリーンリーダーにも通知されます - VS CodeまたはJetBrainsのパネルから送るカスタムスキルとカスタムスラッシュコマンドにも、通常のメッセージと同じく「開いているファイルや選択行」が付くようになりました
- macOSとLinuxで、ログインシェルがスタートアップファイルを読んでPATHを取る間も、拡張ホストは固まりません
- 画像をクリックしたり、プレビューを閉じたりすると、結果のテキストがエディタのタブでも開く問題を修正しました
- 送信ボタンでも、Enterと同じく、送信すると音声入力の録音が先に止まります
- VS Codeのテレメトリ設定がオフのとき、拡張はセッションを
DISABLE_TELEMETRY付きで起動します。使用状況の指標もエラーレポートも送らず、フィーチャーフラグも取りません - セッション一覧のサイドバーは、Webセッションを起動時でなく、Webタブを最初に開いたときに読み込みます
クラウドセッション、Claude Tag、Code Review
- Anthropicがホストする環境のルーティンが、所有者が組織を抜けて戻った後もロックされたままになる問題を修正しました。所有者がもう一度オンにできます
- ルーティンのAPIトークンの削除や再発行が失敗したとき、編集ダイアログが閉じていると何も出ない問題を修正しました。エラーのトーストが出ます
- クラウド環境のダイアログは、管理者向けも含めて、すでにある環境と同じ名前を受け付けません
- Claude Tagの分析に、Slackチャンネルで添付されたスキルが何回動いたか、動かなかったものはどれかを示す「Skills」ビューが加わりました
- 新しいセッションで動くClaude Tagのルーティンは、報告することがないとき、チャンネルに空の投稿を残さずに終われます
- Slackコネクタは、名前を指定されていないチャンネルへ送る前に、チャンネルのトピックに投稿ルールがないかを確認します
- Code Reviewは、自動再試行でもモデルが変更を解析できないとき、チェックランに以降の自動レビューが始まらないと書きます。セッションが一時的なサーバー障害で始まらなかったレビューは、1回だけ自動で再試行されます
ultrathinkのxhigh化は、既存の使い方の前提をどう変えるか
ultrathinkは、effortの設定を変えずに、その場だけ深く考えさせる手段として使われてきました。ultrathinkの解説記事も、プロンプトキャッシュを壊さない手段として整理しています。
v2.1.311の変更履歴は、対象モデルのターミナルでultrathinkが「そのターンをxhigh effortで動かす」と書いています。以前のultrathinkとは、そのターンの思考量の水準が違います。
プロンプトキャッシュのドキュメントには、Opus 5.5・Sonnet 5.5・Haiku 5.5・Fable 5.1をAPIキーかClaudeの契約で使う場合、effortを変えてもキャッシュは保たれ、新しいレベルがそのまま適用されると書かれています。ultrathinkがxhighで効く条件と、ほぼ重なります。ただしAmazon Bedrock、Google CloudのAgent Platform、Claude appsのゲートウェイ経由、CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS を設定している場合、組織がHIPAA構成の場合は、この扱いになりません。ultrathinkのxhigh化もeffortの変更にあたるため、対象環境ではキャッシュは保たれると読めます。そのターンだけxhigh相当の思考量を使います。
もう1つ、見た目が変わります。虹色が出るのは、キーワードがeffortを上げられる場所だけです。色の有無で、効いていなかったプロンプトを見分けられます。
前後のバージョン
一つ前のv2.1.310は、Bedrock・Vertex・FoundryでMonitorツールが使えるようになった更新でした。その前のv2.1.309は、サンドボックスと権限判定の穴を塞ぐ修正が中心です。
まとめ
v2.1.311は、ultrathinkの意味を少し動かし、200K超で止まる問題を直す更新です。
ターミナルでultrathinkを使う人は、対象の4モデルでキャッシュは保たれると読めるうえで、xhigh相当の思考量になる点を知っておくと、そのターンのトークン消費の増え方を読み違えません。標準コンテキストで長い会話を続ける人は、エラー停止が圧縮に変わるため、続きの会話が要約から始まることを前提にします。セルフホストランナーでジョブをホストに残す運用には、--hold-idle-file が選択肢に加わりました。それ以外の利用では、多数の修正が静かに効く更新で、設定を変える必要はありません。
関連ガイド
このバージョン単体の位置づけや前後の版とのつながりは、Claude Codeとは — できること・料金・使い方でまとめて確認できます。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。