Claude Code v2.1.305 — ツール検索の拒否で全リクエストが失敗する回帰を修正
Linuxのsandboxでuser namespaceを作れるsandbox.allowNestedUserNamespacesが加わり、v2.1.304で起きたツール検索拒否の全リクエスト失敗も修正。/usageの警告はfキーで直せる。
このリリースで何ができるようになるか
v2.1.305は38項目を含み、Self-hosted runner・Claude Tag・Code Reviewなど、クラウド側の修正が多い回です。手元のターミナルで効きやすいのは次の4点です。
sandbox.allowNestedUserNamespacesで、Linuxのsandbox内のコマンドがuser namespaceを作れるようになった(ChromiumやrootlessのPodmanが対象)- v2.1.304で入った回帰の修正。VertexやBedrock、ゲートウェイがツール検索を拒否すると、すべてのリクエストが失敗していた
CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MSで、無人のリトライモードが「リセット前に解除された使用量上限」に気づけるようになった/usageの警告が1行の修正案になり、fキーで適用できるようになった
加えて、管理設定やプラグインまわりの挙動変更が3つあります。allowedMcpServers の適用範囲、Claude Desktopが取り込むプラグインの allowed-tools、/artifacts の削除確認キーです。
あなたの開発フローはどう変わるか
Linuxのsandboxの中でChromiumやPodmanを動かしたい
sandboxの中ではuser namespaceを作れず、ChromiumやrootlessのPodmanが起動できない場面がありました。sandbox.allowNestedUserNamespaces を有効にすると、sandbox内のコマンドがuser namespaceを作れます。
これを有効にすると、コマンドは「sandboxのファイル保護を回避できる」ようになります。キー名はドット区切りなので、sandbox の下に置きます。
{
"sandbox": {
"allowNestedUserNamespaces": true
}
}設定リファレンスとsandboxingのページには、このキーの項目がなく、既定値も示されていません。使うときは true を明示して書きます。
Docker内でsandboxが動かない場合は別の設定です。bwrap が /proc をマウントできない症状には、enableWeakerNestedSandboxとbwrapPathが対応します。unshare(CLONE_NEWUSER) の失敗そのものは原因の解説にあります。
VertexやBedrock、ゲートウェイ越しで全リクエストが落ちていた人
v2.1.304で入った回帰が直りました。エンドポイントやゲートウェイがツール検索を拒否する環境で、すべてのリクエストが失敗していました。ゲートウェイでToolSearchを禁止している場合や、--tools からToolSearchを外している場合も同じです。v2.1.305はツール検索なしで再試行します。
v2.1.304に上げてからゲートウェイ経由で何も返らなくなった場合は、v2.1.305に上げるのが対処です。前のリリースの内容はv2.1.304の記事にあります。
無人セッションで使用量上限を待っている人
CLAUDE_CODE_RETRY_WATCHDOG=1 の無人セッションは、使用量上限に当たるとリセットまで待ちます。待っている間に上限が解除されても、これまでは気づけませんでした。新しい環境変数は、その確認の最小間隔を決めます。
CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS の値
最小値
60000
1分
最大値
10800000
3時間
未設定または範囲外
確認なし
従来どおり待つ
環境変数のページによれば、確認の対象はclaude.aiサブスクリプションのセッション上限と週次上限だけです。usage creditsを使っている間と、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC を設定している間は確認しません。上限が解除されていれば、リクエストはすぐ送られます。
export CLAUDE_CODE_RETRY_WATCHDOG=1
export CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS=600000 # 10分ごとに確認
claude -p "未完了のタスクを続けて"待ち時間に天井を置く変数との違いは使用量上限待ちの打ち切り設定にあります。あちらは「待たずに終える」、こちらは「待ちながら解除を見に行く」設定で、役割が違います。
/usageの警告をそのまま直したい
/usage の警告は、出どころを名指しした1行の修正案になりました。フッターに f to fix 2 of 3 のような表示が出たら、f で適用できます。同じ修正案はVS Codeと /doctor にも出ます。
f が何をするかは行の形で決まります。
| 行の形 | 例 | f を押すと |
|---|---|---|
末尾が run なしの /effort コマンド | 例40% Switch from max to high effort · /effort high | f を押すとClaude Codeがコマンドを実行する |
末尾が run と別のコマンド | 例30% Compact before you step away · run /compact | f を押すと何も起きない。自分で実行する |
| それ以外 | 例25% Trim ~/code/api/CLAUDE.md · 49k tokens per request | f を押すと一部だけClaudeへの手順になる。変更は先に見せてくれる |
数字の読み方は、2 of 3 なら「適用できる行が2、表示が3」です。Remote Control接続中は f のヒントが出ません。/usage の全体像は見方と内訳の解説にあります。
effortや自動圧縮の設定が効いていなかった人
/effort と /autocompact の設定が、modelOverrides の値と大文字小文字が違う、または [1m] の有無が違うモデル名のときに適用されない不具合が直りました。modelOverrides に別名でモデルを割り当てている人が対象です。
主な変更点
設定・環境変数・管理者向けの変更
| 変更 | 内容 |
|---|---|
| 追加 | 内容sandbox.allowNestedUserNamespaces(上記) |
| 追加 | 内容CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS(上記) |
| 変更 | 内容allowedMcpServers が、env にだけ ${VAR} を使う managed-mcp.json のstdioサーバーを絞らなくなった |
| 変更 | 内容Claude Desktopがパスでマウントするプラグインは、管理設定の allowManagedPermissionRulesOnly が有効だと allowed-tools を保持しない |
| 変更 | 内容/artifacts の削除確認は1 / Enterで残す、2で削除、Escで取り消し。y と n は効かない |
| 変更 | 内容modのドッキングしたペインは、広い端末で決めた幅も含め、端末幅の45%以内に収まる |
allowedMcpServers の変更は、読み込まれるサーバーが増える向きです。許可リストに載っていないために止まっていた managed-mcp.json のサーバーのうち、${VAR} を env にだけ使うstdioのものが、アップグレード後に読み込まれます。止めたいなら deniedMcpServers を使います。
許可リストに載せないことでこれらのサーバーを止めていた環境では、v2.1.305からは deniedMcpServers に載せない限り読み込まれます。v2.1.304までは、${VAR} を env に使うサーバーも許可リストで確認されていました。仕組みはManaged MCPの許可リスト解説にあります。
修正
- Bashコマンドがディスクフルで失敗したとき、生の
ENOSPCのファイルパスではなく、ディスクが満杯であることとコマンドが実行されていないことを伝えるようになりました - bareリポジトリの新しいworktreeは、既定ブランチから始まります。以前はローカルのHEADから始まることがありました。変更のないサブエージェントのworktreeも、片付くようになりました
- クラウドセッションやSDKの
setMcpServersで渡したMCPサーバーが、あとから同名の自分の設定のサーバーに置き換わることはなくなりました - サブエージェントがフォールバックモデルに切り替わったあとも、Claudeは作業したモデルを取り違えません
- 圧縮の要約に収めるため古いメッセージを省いたことを、クラウドセッションとチームメイトがClaudeに伝えるようになりました
- スケジュール実行のCowork cloudセッションで、承認する人がいないWebFetchのURL承認をサブエージェントごとに5分待つ不具合が、さらに別の経路でも直りました(v2.1.304に続く修正)
- Workflowの再開では、完了済みの
pipeline()とparallel()のエージェントを再実行せず、実行の記録から返すようになりました - Remote Controlで
/resumeにより会話を切り替えても、/resumeに空の「(session)」は残りません - 狭い端末でも
/usageの行が切れなくなりました - Remote Controlのspawn-modeのメッセージが改善されました。
wを押すと新しいモードがそのフォルダ用に保存されると表示され、保存済みのモードで後からclaude remote-controlを起動すると、そのモードの由来が表示されます
表示・アクセシビリティ
起動時の警告は、ロゴの上に生の文字列で出なくなりました。デバッグログへ出力され、何も制限しない権限ルールは、バナー下の警告行として表示されます。
スクリーンリーダーのモードでは、検索ボックスの記号をVoiceOverが「telephone recorder」と読み上げていた点が、「Search:」に変わりました。Ctrl+Rの検索の一致部分や「ultrathink」のような強調表示が、単語の途中に空白を挟んで読まれる問題も直っています。
MCPの同意ダイアログは、プロンプト向けのEnterがAcceptとして受け取られにくくなりました。iTerm2 3.5以降の全画面レンダリングでは、modの Image が alt の文字だけでなく画像を描くようになりました。
Self-hosted runnerの修正
TERMを設定した環境で、標準出力だけをrunnerやオーケストレーターと共有する起動スクリプトがResource temporarily unavailableで失敗していました(v2.1.300の回帰)。この失敗は起きなくなりましたGIT_CONFIG経由で設定を読むgit credential helperやaskpassを使っても、リポジトリへ入れます。v2.1.296以降は入れなくなっていました- バックグラウンドで起動したrunnerが出力を開いたままでも、オーケストレーターはspawn-runnerフックをタイムアウトと報告しません
VS Code・Cloud sessions・Claude Tag・Code Review
VS Code拡張では、SessionStartまたはSetupフックの実行中に「Running start-up hooks」というスピナーが出て、スクリーンリーダーにも通知されます。spinnerVerbs を短い語に置き換えると「Compacting...」が切れる不具合も直りました。セッションが時間内に開始せず、フックも走っていないときのメッセージは、サインインやネットワークより先に出力ログを案内する形になりました。
Cloud sessionsでは、環境の管理ページが既存の環境の保存を「パッケージのインストール」エラーで拒否する不具合が直り、セルフホスト環境の削除ダイアログは何が削除を妨げ、何に影響するかを示します。
Claude Tagの変更は3つです。
- Claudeが未参加の公開Slackチャンネルを、管理画面のAdd place検索に出せるようになった。別のGitHubアカウントへ移ったリポジトリも、アクセスバンドルへ再び追加できる
- Slack DMスレッドで設定したルーティンの投稿が止まる問題と、会話終了後に成功と報告しながら投稿しない問題が直った。後者は今後、スキップして作成者に通知する
- 大規模な組織の管理ページでは、チャンネル一覧の読み込み中でもプラグイン・スキル・バンドルの編集ができる
Code Reviewでは、レビュー中に複数のpushがあっても最新のコミットを見るようになり、再レビューは、前回のブロッキングな指摘が未解決のままLGTMで始まらなくなりました。
sandbox.allowNestedUserNamespacesはsandboxの防御をどこまで緩めるか
この設定は、enableWeakerNestedSandbox と同じ系統の「sandboxを弱めて動かす」選択肢です。ただし対象が違います。enableWeakerNestedSandbox は、権限のないコンテナで bwrap が /proc をマウントできないときに、コンテナ側の /proc を使って動かす設定です。allowNestedUserNamespaces は、sandbox内のコマンド自身が新しいuser namespaceを作れるようにする設定です。
ChromiumやrootlessのPodmanをsandboxの中で動かす場面には、E2Eテストでヘッドレスブラウザを使う場合などが該当します。
ファイル保護の回避と引き換えに得られるのは、ブラウザやrootlessコンテナの起動です。どちらも要らない環境では、無効のままで問題ありません。
まとめ
v2.1.304でゲートウェイ越しのリクエストがすべて失敗していた環境は、v2.1.305で元に戻ります。それ以外の人は、無人セッションを回しているか、Linuxのsandboxでブラウザやコンテナを動かしているか、managed-mcp.jsonを運用しているか、の3点で効き方が分かれます。allowNestedUserNamespaces を有効にするかどうかは、保護の薄さを引き受けてでも動かしたいものがあるかで決まります。
関連ガイド
このバージョン単体の位置づけや前後の版とのつながりは、Claude Codeの基礎ガイドでまとめて確認できます。