Claude Code v2.1.311:ultrathinkのxhigh化と1M context修正
Claude Code v2.1.311では、対話型ターミナルのultrathinkがそのターンをxhigh effortで実行するようになり、「Usage credits required for 1M context」で止まる問題が修正され、JSON出力のエスケープも変わりました。
Claude Code v2.1.311の変更履歴は92項目で、修正56件、改善16件、挙動変更15件、追加5件です。挙動変更のいくつかは設定やスクリプトに関わります。対話型ターミナルでは ultrathink がそのターンを xhigh effortで実行するようになり、[1m] 接尾辞は効果のないモデル名から外れ、JSON出力はより多くの文字をエスケープし、Bedrock、Mantle、Vertex、Foundry上のClaude Codeは署名付きファイルからモデル設定を読み込むようになりました。修正では、標準contextのセッションが「Usage credits required for 1M context」で止まらなくなり、SubagentStop hookは約1分に2回ではなくsubagentの終了時に1回だけ実行されるようになったほか、2つの改善で起動時間が短縮されています。
v2.1.311は v2.1.310 に続くリリースで、翌日には v2.1.312 が公開されました。
注意すべき挙動の変更
ultrathink はそのターンを xhigh で実行
対話型ターミナルで、Anthropic API経由でOpus 5.5、Sonnet 5.5、Haiku 5.5、Fable 5.1を使っている場合、ultrathink はそのターンを xhigh effortで実行するようになりました。Claudeの作業中に入力すると、そのターンの残りのeffortを引き上げます。レインボー表示は、このキーワードがeffortを引き上げられる場所にだけ現れ、引用符で囲まれている場合やファイルパスの一部である場合には現れなくなりました。各effortレベルの意味は「Ultracode と Effort レベル」を参照してください。
効果のない [1m] 接尾辞は表示されなくなりました
[1m] 接尾辞に効果のないモデルでは、モデル名とIDからこの接尾辞とそのラベルが外れるようになりました。接尾辞は引き続き受け付けられるため、これを含む設定はそのまま動作しますが、モデル名やIDを読み取るスクリプトは、これらのモデルで接尾辞が付くことを前提にしないでください。
JSON出力のエスケープ対象が増えました
--output-format json または stream-json では、文字列内のDEL、C1制御文字、Unicodeの書式文字が \uXXXX エスケープとして書き出されるようになりました。パース後の値は変わらないため、JSONをパースするコードには同じ文字列が見えます。違いが見えるのは、生のテキストを比較・検索するツールだけです。
Bedrock、Mantle、Vertex、Foundryは署名付きファイルからモデル設定を読み込みます
Bedrock、Mantle、Vertex、Foundry上のClaude Codeは、downloads.claude.ai上の署名付きファイルからモデル設定を読み込むようになりました。無効にするには CLAUDE_CODE_MODEL_CATALOG=off を設定します。
DISABLE_COMPACT はコンパクションをオフにすることしかできません
設定ファイル内の DISABLE_COMPACT と、modが $.env.set で設定する DISABLE_COMPACT は、コンパクションをオフにすることだけができ、オンに戻すことはできなくなりました。関連する修正も2つあります。DISABLE_COMPACT 設定時に、agent teammateが履歴をコンパクションしなくなり、rewindメニューに「Summarize from here」と「Summarize up to here」が表示されなくなりました。
VS Codeは自身のテレメトリ設定に従います
VS Codeのテレメトリ設定がオフの間、拡張は DISABLE_TELEMETRY を設定した状態でClaude Codeセッションを開始するようになりました。そのため、これらのセッションは使用状況メトリクスもエラーレポートも送信せず、feature flagも取得しません。
その他の挙動変更
- 設定ファイル内のpermission ruleに関する起動時の警告は、ルールが変わるまで、ユーザーごとに1回だけ表示されるようになりました。
CLAUDE_CODE_SYNC_SKILLSを設定し、feature flagの取得をオフにしているセッションは、同じマシン上の別のセッションが取得した最大10分前までのclaude.ai skillリストを再利用するようになりました。/code-reviewは、effortレベルを先頭に置き、maxは求められたときだけ使うようClaudeに指示するようになりました。- Coworkのクラウドセッションは、プラグインや設定で指定された
agentを無視するようになりました。指定されていると、再起動後にこれらのセッションがコネクタとほとんどのツールを失っていました。 claude purgeは、削除するのはこのコンピューター上のデータだけで、Anthropicが保存しているものは削除しないと示すようになりました。- エージェントビューのCtrl+Dがプロンプトと同じ動作になり、入力が空のときに2回押すと終了します。
- フルスクリーンのリストで、スクロールバーの矢印やバーのクリックは、マウスボタンを離したときに作用するようになりました。離す前にスクロールバーの外へ移動すればクリックを取り消せます。
- VS Codeのセッションリストのサイドバーは、起動時ではなく、Webタブを初めて開いたときにWebセッションを読み込むようになりました。
- Claude Tagの管理設定では、自分のSlackアカウントから見えるプライベートSlackチャンネルに、#ではなく鍵のアイコンが表示されるようになりました。
新機能
- セルフホストrunner:
--hold-idle-fileと--max-hold-min。self-hosted-runnerに、ホストが実行中のまま残されたプロセスを報告している間、アイドル状態のセッションを保持するための2つのオプションが追加されました。 - Explanatory出力スタイルのヒント。 Claudeに説明を求めたときに、Explanatory出力スタイルのヒントが表示されるようになりました。
- VS Code:シンタックスカラーとhookの状態表示。 Claudeの返信内のコードブロックに、ライト、ダーク、ハイコントラストダークの各テーマでシンタックスカラーが付くようになりました。時間のかかるUserPromptSubmit hookには「Running UserPromptSubmit hooks」というスピナーの状態表示と、スクリーンリーダー向けの読み上げが追加されました。
- Claude Tag:Skillsビュー。 Claude Tagのアナリティクスに、Slackチャンネルで添付された各skillをClaudeがどれだけ実行しているか、どれが使われていないかを示すSkillsビューが追加され、管理設定にUsageへのリンクが付きました。
context、コンパクション、使用量
- 「Usage credits required for 1M context」。 標準contextのセッションで、リクエストが200Kトークンを超えるとこのメッセージで止まっていました。現在はClaude Codeが会話をコンパクションして続行します。
- 古いメモリファイル。 自動コンパクションの直後、セッションの前半でMEMORY.mdやCLAUDE.mdを編集していた場合に、Claudeが古い内容を参照していました。
- 要約の欠落。 モデルの返信に要約が含まれていない場合、Claude Codeは会話を置き換える前に、通常はもう一度要約を求めるようになりました。
- prompt cacheのミス。
/usageの「What’s contributing to your limits usage?」に大きなprompt cacheミスが表示されるようになり、プランモードでプランのモデルがセッションのモデルと異なる場合には、/effortがprompt cacheミスを警告するようになりました。 /teleport。 コンパクション済みのクラウドセッションが最後のコンパクションから読み込まれるとき、/teleportとclaude --teleportが警告するようになりました。要約されたメッセージはローカルのコピーに含まれないためです。- サブスクリプションのメッセージ。 Claude ProとMaxの契約者が、サブスクリプションを使えないときに管理者に問い合わせるよう案内されていました。現在は請求設定を案内します。
hook、subagent、agent teams
SubagentStophook が、終了時に1回ではなく、実行中のsubagentごとに約1分に2回実行されていました。- subagentでのMCPツール。 subagentの開始後に接続を完了したサーバーのMCPツールを、subagentが使えませんでした。
- worktree。 subagentが起動したバックグラウンドsubagentがまだ作業している間に、そのsubagentの分離worktreeが削除されていました。
- autoモード。 autoモードで自分のシェルを待っているバックグラウンドエージェントが、ウェイクアップのたびにメイン会話の新しいターンを開始していました。
- agent teamsのタスクリスト。
--resume、--continue、/resume、--session-idで戻ったとき(/clearやクラッシュの後を含む)にタスクリストが空で表示され、/branchが元のセッションのリストに書き込んでいました。 - skillの二重実行。 完了済みの
/code-reviewや、subagentで実行される他のskillが、クラウドセッションやバックグラウンドセッションの再起動時にもう一度実行されていました。 - 重複メッセージ。 エージェントのチャットタブで↑を押すと、まだ配信待ちのメッセージが呼び出され、それを再送すると2通目が送られていました。
起動、速度、リクエスト
- 起動時間。 ProとMaxのアカウントでは、前回のチェックから1時間以内の起動で2つのネットワークリクエストを省略するようになりました。また、
claude --model opusのように引数がオプションとその値だけの起動も速くなりました。 - CLAUDE.mdの非常に長いリスト項目。 CLAUDE.mdに非常に長いリスト項目があると、起動時やファイルの読み取り・編集後に長時間フリーズしていました。
- 大きな編集。 ファイル内の数千行を変更すると、WriteとEditが実行後に最大5秒止まり、変更行数を0と報告していました。
- 中断。 MCPサーバーがリソースの読み取りに応答していない間や、skillのダウンロード中は、Claudeを中断してもタイムアウトまで反映されませんでした。
- 再試行。 Claude Codeが、APIが再試行しないよう示したリクエストを再試行しており、ターンが数分間止まることがあったほか、無人リトライモード(
CLAUDE_CODE_RETRY_WATCHDOG)では無期限に止まることもありました。 - 長い思考。 エンドポイントが思考の進捗更新を送るGoogle Vertex AI、Microsoft Foundry、Claude Platform on AWSで、長い非表示の思考がアイドルと見なされて打ち切られていました。
- わかりやすいエラー。 「Connection dropped」APIエラーは、まず確認すべき場所(使用中のproxyまたはgateway、なければVPNやファイアウォール)を示すようになりました。これはAnthropic APIのみで、Bedrock、Vertex、Foundryは変わりません。貼り付けたサインインコードが拒否されたときのメッセージは、コードの期限切れや使用済みの可能性があること、再度サインインすべきことを示すようになりました。
MCP、プラグイン、Linuxのsandbox
- リポジトリのルートより下で実行したとき、
claude mcp add、claude mcp remove、/mcpが、local-scopeのサーバーを保持する~/.claude.jsonのプロジェクトエントリではなく、現在のフォルダを示していました。 claude mcp listとclaude mcp getが、接続に失敗した行でエラーコードを2回表示していました(例:ENOENT: ENOENT: …)。/mcpが、サインインなしで動くリモートサーバーを「Clear authentication」の後に失敗と表示し、Claude Codeが認証情報を送らないリモートサーバーを「authenticated」と表示していました。- 最上位に空の
.mcp.jsonがあると、複数のプラグインを収めた--plugin-dirフォルダが1つのプラグインとして読み込まれていました。 - Linuxで、
--plugin-dirのフォルダが追加ディレクトリでもあり、permissions.blockReadsOutsideWorkingDirectoriesがオンのとき、sandbox内のBashコマンドがbwrap: Can't create fileで失敗していました。
ツール、ファイル、トランスクリプト
- タイムアウトに達したシェルコマンドの結果に、それまでの出力と、コマンドがバックグラウンドで実行中であることが示されるようになりました。
- Bashツールの説明が、作業ディレクトリは呼び出し間で常に保持されると記載していました。また、環境ブロックが、コマンドの実行に使われていないシェルを示していました(Bashツールがzshを使っているのにfishと示すなど)。
- @ファイルピッカーが、gitで無視されたファイルを再び含める
.ignore/.rgignoreの否定ルールを無視していました。 - 行がターミナルより幅広いとき、Writeツールのファイルプレビューが行を飛ばし、非表示の行数を数え間違えていました。
- 画像ファイルに触れるテキスト(
! open /tmp/shot.pngや/review look at /tmp/shot.pngなど)を貼り付けると、画像が添付され、プロンプトからそのパスが消えていました。 - 引用符や括弧の中の単独のバックスラッシュ(
"\"や(\)など)が、Claudeの応答から消えていました。 claude -pとSDKのセッションが、トランスクリプトのメッセージを順不同で保存したり、取り消されたメッセージを残したりしていました。- 複数のビューを持つartifactでは、Claudeがリンクの
#nameで各ビューを切り替えるようになり、ビューを切り替えてもアドレスバーは変わらないとは言わなくなりました。ページとドキュメントの選択では、Artifactツールが解説や視覚的・インタラクティブな作品をartifactページにし、ドキュメントは人が編集し続けたり回覧したりする文章に使うようになりました。 - あなたが指定していないSlackチャンネルにメッセージを送る前に、Claudeがチャンネルのトピックに投稿ルールがないか確認するようになりました。
バックグラウンドセッション、Remote Control、クラウド
- ターンの合間にクラッシュしたバックグラウンドセッションが、アタッチ中、ピン留め中、またはスケジュールされたタスクやウェイクアップが設定されている間は再起動されませんでした。
- 「background service did not respond」エラーが、無効になっている
claude daemon restartを提案していました。現在はclaude daemon stop --anyを提案し、それによってバックグラウンドセッションが終了することも示します。 claude respawn <id>が、そのIDに一致するバックグラウンドセッションがないと報告する前に、バックグラウンドサービスを起動していました。- バックグラウンドセッションのプロセスが終了したときのメッセージが、実際には行われない再起動を約束しなくなり、セッションを再開する方法を示すようになりました。
- リンクに対応したターミナルから開いた後も、バックグラウンドセッションのステータスラインのリンクがプレーンテキストのままでした。
- ネットワークproxyが起動時のリクエストをブロックすると、Remote Controlセッションが約2分間「Connecting」のままになっていました。
- Claudeがクラウドセッションや Remote Control セッションに送ったメッセージが、Claudeモバイルアプリであなた自身のメッセージとして表示されていました。
- Remote Control経由やクラウドセッションに送ったメッセージの添付ファイルが、ディスクがいっぱいで保存できなかったとき、Claudeにその原因が伝えられていませんでした。1つのメッセージで最初の20個を超えた添付ファイルが除外されたことも伝えられていませんでした。
- Coworkのクラウドセッションで、WebFetchとWebSearchが応答の停滞で止まっていました。現在は、完了しないリクエストは300秒後に失敗します。
- Anthropicがホストする環境のルーティンが、所有者が組織を離れて再参加した後もロックされたままでした。現在は所有者が再びオンにできます。
- ルーティンのAPIトークンの削除や再生成に失敗したとき、編集ダイアログがすでに閉じていると何も表示されませんでした。現在はエラーのtoastが表示されます。
- 管理者用を含むクラウド環境のダイアログが、重複した名前を受け付けていました。現在は、一覧にある別の環境がすでに使っている名前を拒否します。
ターミナルUIとアクセシビリティ
- 以降のメッセージが会話から削除される場合にも、
/rewindの確認が会話が「will be forked」と表示していました。また、/rewindの警告が、手動やBashによる編集はコードの復元の影響を受けないと誤って示していました。 /ideが、インストールの完了前や失敗時にVS Code拡張がインストールされたと表示し、何もインストールされていないのにJetBrainsプラグインをインストールしたと表示していました。- 幅の広いフルスクリーンのターミナルで、表示するものがないのに編集後にdiffペインが勝手に開いていました。
- プロンプトにテキストがあるとき、フィードバックの下書きカードが1/2/0とEscのショートカットを表示していましたが、そのときこれらのキーはカードではなくプロンプトに作用します。
- スクリーンリーダーモードで、Escapeで取り消したフィードバックがプラン承認時に送信されていました。また、
/permissionsでルールを削除するとすぐに「Deleted allow rule …」と読み上げられ、Claudeの質問は矢印や記号なしで「Questions: Color (answered), Pages」のように一覧表示されるようになりました。
VS CodeとJetBrains
- VS CodeまたはJetBrainsのパネルから送ったカスタムskillとカスタムスラッシュコマンドに、通常のメッセージには含まれる開いているファイルや選択行が含まれていませんでした(anthropics/claude-code#102799)。
- macOSとLinuxで、PATHを読み取るためにログインシェルが起動ファイルを実行している間、拡張ホストがフリーズしていました。
- ツール結果内の画像をクリックしたり、そのプレビューを閉じたりすると、結果のテキストもエディタタブで開いていました。
- Sendボタンでメッセージを送った後も、音声ディクテーションが録音を続けていました。現在は、Enterを押したときと同様に、送信時にまずディクテーションを停止します。
セルフホストrunner、Claude Tag、Code Review
- セルフホストrunner。 レート制限(HTTP 429、または終了コード75で終わるgitラッパー)によって追加の読み取り専用リポジトリがブロックされると、セッションが開始できませんでした。現在はそのリポジトリなしでセッションが開始されます。
- Claude Tag。 新しいセッションで実行されるルーティンは、報告することがない場合、チャンネルに使い捨てのメッセージを投稿せずに終了できるようになりました。
- Code Review。 一時的なサーバー障害でセッションを開始できなかったレビューは、自動的に1回再試行されるようになり、check runにもその旨が表示されます。モデルが自動再試行でも変更を分析できない場合、check runはこれ以上自動レビューを開始しないことを示すようになりました。
このリリースには合計92件の変更が含まれています。すべての項目は完全な変更履歴をご覧ください。
アップデート方法
- インストール済みのバージョンを確認:
claude --version - その場でアップデート:
claude update