
Claude Code v2.1.311 の主要アップデート - ultrathink の xhigh effort 化と DISABLE_COMPACT の変更
クラウド事業統括本部の石川です。Claude Code の v2.1.311(2026年10月26日 公開)がリリースされました。本記事では、注目のアップデートを中心にご紹介します。
前回のアップデート記事はこちらです。
アップデートサマリー
v2.1.311 では 92 件の変更が入りました。本記事の分類では、修正 56 件、改善 17 件、開発者体験 10 件、新機能 5 件、パフォーマンス 3 件、破壊的変更 1 件です。
CHANGELOG で破壊的変更や非推奨と明記された項目はありませんが、既存の設定が効かなくなる変更が 1 件あるため、「破壊的変更・非推奨」の節で扱います。VS Code 拡張、Cloud sessions、Claude Tag、Code Review の変更もあります。
注目のアップデート
ultrathink がそのターンを xhigh effort で実行するように変更
対話型のターミナルで ultrathink を使うと、Anthropic の API 経由の Opus 5.5、Sonnet 5.5、Haiku 5.5、Fable 5.1 で、そのターンを xhigh effort で実行するようになりました。Claude の作業中に入力した場合は、そのターンの残りの effort を引き上げます。あわせて、ultrathink のレインボー表示は、キーワードで effort を引き上げられる場所にだけ出るようになり、引用符の中やファイルパスの一部では表示されなくなりました。
執筆時点(2026年10月27日)の公式ドキュメント(Model configuration)では、ultrathink はプロンプトにコンテキスト内の指示を追加するもので、API に送る effort レベルは変わらないと説明されたままです。同じページでは、Opus 5.5、Sonnet 5.5、Haiku 5.5 の既定の effort は medium、xhigh はより多くのトークンを使って深く推論するレベルと説明されています。
この変更の対象は、対話型のターミナルで、上記 4 モデルを Anthropic の API 経由で使う場合です。
ultrathink を習慣的にプロンプトへ書いている方は、v2.1.311 からそのターンが xhigh で動くことを前提に、付ける場面を選ぶとよいと考えます。
DISABLE_COMPACT は設定ファイルからコンパクト化を無効にする方向にのみ
設定ファイルと mod の $.env.set で指定する DISABLE_COMPACT が、コンパクト化を無効にする方向にのみ使えるようになりました。コンパクト化を有効に戻す用途には使えません。変更前との違いは「破壊的変更・非推奨」で整理します。
設定ファイルや mod の $.env.set で DISABLE_COMPACT を使ってコンパクト化を有効に戻していた方は、更新後にその設定が効かなくなるため、設定を見直す必要があると考えます。
Bedrock・Mantle・Vertex・Foundry でモデル設定を downloads.claude.ai から読み込むように変更
Bedrock、Mantle、Vertex、Foundry 上の Claude Code が、downloads.claude.ai 上の署名付きファイルからモデル設定を読み込むようになりました。この読み込みは、環境変数 CLAUDE_CODE_MODEL_CATALOG=off で無効にできます。
執筆時点の公式ドキュメント(Enterprise network configuration)では、downloads.claude.ai の用途は、プラグインの実行ファイルのダウンロード、ネイティブインストーラー、ネイティブの自動アップデーター、アップデートのバージョン確認と記載されています。npm でインストールしている場合は、インストーラーと自動アップデーターの用途では downloads.claude.ai は不要とも書かれています。モデル設定の読み込みと CLAUDE_CODE_MODEL_CATALOG は、執筆時点の公式ドキュメントの全文(llms-full.txt)を検索しても見つかりませんでした。downloads.claude.ai に接続できない場合の挙動も、CHANGELOG には書かれていません。
Bedrock などで Claude Code を使っていて外部への通信先を制限している方は、downloads.claude.ai への通信を許可するか、CLAUDE_CODE_MODEL_CATALOG=off を設定するかを決めておくとよいと考えます。
標準コンテキストのセッションが 200K トークン超で止まる問題を修正
標準コンテキストのセッションで、リクエストが 200K トークンを超えると「Usage credits required for 1M context」と表示されて停止する問題が修正されました。v2.1.311 では、停止する代わりに会話をコンパクト化して続行します。
標準コンテキストで長いセッションを続ける方は、200K トークンを超えた時点で作業が止まらなくなるため、更新しておきたい修正だと考えます。
VS Code 拡張がテレメトリ設定オフの間は DISABLE_TELEMETRY でセッションを起動
VS Code のテレメトリ設定がオフの間、VS Code 拡張が DISABLE_TELEMETRY を設定して Claude Code のセッションを起動するようになりました。これらのセッションは、使用状況メトリクスとエラーレポートを送信せず、feature flag も取得しません。
公式ドキュメント(Environment variables)では、feature flag を取得しないセッションでは使えない機能があると説明されており、例として advisor ツールや /skill-doctor が挙げられています。
VS Code のテレメトリをオフにしている方は、Claude Code 側で個別に設定しなくても送信が止まる一方、feature flag が必要な機能は使えなくなるため、普段使う機能に影響がないか確認しておくとよいと考えます。
アップデート内容
新機能
self-hosted-runnerに--hold-idle-fileと--max-hold-minが追加されました。セッションが残したプロセスが動作中であるとホストが報告している間、アイドル状態のセッションを保持できます。- Explanatory 出力スタイルのヒントが追加されました。Claude に説明を求めたときに表示されます。
- [VS Code] Claude の応答内のコードブロックに、シンタックスハイライトが追加されました。ライト、ダーク、ハイコントラストダークの各テーマに対応します。
- [VS Code] 時間のかかる UserPromptSubmit フック向けに、「Running UserPromptSubmit hooks」のスピナー表示とスクリーンリーダーの読み上げが追加されました。
- [Claude Tag] Claude Tag のアナリティクスに Skills ビューが追加されました。Slack チャンネルで Claude がアタッチされた各スキルを実行する頻度と、使われていないスキルを確認できます。管理設定には Usage へのリンクが追加されています。
改善・開発者体験
ultrathinkを使ったターンが xhigh effort で実行されるようになりました(注目のアップデートを参照)。- Bedrock、Mantle、Vertex、Foundry でのモデル設定の読み込み先が変わりました(注目のアップデートを参照)。
- [VS Code] VS Code のテレメトリ設定がオフの間、
DISABLE_TELEMETRYを設定してセッションを起動するようになりました(注目のアップデートを参照)。 - タイムアウトに達したシェルコマンドの結果に、それまでの出力と、コマンドがバックグラウンドで実行中であることが表示されるようになりました。
- コンパクト化で、モデルの応答に要約が含まれていない場合、会話を置き換える前に、通常はもう一度要約を求めるようになりました。
--output-format jsonとstream-jsonの出力で、文字列内の DEL、C1 制御文字、Unicode 書式文字が\uXXXX形式でエスケープされるようになりました。パース後の値は変わりません。[1m]サフィックスが効果を持たないモデルでは、モデル名と ID からサフィックスとそのラベルが外れました。サフィックス付きの指定は引き続き受け付けます。公式ドキュメント(Model configuration)では、sonnet[1m]は Sonnet 5.5 と Sonnet 5、opus[1m]は Opus 4.7 以降で効果がないと説明されています。- Anthropic API で発生する「Connection dropped」エラーが、最初に確認すべき場所を示すようになりました。使用中のプロキシやゲートウェイ、それが無ければ VPN やファイアウォールを案内します。Bedrock、Vertex、Foundry では変わりません。
- このほか、
/teleportの警告、バックグラウンドセッションのプロセス終了時のメッセージ、Artifact ツールのページとドキュメントの選び分け、Slack コネクタでの投稿前のチャンネルトピックの確認、スクリーンリーダーモードの読み上げ、/code-reviewの effort の指定、権限ルールに関する起動時の警告、claude purgeの表示、Claude Tag と Code Review の動作が改善・変更されています。
パフォーマンス
- Pro・Max アカウントで、前回の確認から 1 時間以内の起動では 2 つのネットワークリクエストを省略し、起動時間が短くなりました。
claude --model opusのように、引数がオプションとその値だけの起動で、起動時間が短くなりました。- [VS Code] セッション一覧のサイドバーが、Web セッションを起動時ではなく、Web タブを初めて開いたときに読み込むようになりました。
修正
- 標準コンテキストのセッションが 200K トークン超で止まる問題を修正: 注目のアップデートを参照
- CLAUDE.md の長いリスト項目によるフリーズを修正: CLAUDE.md に非常に長いリスト項目があると、起動時や、ファイルの読み取り・編集の後に長時間フリーズしていました
- 後から接続した MCP サーバーのツールをサブエージェントが使えない問題を修正: サブエージェントの起動後に接続が完了した MCP サーバーのツールを、そのサブエージェントが使えませんでした
- 自動コンパクト直後に古い MEMORY.md・CLAUDE.md を参照する問題を修正: セッションの途中で MEMORY.md や CLAUDE.md を編集していた場合に、自動コンパクトの直後の Claude が古い内容を参照していました
- SubagentStop フックが繰り返し実行される問題を修正:
SubagentStopフックが、サブエージェントの終了時に 1 回ではなく、実行中のサブエージェントごとに約 1 分に 2 回実行されていました - Vertex AI・Foundry・Claude Platform on AWS で長い thinking が打ち切られる問題を修正: Google Vertex AI、Microsoft Foundry、Claude Platform on AWS で、エンドポイントが思考の進捗更新を送る場合に、長い非表示の思考(thinking)がアイドルと見なされて打ち切られていました
- 再試行しないよう指示されたリクエストを再試行する問題を修正: API が再試行しないよう指示したリクエストを Claude Code が再試行し、ターンが数分間止まることがありました。無人リトライモード(
CLAUDE_CODE_RETRY_WATCHDOG)では、無期限に止まることがありました - [VS Code] パネルから送ったカスタムスキルにファイルや選択行が含まれない問題を修正: VS Code・JetBrains のパネルから送ったカスタムスキルやカスタムスラッシュコマンドに、通常のメッセージには含まれる開いているファイルや選択行が含まれていませんでした(anthropics/claude-code#102799)
- 地味に嬉しい修正:
"\"や(\)のように、引用符や括弧の中にある単独のバックスラッシュが Claude の応答から消える問題が修正されました。エスケープの説明やコードの断片では 1 文字の欠落で意味が変わるため、地味に嬉しい修正だと感じます。 - このほか、
claude mcpコマンドと/mcpの表示、バックグラウンドセッションと Remote Control、agent teams、/rewindと/ideの表示、claude -p・SDK のトランスクリプト、Write・Edit、VS Code 拡張、Cloud sessions など、多数の細かな不具合が修正されています。
破壊的変更・非推奨
CHANGELOG で破壊的変更や非推奨と明記された項目はありません。ここでは、既存の設定が効かなくなる DISABLE_COMPACT の変更を扱います。
設定ファイルの DISABLE_COMPACT でコンパクト化を有効に戻せなくなる
設定ファイルと mod の $.env.set で指定する DISABLE_COMPACT は、コンパクト化を無効にする方向にのみ使えるようになり、有効に戻す用途には使えなくなりました。CHANGELOG の「not back on」という書き方から、変更前は設定ファイルなどの値でコンパクト化を有効に戻せたと読めます(推測)。
公式ドキュメント(Environment variables)では、DISABLE_COMPACT を 1 にすると、自動コンパクトと手動の /compact の両方が無効になると説明されています。オン・オフを切り替える変数は、0、false、no、off でオフになるとも説明されています。また、公式ドキュメント(Settings files and precedence)では、ローカル設定はユーザー設定より優先されると説明されています。
以下は設定例です。ユーザー設定で DISABLE_COMPACT を 1 にし、プロジェクトのローカル設定で 0 を指定した場合を想定しています。
~/.claude/settings.json(ユーザー設定):
{
"env": {
"DISABLE_COMPACT": "1"
}
}
.claude/settings.local.json(ローカル設定):
{
"env": {
"DISABLE_COMPACT": "0"
}
}
変更前(〜v2.1.310):
ローカル設定の "0" が優先され、コンパクト化は有効に戻る(推測)
変更後(v2.1.311〜):
設定ファイルの DISABLE_COMPACT はコンパクト化を無効にする方向にのみ働くため、
ローカル設定の "0" ではコンパクト化は有効に戻らず、無効のまま
この例でコンパクト化を有効に戻すには、無効にしている側のユーザー設定から DISABLE_COMPACT を削除する必要があると読めます(推測)。
あわせて、DISABLE_COMPACT を設定していても agent teams のチームメイトが履歴をコンパクト化する問題と、巻き戻しメニューに「Summarize from here」と「Summarize up to here」が表示される問題も修正されています。
ultrathink の xhigh effort 化を試してみた
Claude Code v2.1.311 では、対話型のターミナルで ultrathink を使ったターンが xhigh effort で実行されるようになりました。この検証では、Bash ツールに渡される環境変数 CLAUDE_EFFORT を使って、ターンごとの effort レベルを確かめます。
検証状況は次のとおりです。
- 手順 7(非対話モード)は、2026年10月27日に macOS 上の Claude Code v2.1.311 で実行し、結果を載せています。
- 手順 1〜6(対話型ターミナル)の結果は未記入です。実行して「結果の記録表」に書き込んでください。
この検証で確かめること
v2.1.311 の CHANGELOG には、次の変更が記載されています。
- 対話型のターミナルで
ultrathinkを使うと、Anthropic の API 経由の Opus 5.5、Sonnet 5.5、Haiku 5.5、Fable 5.1 で、そのターンを xhigh effort で実行する - Claude の作業中に
ultrathinkを入力すると、そのターンの残りの effort を引き上げる ultrathinkのレインボー表示は、キーワードで effort を引き上げられる場所にだけ出る。引用符の中やファイルパスの一部では出ない
執筆時点(2026年10月27日)の公式ドキュメント(Model configuration)では、ultrathink はコンテキスト内の指示を追加するもので、API に送る effort レベルは変わらないと説明されています。この検証では、v2.1.311 で実際に effort が変わるかを、次の 4 点で確かめます。
ultrathinkを付けたターンが xhigh で実行されるか- 次のターンで元の effort に戻るか
- 作業中に
ultrathinkを送ると、そのターンの残りが xhigh になるか - 非対話モード(
claude -p)ではどうなるか
effort レベルの観測方法
公式ドキュメント(Environment variables)によると、Claude Code は Bash ツールのサブプロセスに、環境変数 CLAUDE_EFFORT を自動で設定します。値は、そのサブプロセスが起動した時点の effort レベル(low、medium、high、xhigh、max)です。Claude に echo $CLAUDE_EFFORT を実行させると、その時点の effort レベルを確認できます。
値はサブプロセスの起動時点で決まります。1 回の Bash 呼び出しの中で echo を繰り返しても、途中で値は変わりません。ターンの途中の変化を確かめる手順 6 では、Bash 呼び出しを分けて実行します。
前提条件
| 項目 | 条件 | 確認する手順 |
|---|---|---|
| Claude Code | v2.1.311 以降 | 手順 1 |
| 接続先 | Bedrock・Vertex・Foundry などを経由せず、Anthropic の API に直接接続している | 手順 1 |
| モデル | Opus 5.5、Sonnet 5.5、Haiku 5.5、Fable 5.1 のいずれか。この検証では Opus 5.5 を使う | 手順 2 |
| 実行形態 | 対話型のターミナル(手順 7 を除く) | — |
| effort の固定 | 環境変数 CLAUDE_CODE_EFFORT_LEVEL を設定していない |
手順 1 |
CLAUDE_CODE_EFFORT_LEVEL は、公式ドキュメントで --effort や /effort より優先されると説明されています。設定していると手順 2 で effort を medium にそろえられないため、検証の間は外しておきます。
公式ドキュメントでは、組織または自分の設定(maxEffortLevel)で effort の上限を設定できると説明されています。上限が xhigh より低い場合の ultrathink の動作は CHANGELOG に記載がないため、上限を設定していない環境で試します。
docs では、xhigh はより多くのトークンを使って深く推論するレベルと説明されています。この検証の依頼は、短い echo の実行だけにしています。
手順 1: 環境を確認する
ターミナルで次の 2 つのコマンドを実行します。
- 1 つ目のコマンドで
2.1.311以降のバージョンが表示されること - 2 つ目のコマンドで何も表示されないこと
$ claude --version
$ env | grep -E '^(CLAUDE_CODE_USE_(BEDROCK|VERTEX|FOUNDRY|ANTHROPIC_AWS)|CLAUDE_CODE_EFFORT_LEVEL|ANTHROPIC_BASE_URL)='
2.1.311 (Claude Code)
2 つ目のコマンドで CLAUDE_CODE_USE_BEDROCK などが表示された場合は、Anthropic の API に直接接続していません。ANTHROPIC_BASE_URL が表示された場合は、ゲートウェイなどを経由しています。ゲートウェイ経由の扱いは CHANGELOG に記載がないため、この検証では直接接続で試します。
手順 2: 作業用ディレクトリで effort を medium にして起動する
$ mkdir -p ~/handson-ultrathink && cd ~/handson-ultrathink
$ claude --model opus --effort medium

セッションのヘッダーで、モデル名の横に「with medium effort」と表示されました。
--model opusは最新の Opus を使う指定です。筆者の環境では、手順 7 のログのとおりclaude-opus-5-5になりました。--effortは、そのセッションだけに effort を設定するフラグです。保存済みの設定は変わりません。/effort mediumのように/effortの後にレベルを入力すると、そのレベルがモデルの既定として保存されます。保存したくない場合は--effortを使います。- 初めて開くフォルダでは、フォルダを信頼するかを確認されることがあります。作業用ディレクトリであることを確かめてから信頼します。
手順 3: ultrathink なしで基準の値を確認する
次の依頼を送ります。Bash の実行許可を求められたら許可します。
Bash で echo $CLAUDE_EFFORT を実行し、出力だけを答えてください

出力が medium であることが確認できました。
手順 4: ultrathink を付けて送る
同じ依頼の先頭に ultrathink を付けて送ります。
ultrathink Bash で echo $CLAUDE_EFFORT を実行し、出力だけを答えてください

入力欄で ultrathink がレインボー表示になり、出力が xhigh であることが確認できました。
ultrathink を引用符で囲んだり、ファイルパスの一部として書いたりすると、レインボー表示は出ません。表示が出ない場合は、引用符の外に単語として書き直します。
手順 5: 次のターンで元に戻るかを確認する
手順 3 と同じ、ultrathink を含まない依頼を送ります。
Bash で echo $CLAUDE_EFFORT を実行し、出力だけを答えてください

出力が medium に戻ることが確認できました。
なお、CHANGELOG では xhigh になるのは ultrathink を使った「そのターン」と書かれています。docs でも、ultrathink はセッションの effort 設定を変えないと説明されています。
手順 6: 作業中に ultrathink を送る
公式ドキュメント(Interactive mode)によると、Claude がツールを実行している間に入力して Enter を押したメッセージはキューに入ります。キューに入ったメッセージは、実行中のツール呼び出しが終わった時点で、同じターンの中で Claude に渡されます。この仕組みを使って、ターンの途中で ultrathink を送ります。
図の緑の範囲が、xhigh になると想定している範囲です。
-
次の依頼を送ります。
次の 3 つのコマンドを、1 つずつ別の Bash 呼び出しとして順番に実行してください。前のコマンドの出力を確認してから、次のコマンドを実行してください。 1. echo "1回目: $CLAUDE_EFFORT" 2. echo "2回目: $CLAUDE_EFFORT" 3. echo "3回目: $CLAUDE_EFFORT" 最後に、3 回の出力をそのまま並べて答えてください。 -
送信した直後に、次のメッセージを入力して
Enterを押します。ultrathinkだけを送ると、Claude がその単語に返答することがあるため、続きの指示を添えています。ultrathink このまま残りのコマンドを続けてください
実行結果は以下のとおりです。

キューに入れたメッセージが Claude に渡った後のコマンドで、出力が xhigh になること、それより前のコマンドの出力は medium のままであることが確認できました。
何回目のコマンドから値が変わるかは、メッセージを送ったタイミングによって前後します。3 回とも medium だった場合は、メッセージがターンの終了後に届いた可能性があります。
手順 7: 非対話モードと比べる
CHANGELOG では、この変更の対象は対話型のターミナルとされています。非対話モード(claude -p)で ultrathink を付けた場合の結果も記録して比べます。
claude -p 'ultrathink Bash で echo $CLAUDE_EFFORT を実行し、出力だけを答えてください' --model opus --effort medium --max-turns 3 --allowedTools 'Bash(echo *)'
コマンドを書くときの注意点は 3 つです。
-
プロンプトはシングルクォートで囲みます。 ダブルクォートで囲むと、
$CLAUDE_EFFORTが Claude Code に渡る前に、手元のシェルで展開されます。 -
プロンプトは
-pの直後に置きます。--allowedToolsは複数の値を受け取るオプションです。プロンプトを--allowedToolsの後ろに置くと、筆者の環境では次のエラーで終了しました。Error: Input must be provided either through stdin or as a prompt argument when using --print -
--allowedTools 'Bash(echo *)'で、echoで始まるコマンドだけを確認なしで実行できるようにします。--max-turns 3は、Bash の実行と回答に必要なターン数に余裕を持たせた値です。
筆者の環境での実行結果
検証環境は次のとおりです。
- macOS、Claude Code v2.1.311
CLAUDE_CODE_USE_BEDROCK、CLAUDE_CODE_USE_VERTEX、CLAUDE_CODE_USE_FOUNDRY、CLAUDE_CODE_USE_ANTHROPIC_AWS、ANTHROPIC_BASE_URL、CLAUDE_CODE_EFFORT_LEVELはいずれも未設定
ultrathink なしと、ultrathink ありで実行した結果です。
% claude -p 'Bash で echo $CLAUDE_EFFORT を実行し、出力だけを答えてください' --model opus --effort medium --max-turns 3 --allowedTools 'Bash(echo *)'
medium
% claude -p 'ultrathink Bash で echo $CLAUDE_EFFORT を実行し、出力だけを答えてください' --model opus --effort medium --max-turns 3 --allowedTools 'Bash(echo *)'
medium
この出力は Claude が答えた文章です。Bash ツールの実際の出力とモデルを確かめるため、--output-format stream-json --verbose を付けて実行し、jq で取り出しました。
% claude -p 'ultrathink Bash で echo $CLAUDE_EFFORT を実行し、出力だけを答えてください' --model opus --effort medium --max-turns 3 --allowedTools 'Bash(echo *)' --output-format stream-json --verbose \
| jq -r 'if .type=="system" and .subtype=="init" then "model: \(.model) / version: \(.claude_code_version)" elif .type=="user" then (.message.content[]? | select(.type=="tool_result") | "tool_result: \(.content | if type=="string" then . else (map(.text? // "") | join("")) end)") else empty end'
model: claude-opus-5-5 / version: 2.1.311
tool_result: medium
非対話モードでは、ultrathink を付けても Bash ツールの CLAUDE_EFFORT は medium のままでした。CHANGELOG で対象が対話型のターミナルとされていることと一致しました。
結果の記録表
送る内容に対する、実際の出力は以下のとおりです。
| 手順 | 送る内容 | 実際の出力 |
|---|---|---|
| 3 | ultrathink なし |
medium |
| 4 | ultrathink あり |
xhigh |
| 5 | ultrathink なし(手順 4 の次のターン) |
medium |
| 6 | 作業中に ultrathink を送る |
1 回目 medium、2 回目と 3 回目 xhigh |
| 7 | claude -p で ultrathink あり |
medium(筆者の環境) |
ターンごと、もしくはターンの中で、effort を xhigh にピンポイントで変更できると考えると良いでしょう。
最後に
v2.1.311 は、ultrathink が実際に effort を xhigh に上げるようになった点と、DISABLE_COMPACT の扱いの変更が中心のリリースだと感じます。修正は 56 件と多く、1M context のクレジット要求で止まる問題など、コンパクト化まわりの修正も入っています。
ultrathink を使っている方や、設定ファイルで DISABLE_COMPACT を指定している方は、注目のアップデートと「破壊的変更・非推奨」の節を確認したうえで、アップデートして試してみてはいかがでしょうか。
参考文献









