Claude Code v2.1.314:書き込み範囲の制限とアイドル圧縮の拡大
Claude Code v2.1.314は、作業ディレクトリ外へのファイル書き込みを拒否する設定を追加し、アイドル圧縮をVS CodeとClaude Desktopに広げました。修正は81件、挙動変更は13件です。
Claude Code v2.1.314の変更履歴は119項目で、修正81件、改善16件、挙動変更13件、追加6件、更新3件です。Claudeのファイル編集ツールを作業ディレクトリ内に限定する設定が加わり、アイドル圧縮(idle compaction)がVS CodeとClaude DesktopのCodeタブにも広がり、Claude apps gatewayの管理者向けにはIdPグループによる振り分けとBedrockのguardrailトレースが追加されました。修正はモデルとプロバイダーの信頼性、権限とhook、サインイン、ターミナル、VS Code、クラウドセッション、Claude Tagに及びます。既存の設定、環境変数、hookルールの動作を変える項目もいくつかあるため、組織でClaude Codeを管理している場合や、Bedrock、Vertex、Foundry、LLM gateway経由で使っている場合は、更新前に「注意すべき挙動の変更」を確認してください。
新機能
作業ディレクトリ外への書き込みをブロック
新しい permissions.blockWritesOutsideWorkingDirectories 設定を使うと、Write、Edit、NotebookEditツールは、どの権限モードでも作業ディレクトリ外のパスを拒否します。この項目が挙げているのはこの3つのツールだけで、シェルコマンドも対象になるとは書かれていません。権限モードの基礎はパーミッションモデルとセキュリティのチュートリアルを参照してください。
VS CodeとClaude Desktopでのアイドル圧縮
VS CodeとClaude DesktopのCodeタブでも、200Kトークン以上の会話がアイドル状態になると要約されるようになり、次のメッセージを送る時点でプロンプトキャッシュが切れていれば、その要約が使われます。別の変更(下の「注意すべき挙動の変更」を参照)により、テレメトリを無効にしているサブスクリプション利用者でも、また1時間のプロンプトキャッシュを有効にしたBedrock、Vertex、Foundry、LLM gatewayでも、アイドル圧縮が実行されるようになりました。ターミナルでのアイドル圧縮はv2.1.299のリリースノートで取り上げています。
gateway upstreamの groups とBedrockの guardrail_trace
Claude apps gatewayの管理者向けの追加が2つあります。
groupsはgateway upstreamに指定できる任意のリストです。リストにあるIdPグループの開発者だけがそのupstreamに送られ、フェイルオーバー時も同様です。guardrail_traceはBedrock upstreamで、リクエストに対してどのAmazon Bedrock guardrailフィルターが発動したかを、一致したテキストを含めずにログに記録します。
残る2つの追加、スケジュールタスクのInclude completedボタンと、管理設定のClaude Tag APIドキュメントへのリンクは、クラウドセッションとClaude Tagの節で扱います。
モデル、プロバイダー、gateway
モデル、クラウドプロバイダー、gateway、接続に関する修正です。
- 管理者によるeffortの上限。 組織の管理者がモデルのeffortに上限を設けていると、セッションが毎ターン「Invalid effort level」で失敗していました。現在はClaude Codeがeffortを下げて再試行し、どのレベルを使うかを伝えます。effortが何を制御するかはeffortレベルのガイドで解説しています。
- 画像の多いBedrockセッション。 毎ターン、さらに
/compactも「400 Input is too long.」で失敗していました。現在は古い画像の削除と圧縮を行います。 - 既定のデプロイがないMicrosoft Foundry。 リソースに既定のSonnet、Opus、Haikuモデルのデプロイがないと、セッションが失敗していました。現在は同じファミリーの旧モデルにフォールバックします。
- 名指しで拒否されたbetaヘッダー。 gatewayやクラウドプロバイダーがClaude Codeのbetaヘッダーの1つを名指しで拒否した場合、そのヘッダーを外してリクエストを再送するようになりました。
- gateway経由のツール検索。 ツール検索の
tool_referenceブロックを受け付けないgatewayの背後では、リクエストが繰り返し拒否されていました。現在はツール検索なしで一度だけ再送し、セッションはそれを記憶します。 - ドット区切りのモデルID。 LLM gatewayの背後で
claude-opus-4.8のようにドットで書かれたモデルIDが旧モデルとして扱われ、context window、出力上限、effort、thinkingモード、コストが誤っていました。 - Vertexのトークンエンドポイント。 Googleのトークンエンドポイントが接続を受け付けたまま応答しないと、Claude apps gatewayのVertex upstreamが数分間止まっていました。
- 認識できないモデル名。
--resumeや、拒否の後に別モデルへ切り替えた地点より前へ巻き戻す操作によって、Claude Codeが認識しないモデル名のセッションが別のモデルに移っていました。 - クロス署名されたルート証明書。 システムの証明書ストアに、前の世代とクロス署名された更新版ルート証明書が含まれていると、TLS接続が
UNABLE_TO_GET_ISSUER_CERTで失敗していました。
Headless実行、CI、スクリプト
claude -pの起動失敗。 起動に失敗すると、claude -pは何も出力せず終了コード0で終わっていました。現在はエラーを表示し、終了コード1で終了します。- CIでのワークスペースの信頼。 ターミナルのあるCIジョブで、
claude ultrareviewとclaude remote-controlがワークスペースの信頼(workspace trust)を確認する質問をしていました。CIが設定されている場合、信頼されていないフォルダーは即座に拒否されるようになりました。また、/ultrareviewもclaude ultrareviewと同様に、gitを実行する前にワークスペースの信頼を確認するようになりました。 - gitのindex lock。 バックグラウンドのdiff更新がリポジトリのindex lockを一時的に取得するため、同じ瞬間に実行したgitコマンドが「Unable to create ‘.git/index.lock’: File exists」で失敗することがありました。
- stream-jsonホスト。
<bash-stdout>や<local-command-stdout>などのタグを含むプロンプトが、ローカルのstream-jsonホストに受信確認されていませんでした。 - 多数のsubagentとメモリ。 多数のsubagentを実行する長いheadlessおよびSDKのターンで、親セッションが各subagentのツール結果をターン終了まで保持しなくなりました。
権限、sandbox、hook、設定
- 再開したworktreeでのsandbox。
claude -p --resumeまたは--continueで入ったworktreeに、sandboxの保護が適用されていませんでした。現在は適用されます。 - Monitorコマンドへのhook。 Bashにマッチするhookが、Monitorツールが起動したシェルコマンドでは実行されていませんでした。現在は実行されます。ただし、こうしたhookはブロックや確認はできても、これらのコマンドを承認したり書き換えたりはできません。hookの
if条件に関する関連変更は「注意すべき挙動の変更」にあります。hookの基礎はHooksシステムのチュートリアルを参照してください。 --setting-sourcesでの除外。--setting-sourcesで除外した設定ファイルが、autoモードのルールや保存済みの権限同意など、一部の設定をまだ供給していました。forceRemoteSettingsRefresh。 リモートのmanaged settingsだけで設定した場合、保存済みのコピーが期限切れになると適用されなくなり、サーバーに到達できないときにポリシーなしでセッションが始まっていました。- その他のmanaged settings。 managed settingsにある管理者のTLS信頼設定が、Claude Desktopのセッションで適用されていませんでした。managed settingsでモデルを固定していると、BedrockとVertexのモデルアップグレードの案内が起動のたびに表示されていました。managedなプラグイン設定のあるマシンでは、自分の
--plugin-dirや--plugin-urlのプラグインの1つでマニフェストが壊れていたりダウンロードに失敗したりすると、モデルの切り替えが拒否されていました。 - autoモードの判定。 safety checkが判定を返さなかった呼び出しを、autoモードがブロック済みとして報告し、
/permissionsに表示していました。また、autoモード、denyルール、PreToolUse hookにブロックされた、あるいはその他の理由で実行されなかったシェル呼び出しやMCP呼び出しが、折りたたまれたツールグループ内では実行済みのように見えていました。 - PreCompact hookの出力。 出力が非常に大きいPreCompact hookが原因で、圧縮が失敗したり繰り返されたりすることがありました。現在は各hookの出力が10,000文字で切り詰められます。
sandbox.excludedCommandsの説明。 列挙したコマンドは常にsandboxの外で実行される、と説明していましたが、1回の呼び出しに含まれるすべてのコマンドがいずれかのエントリに一致する必要がある、という説明に改められました。- より分かりやすいブロックと確認。 次の3つは改善です。autoモードがブロックした呼び出しのメッセージは、コマンド名を示し、Claudeが再試行する可能性とautoモードが再チェックすることを伝え、確認先として
/permissionsを案内します。/permissionsのレビュータブはRecently blockedという名前になり、フッターで、マークした行に対してEscが何をするかを示します。権限確認の理由が長くても使う行数が減り、承認対象のコマンドが画面外に押し出される端末が少なくなりました。
注意すべき挙動の変更
以下は、既存の設定、変数、ルール、コマンドの動作を変える項目です。
FORCE_HYPERLINK=falseでハイパーリンクがオフに。false、no、offの値は、これまで逆にハイパーリンクをオンにしていました。- Bashツールの
which。 Bashツールのシェルは、継承したwhichのエイリアスや関数をクリアし、エクスポートされたwhich/unsetenv関数をコマンドに渡さなくなりました。そのためwhichはシステムのコマンドかzshのビルトインになります。 - hookの
if条件がMonitorのコマンドにマッチ。Monitor(tail *)のような条件は、Bash(tail *)がBashのコマンドにマッチするのと同じように、Monitorツールのシェルコマンドにマッチするようになりました。 - フラグ付きリクエストは別モデルで再試行。
ANTHROPIC_DEFAULT_OPUS_MODEL、availableModels、deniedModelsによって旧Opusモデルしか残らない、あるいは1つも残らない場合、フラグが立った(flagged)リクエストは拒否で終わらず、別のモデルで再試行されるようになりました。 - アイドル圧縮の対象拡大。 テレメトリを無効にしたサブスクリプション利用者でも実行されるようになり、Bedrock、Vertex、Foundry、LLM gatewayでも1時間のプロンプトキャッシュが有効なら実行されます。
- Recently blockedでの承認。
/permissionsのRecently blockedは、全文を読めない呼び出しの承認を拒否するようになりました。端末の高さが足りず全体を表示できない呼び出しも含みます。 - サーバー管理設定。 Claudeのファイルツールは、組織のサーバー管理設定のローカルコピーを編集する前に確認するようになりました。自分の設定ファイルに対してと同じ扱いです。
claude -pの終了コード。 前述のとおり、起動に失敗した実行は、出力なしの0ではなく、エラーを表示して1で終了するようになりました。- Coworkクラウドセッションでのhookの許可。 Coworkクラウドセッションのautoモードでは、MCPツール呼び出しに対するhookの許可(allow)は回答なしとして扱われ、分類器か権限確認が判断するようになりました。
- クラウドセッションのセットアップスクリプト。 Web、デスクトップ、モバイルアプリから始めるクラウドセッションは、セットアップスクリプトがエラーで終了しても、起動に失敗せずにそのまま開始するようになりました。
- VS Codeでの
CLAUDE_CODE_DISABLE_CFC_PROMPT。 この変数は、拡張がセッションのメッセージにClaude in Chromeの指示を追加することも止めるようになりました。ブラウザツール自体は引き続き使えます。 - ゴミ箱フォルダーに上限。
~/.claude/skills/.trashと~/.claude/plugins/.trashはこれまで無制限に増えていましたが、cleanupPeriodDaysの設定にかかわらず、それぞれ約1024件までになりました。 - macOSでの
git grep。 Claudeが実行するほとんどのコマンドで、git grepがCロケールを使うようになりました。UTF-8として不正なファイルで、macOSの正規表現ライブラリに報告されているメモリリークを避けるためです。
サインイン、MCP、Remote Control
- サインインなしでも動作するMCPサーバーが、保存済みのサインインが使えなくなった後に「needs authentication」と表示されていました。現在はサインインなしの状態で使われます。
claude mcp logoutが、MCPのサインインを削除できていないのに成功と報告していました(たとえばSSH接続中でmacOSのキーチェーンがロックされているとき)。VS CodeのMCPサーバー向け「Clear authentication」も、保存済みのサインインを削除できないときに成功と報告しており、こちらも修正されました。- 複数のセッションが1つのAnthropicプロファイルのログインを共有している場合に、資格情報のロックが使用中だと余分なサインイン更新が起きていた問題が修正されました。
- App StoreまたはGoogle Playで課金されているプランで、
/upgradeがブラウザを開いて新しいログインを始めることはなくなり、プランを変更できる場所を案内するようになりました。 - claude.aiのログインを理由に拒否されたリクエストを再試行している間、クラウドセッションのエラーで
claude auth loginも提案されるようになりました。 - MCPツールが1万個以上あるセッションで、
/contextが速くなりました。 - 変更履歴には、MDMとリモート設定でbase URLや
apiKeyHelperが食い違う場合の、保存済みclaude.ai、Team、Enterpriseログインの動作の改善も記載されていますが、新しい動作の詳細は書かれていません。 - Remote Control。 セッションサービスが一時的に遅いと起動に失敗していた
claude remote-controlセッションは、workerの登録を間隔を延ばしながら再試行するようになりました。8秒を超えるモデル切り替えは、「still pending」エラーではなく最終結果を返します。権限モードボタンは入力するまで誤ったモードを表示していましたが、コンピューターがオンラインであれば、開いた時点で実際のモードを表示します。/compact の後にクライアントへ余分な「Compacted (ctrl+o to see full summary)」行が出ることもなくなりました。
セッションと使用量上限
- 使用量上限での自動継続。 タスクが待機の合間に自分で再開した場合(/goalのチェックイン、バックグラウンドタスク、スケジュールタスクなど)、「Continue automatically at usage limit」があなたのプロンプトなしで3回を超えて継続することがありました。
- Ultracodeがオフのまま保たれるように。 Ultracodeで開始したバックグラウンドセッションとクラウドセッションで、Ultracodeをオフにしても、次回の起動時に再びオンになっていました。
- 解析できないツール呼び出し。 解析できないツール呼び出しをClaudeが諦めた後も、最後の壊れた応答とその再試行プロンプトが会話に残っていました。
- 再開とタイトル。 壊れたトランスクリプトでの
--resumeが速くなり、メモリ使用量も減りました。skillや/security-reviewのようなプロンプトベースのコマンドで始まったセッションには、そこからタイトルが付くようになり、最初のプロンプトが失敗しても(使用量上限など)その後会話が続いたセッションが無題のまま残ることもなくなりました。/resume のピッカーは、スラッシュコマンドしか実行していないセッションのタイトルとしてCLAUDE.mdやCLAUDE.local.mdの本文を表示しなくなり、削除したセッションがほぼ空のエントリとして再開リストに戻ってくるまれな問題も修正されました。 - skillのゴミ箱。 skillのファイル監視が、
~/.claude/skills/.trashに残る削除済みskillをすべてチェックしなくなりました。このチェックは削除のたびに増えるファイルシステム負荷になっていました。このフォルダーの新しい上限は「注意すべき挙動の変更」にあります。 - バックグラウンドセッション の起動失敗が、バイナリがディスク上に残っているにもかかわらず、daemonバイナリの削除として報告されることはなくなりました。
ターミナルと編集
- ストリーミング中の表。 ストリーミング中、入力途中の行のせいでMarkdownの表がグリッド表示と縦積み表示の間で跳ねることがなくなり、長い表が生のパイプ記号に戻ることもなくなりました。
- vimモード。
dw、dW、yw、yWが行末を越えて動作しなくなり、wとWは空行で止まるようになりました。文字選択に対するpは、ヤンクしたテキストが行単位かどうかを考慮するようになり、awとiwは行末の改行を含めなくなりました。 - 貼り付け。 Claudeの質問ダイアログでは「Other」行にフォーカスがないと、貼り付けたテキストやドラッグしたファイルが失われ、プロンプトのフッターで行を選択していると貼り付けたテキストが失われていました。どちらも修正されています。Ctrl+Rのプロンプト履歴は、折りたたまれた
[Pasted text]ピル内のテキストにもマッチするようになりました。SSH経由でLinuxマシンに画像を貼り付けても何も起きず、何も表示されませんでしたが、現在はファイルをコピーしてそのパスを貼り付けるよう案内されます。 - エージェントとsubagent。 エージェントパネルで、別のエージェントの開始や終了と重なると、xやEnterが誤ったエージェントに作用することがありました。subagentのトランスクリプトを開いた状態で
/btwを使うとメイン会話から回答し、/btwなどのコマンドパネルでEscを押すと、トランスクリプトを開いているsubagentまで中断していました。フルスクリーンモードでは、別のモデルで動くsubagentやチームメイトを表示しているのに、ウェルカムヘッダーがセッションのモデルを表示していました。これらはすべて修正されています。 - セッション名。 /renameで付けた名前が、Claudeが権限や計画の判断を求めている間に消えなくなり、並べて開いたセッションを見分けられるようになりました。
- CRLFのdiff。 gitの改行コード変換の対象になっているCRLFファイルを、変更なしで保存し直したり1行だけ編集したりすると、Bashの編集diffがファイル全体を変更として表示していました。
VS Code
上で触れたアイドル圧縮と CLAUDE_CODE_DISABLE_CFC_PROMPT の変更に加え、拡張では次の問題が修正されました。
- キューに入ったメッセージのhookが実行されている間、スピナーとStopボタンが表示されていませんでした。
- 保存できないセッショングループの変更(削除など)が何も言わずに失敗していましたが、エラー通知が表示されるようになりました。
- プランプレビュータブで、Cmd+F/Ctrl+Fが検索ウィジェットを開きませんでした。
- ロシア語、ギリシャ語、ヘブライ語など、ラテン文字以外のキーボードレイアウトで、音声ディクテーションのショートカット(Ctrl+D)が反応しませんでした。
- チャットを開かずに拡張が起動したとき、実行されなかった1回限りの保存済みスケジュールタスクが確認なしで削除されていました。
IDEやクラウドセッションでEscやStopによってコマンドを止めた場合、Claudeには、コマンドが拒否されたことだけでなく、実行された可能性があることも伝えられるようになりました。
クラウドセッションとセルフホストrunner
- セットアップスクリプト。 Web、デスクトップ、モバイルアプリから始めるクラウドセッションは、セットアップスクリプトがエラーで終了しても起動に失敗しなくなりました(「注意すべき挙動の変更」を参照)。
- スケジュールタスク。 Anthropicのクラウドで実行されるスケジュールタスクは、claude.aiアカウントで有効にしたプラグインを読み込むようになりました。Scheduled tasksページでは、隠れているのが完了済みの1回限りのタスクだけのときにInclude completedボタンが表示され、Sortメニューを開かずにそれらを表示できます。
- WebFetchと長いPDF。 CoworkクラウドセッションのWebFetchは、PDFのテキストのうち100,000文字を超えた部分を黙って捨てていましたが、読まなかった量と続きを読む場所を示すようになりました。
- 頼んでいないモデル呼び出し。 新しいチャットのファイルを受け取った直後に前のworkerが停止すると、再開したclaude.aiのクラウドセッションが誰も求めていないモデル呼び出しを行っていました。
- 存在しない未コミット変更。 Claudeが別のworktreeからpushしたコミットにブランチを移した後、クラウドセッションが毎ターン未コミットの変更を報告していました。
- 権限モードの選択。 実行中のクラウドセッションやRemote Controlセッションが切り替えを拒否した後も、ピッカーがAutoのままでした。現在は使用中のモードを表示し、そのことを伝えます。
- 管理設定とトランスクリプト。 管理設定のGitHub EnterpriseのTest connectionは、クラウドセッションと同じ方法でも接続し、その2つ目のテストが失敗すると警告するようになりました。セルフホスト環境の詳細ダイアログは、非常に低いウィンドウや高い拡大率で内容が見えなくなっていましたが、スクロールできるようになりました。最近使ったセルフホスト環境も、新規セッションカードの最近の環境に表示されるようになりました。トランスクリプトでは、名前変更の行に新しいタイトルが示され、リポジトリと環境の一覧が1行のJSONではなく表で表示されます。
- セルフホストrunner。 runnerからのセッション一時停止リクエストが、Anthropicの応答前に接続を失うと、アイドル状態のセッションが一時停止せずに別のrunnerへ移っていました。セッションのブランチがgitリモートにない場合のエラーは、一度もpushされていないブランチもカバーし、ケースごとの直し方を示し、再試行を勧めなくなりました。
Claude Tag
- Enterprise Gridの複数ワークスペースで共有されたチャンネルで、
@Claude !restartがワークスペースのチェックに1回失敗しただけで諦めていました。現在は再試行し、それでも駄目ならもう一度実行するよう求めます。 - 両方の組織がClaudeをインストールしているSlack Connectチャンネルで、Claudeが自分のスレッド内のタグに応答しないことがありました。
- Claudeのセッションがセルフホストrunnerを待っている間、フォローアップのメッセージには進捗の兆しが何も表示されていませんでしたが、現在はClaudeがスレッドに待機中の通知を投稿します。
- 同じリンクから数分以内に2回SlackでClaudeアカウントを接続しても、確認のDMとチャンネルへの通知が2回目に送られることはなくなりました。
- 管理設定では、Slackを接続しているEnterprise組織のBundlesタブとChannelsタブに、Claude Tag APIドキュメントへの閉じられるリンクが表示されます。プラグインとskillのページのRetryは、読み込み失敗後も未保存のアクセス変更を保持するようになり、リポジトリのコントロールで同じ操作が二重に表示されることもなくなりました。
バンドルされたskill
/claude-api。 API トレース用のDatadogセットアップが、Consoleと同様にdd-llmobs-enabled: trueヘッダーを送るようになり、antのインストール手順から古いmacOSのxattrの手順が削除されました。また、Managed Agentsのworkflow実行を改善するためにエージェントを変更する前に、その実行のworkflowの読み取りを求めるようになりました。- dataviz。 バンドルされたdataviz skillは、y軸の目盛りラベルは10,000未満なら省略せずに表示し、水平方向のラベルは収まる場合に100万未満なら省略せずに表示するよう助言するようになりました。ドーナツグラフや円グラフの依頼には、順位付きの棒グラフか、値を表示する分割棒グラフで応えます。
/design-sync。 アップロード確認に、フォルダー、プロジェクト、アップロードまたは削除するファイルが表示されるようになりました。
表示や文言に関する細かな修正など、一部の項目はここでは省いています。完全な一覧は公式変更履歴にあります。
アップデート方法
- インストール済みのバージョンを確認:
claude --version - その場でアップデート:
claude update