メインコンテンツへスキップ

Claude Code v2.1.309:sandboxと権限チェックの強化

Claude Code v2.1.309は、sandbox、Bashの権限チェック、worktreeの分離の不備を修正し、sed -iを標準のBash確認に変え、claude ultrareviewにワークスペースの信頼を求めます。スクリプトで使う場合は要確認です。

Claude Code v2.1.309の変更履歴は79項目で、修正62件、改善8件、挙動変更6件、更新2件、追加1件です。まず読むべきは、sandbox、BashとPowerShellの権限チェック、hook、worktreeの分離が一部のケースで守られていなかった問題の修正です。6件の挙動変更は、スクリプトや無人実行のセッションが前提にしている動作に関わります。sed -i の確認のされ方や、claude ultrareview に加わったワークスペースの信頼(workspace trust)の要件などです。また、Claudeがロール名やプレースホルダーをGitHubのメンションとして書き、無関係なユーザーに通知してしまう問題も直りました。Claudeが実行する内容をsandboxや権限ルールで制限しているなら、更新してください。

sandboxと権限の強化

このセクションの項目はすべてv2.1.309自体での修正なので、更新すれば適用されます。権限モード、ルール、sandboxの組み合わせ方については パーミッションモデルとセキュリティ を参照してください。

sandbox

  • シェルの起動ファイルがsandboxの外で実行されていました。 macOSとLinuxで、sandbox化されたBashコマンドが、各コマンドの前にシェルの起動ファイルをsandboxの外で実行していました。
  • シンボリックリンク経由の denyWrite glob(macOS)。 パターンのフォルダーにシンボリックリンク経由で到達する場合、sandboxの denyWrite globパターンがパスの実際の場所に適用されていませんでした。
  • --mcp-config のファイル。 sandbox化されたコマンドや自動承認された編集が、--mcp-config で渡したMCP設定ファイルを変更できていました。
  • セッション後の書き込み拒否(Linux)。 バックグラウンドコマンドがセッションより長く動き続けると、sandboxの書き込み拒否が解除されていました。

BashとPowerShellの権限チェック

  • 失敗しうるリダイレクトを伴う変数。 Bashの権限チェックが、リダイレクト先を開けずに失敗する可能性のあるコマンドで設定された変数を信頼していました。
  • ラップまたは前置された cd の後のgit。 ディレクトリを移動してからgitを実行する複合コマンドの一部で、cd がラップまたは前置されていると確認が出ませんでした。現在は単純な cd の場合と同じように確認が出ます。
  • Edit(path) のdenyルールとリダイレクト。 subshellも含む一部のコマンドで、Edit(path) のdenyルールが、そのパスへのBashリダイレクトをブロックしていませんでした。
  • PowerShellの Set-Location と cd(Windows)。 PowerShellの権限チェックが、カレントディレクトリを対象とし、余分な引数を持つ一部の Set-Location や cd コマンドを自動承認していました。現在は承認を求めます。

worktreeの分離、hook、その他のガード

  • worktreeの分離ガード。 worktreeで分離されたセッションが、分離ガード(isolation guard)が拒否すべき一部のlocaleを前置したコマンドや、zshでの一部の算術コマンドを受け付けていました。
  • profile storeの書き込み保護。 設定ディレクトリにシンボリックリンク経由で到達する場合、この保護が適用されていませんでした。
  • PowerShellのhook。 PowerShellで実行されるhookが、hookのプログラムが終了コード2で終了してもブロックしていませんでした。またWindowsでは、Git for Windowsがインストールされていないと、"shell": "powershell" を指定した PreToolUse と PermissionRequest のhookがfail open(そのまま通過)していました。v2.1.310 では、Git Bashがなく、hookのコマンドが引用符付きの文字列だけの場合にhookがツール呼び出しを通してしまう、関連するWindowsのケースも修正されています。
  • agent teammate。 split-paneのagent teammateが、leaderのコマンドラインで指定されたツールのdenyルールと --tools ルールを引き継いでいませんでした。
  • 無効化したMCPサーバー。 print(-p)とSDKのセッションで、後から出た権限プロンプトによって、無効化されたMCPサーバーが再接続されることがありました。

注意すべき挙動の変更

次の6件は、スクリプト、設定、無人実行のセッションが前提とする動作を変えます。

  • sed -i は標準のBashの確認を受けるようになりました。 シミュレーションによるファイル編集のプレビューは表示されず、書かれたとおりに実行されます。他のBashによる編集と同様に、/rewind では元に戻らなくなりました。
  • claude ultrareview はワークスペースの信頼が必要になりました。 ターミナル上では確認し、それ以外では拒否します。スクリプトでは、PR番号またはbaseブランチの後に --trust-workspace(値を取りません)を付けるか、CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK=1 を設定します。
# PR番号またはbaseブランチを先に書く。--trust-workspace は値を取らない
claude ultrareview 1234 --trust-workspace

# または環境変数で信頼チェックを無効にする
CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK=1 claude ultrareview 1234
  • bypass permissionsモードでの危険な rm と rmdir。 デスクトップアプリとVS Codeのbypass permissionsモードで、これまで確認が出ていた危険な rm・rmdir コマンドは、書き換えのヒント付きで即座に拒否されるようになりました。これにより、無人実行のセッションが止まらずに進みます。
  • sandboxが動かないときの、sandbox対象外のコマンド。 sandboxが有効なのに実行できない状況では、設定でsandboxから除外されたコマンドが、sandboxの書き込みリスト(write-list)にあるパスへ書き込む前に確認するようになりました。その状況では、sandboxなしでのフォールバックは拒否されます。
  • worktreeの作成時にオブジェクトをオンデマンド取得しなくなりました。 Claude Codeがworktreeを作成・再利用するとき、通常のcloneでも、Bash sandboxを設定したpartial cloneでも、gitはオブジェクトをオンデマンドで取得しなくなりました。そうしたpartial cloneでは、先にオブジェクトを取得します。
  • /claude-api は multiagent_20261001 でManaged Agentsのチームを構築します。 このskillは、Managed Agentsのsubagentチームを coordinator ではなく multiagent_20261001 で構築し、dynamic workflowsをデフォルトで有効にするようになりました。

ロール名がGitHubのメンションにならなくなりました

Claudeが、PR、issue、コメントの中でロール名やプレースホルダーをメンションとして書き、無関係なGitHubユーザーに通知してしまうことがありました。この問題は修正されています。GitHubでの記述やコメントをClaudeに任せているなら、押さえておきたい修正です。

セッション、context、ターミナル入力

  • 巨大なネストされたCLAUDE.md。 非常に大きなネストされたCLAUDE.mdの配下にあるファイルを読んだ後、セッションがコンパクションを繰り返していました。サイズ上限を超えるネストされたCLAUDE.mdは、先頭部分だけが読み込まれるようになりました。
  • /rewind。 /code-review --fix、subagent、シェルコマンドによってチェックポイント対象のファイルを変更したターンについて、一覧に「No code changes」と表示されていました。
  • /rename。 /rename で名前を変えたセッションが、VS Codeのウィンドウの再読み込みや非対話の --resume の後、他のセッションからは自動生成の名前で見えていました。
  • トランスクリプトと jq。 長いツール出力のプレビューが絵文字の途中で切られ、jq で解析できないセッションのトランスクリプトが残っていました。
  • ctrl+enter(今すぐ送信)。 応答の開始前に押すとメッセージがキューに入るだけで、プロンプトのhookの実行中に押すとそのhookが再起動され、メッセージはキューに残ったままでした。
  • ctrl+o。 他のエージェントやセッションからの、まだ配信待ちのメッセージが表示されていませんでした。現在はトランスクリプトの下に全文が表示され、待機中であることが示されます。
  • ! モード。 キーに割り当てたスラッシュコマンドが、! モードからシェルで実行されていました。

skill、プラグイン、mod、artifact

  • --add-dir フォルダー内の同名skill。 別のskillがすでに同じ名前を使っていると、--add-dir フォルダー内のskillに到達できませんでした。現在は <folder>:<name> として提示されます。
  • ネストされたパッケージのskill。 ネストされたパッケージのファイルをシェルから変更した場合に、/verify と /code-review がそのパッケージ自身のskillを見つけられませんでした。
  • claude.aiから同期したプラグインとskill が、ディスクの読み取りエラーの後に削除され、セッションの途中で消えることもありました。
  • mod。 modの turn.step hookが haiku のようなエイリアスでモデルを指定すると、すべてのリクエストがモデルエラーで失敗していました。現在はエイリアスが対応するモデルに解決されます。また、hooksモジュールのネストが深すぎて読み込めない場合、単なるスタックオーバーフローのメッセージではなく、ファイル名を示すエラーが出るようになりました。
  • artifact。 特定のminifyされたスクリプトを含むページや、Claudeが先に読めなかったartifactなど、一部のごく普通のページで公開や更新が拒否されていました。また、あるターンの中で会話がコンパクションされると、そのターンの残りでは、artifactを更新するたびにClaudeが許可を求めていました。
  • バンドルされたdataviz skill は、テキストのコントラストの指標としてAPCAを受け付け(AA準拠が必要な場面ではWCAG 2の比率を維持)、パレット検証スクリプトに apca(text, background) 関数を追加し、色付きのグラフの塗りの中のラベルを白にすべきか黒に近い色にすべきかを示すようになりました。

/claude-api skill

前述の multiagent_20261001 への変更に加えて、バンドルされた /claude-api skillには修正3件、改善2件、更新1件があり、ほとんどがトレーシングに関するものです。

  • ant beta:worker poll --on-work がトレースコンテキストをコマンドに渡す、とは言わなくなりました。
  • C#のトレーシング設定で、クラウドプラットフォームのクライアントからのspanが欠けなくなりました。
  • Claude Platform on AWSへのリクエストのAPI spanは呼び出し元のトレースに参加できない、とは言わなくなりました。
  • OpenTelemetryの追加を頼まれたとき、SDKのトレーシングとあわせてAPIのトレーシングも提案するようになりました。
  • 機能が未対応だと言う前に、最新のドキュメントを確認するようになりました。
  • 更新:service account keyとWorkload Identity Federationのトークンで、OpenTelemetryの送信先を管理できるようになりました。

デスクトップ、Remote Control、フィードバック

  • Claude Desktopがホストするセッションで、接続が更新されたときにメッセージが失われることがありました。
  • ClaudeデスクトップアプリのClaude Codeセッションで、同じコンピューターのターミナルが別のアカウントや組織でサインインしていると、一部の機能が欠けていました。
  • claude remote-control のステータスラインが、gitリポジトリにないフォルダーで、ブランチを HEAD と表示していました。
  • /privacy-settings が古い「Help improve our AI models」の値を表示していました。現在は、設定を取得できない場合もその旨を示します。
  • フィードバック。 組織がフィードバックを受け付けていない場合に「try again later」と表示されていましたが、現在はサーバーからの理由と、バグの報告先を表示します。サイズが大きすぎる /feedback のレポートは、失敗する代わりにトランスクリプトを除いて再送されるようになりました。

git、プロバイダー、プラットフォーム

  • git replace refs。 Claude Codeが作成するworktreeとブランチのチェックアウトが、他のgit操作と同様にgit replace refsを無視するようになりました。
  • Windowsでのgit。 Claude Codeが自身のために実行する多くのgitコマンドが、Windowsで速くなりました。また全プラットフォームで、gitが別の言語に設定されていても、これらのコマンドのエラーは英語で表示されるようになりました。
  • Amazon Bedrock。 ANTHROPIC_BEDROCK_BASE_URL をデフォルトの bedrock-runtime.<region>.amazonaws.com エンドポイントに設定していると、fine-grained tool streamingが無効のままでした。
  • gateway。 keepaliveのpingだけを送るgatewayの背後で、「Waiting for API response」のヒントがちらついていました。Anthropicのバックエンドを通らない経路では、45秒待つようになりました。
  • ディスクの空き不足。 ディスクがいっぱいで中断されたBashコマンドはその旨を伝え、空きを作るべきフォルダーを示すようになりました。いっぱいの一時ボリュームで起動したときも、生のENOSPCエラーではなく分かりやすいメッセージを表示します。
  • macOS。 XcodeやCommand Line ToolsのないMacで、Claude Codeを起動するたびに「Install Command Line Developer Tools」ダイアログが開くことがなくなりました。
  • Linuxのsandbox。 親プロセスと /proc を共有するLinuxのsandboxで、ReadがPDFのページ範囲に対して「File does not exist」を返していました。

セルフホストrunner、クラウドセッション、Claude Tag、Code Review

  • セルフホストrunner。 最初のプロンプト(/code-review など)がまだsubagentで処理中のセッションを、--startup-timeout-min が停止しなくなりました。フリーズしたプロセスは引き続き停止されます。セッションが新しいrunnerへ移ったときは、中断されたツール呼び出しが、結果不明としてClaudeに示されるようになりました。
  • クラウドセッション。 セッションのChangesペインは、プッシュ済みのコミットだけ、またはClaudeの編集だけを表示している場合に、その旨を示すようになりました。クラウド環境のエディターは、環境変数を並べ替えたり、両方の種類の引用符を含む値にバックスラッシュを加えたりしなくなりました。routineフォームのAdd connectorの一覧は読み込み中に利用できるconnectorがないと表示しなくなり、「read documentation」ツールの行はエスケープされたJSONではなく読めるページを表示し、管理設定のセルフホスト環境の詳細ダイアログは、タイトル、タブ、ボタンを表示したまま内容だけをスクロールするようになりました。
  • Claude Tag。 Slack上のClaudeが、チャンネル向けに承認した下書きを誤ってDMに投稿することがなくなりました。チャンネルの指定がない投稿は拒否され、承認したチャンネルへ投稿できるようになります。セッションが停止していると、SlackのClaudeの承認カードのAllowとDenyが何もしませんでしたが、現在は回答によってセッションが再開します。workspaceが別のClaude組織へ移った後に、チャンネル内のタグなしのメッセージ(Enterprise Gridの共有されていないチャンネルを含む)をClaudeが無視することがなくなり、誰かがスレッドに追加したばかりの新しいメッセージを読む前にスレッドへ返信することもなくなりました。Claude Tagの管理設定のSlackページは、一覧の読み込みに失敗したときに接続済みのworkspaceがないと表示せず、Retryボタン付きのエラーを表示します。
  • Code Review。 チェックの作成が以前の試行で失敗していると、完了したレビューのチェックがpull requestに表示されませんでした。現在は最後の試行で完了済みのチェックが追加されます。また、実行中のレビューの後ろに並んでいたpushが、@claude review stop の後もレビューを開始していましたが、現在はそのチェックが閉じられ、理由が示されます。

VS Code

  • 空白のClaudeパネル。 エディターがパネルのファイルの不完全なコピーをキャッシュすると、パネルが空白のままでした。現在は自動で回復するか、何が問題でどう直せばよいかを示します。
  • 証明書エラー。 ディクテーションや拡張自身のリクエストが証明書の検証に失敗したとき(TLS検査プロキシの背後など)に、対処方法を示すログの警告が追加されました。
  • EditとWriteの高速化。 チャットパネルで、編集のたびに新しいproblemsを待つ時間が、ほとんどの場合で1〜1.5秒から0.75秒になりました。
  • Session history に、メッセージを送らずに新しいセッションを始めるたびに空の「Untitled」セッションがたまることがなくなりました。
  • 長いメッセージ。 /goal のような長いスラッシュコマンドのメッセージは、他のプロンプトと同様にShow moreの後ろに折りたたまれるようになり、チャットパネルを狭くした後も、長いメッセージが折りたたまれます。
  • Ctrl+J はチャット入力で常に改行を挿入していましたが、~/.claude/keybindings.json のChatコンテキストで "ctrl+j" を null にすると、VS CodeとOSに任されるようになりました。
  • modのラベル。 プロンプトの上に出るmodの「From the … plugin」ラベルが、スラッシュコマンドや@メンションのメニューに重なって描画されなくなりました。
  • コピーしたLaTeX数式の貼り付けで、空のリスト項目・段落・コードブロックができたり、リスト項目が1から振り直されたりしなくなりました。
  • フィードバックのエラーは、組織がフィードバックを受け付けていない場合に、HTTPステータスだけを表示することがなくなりました。

79項目すべてを上にまとめています。各項目の原文は 公式の変更履歴 で確認できます。

アップデート方法

  1. インストール済みのバージョンを確認:claude --version
  2. その場でアップデート:claude update
  3. スクリプトで claude ultrareview を実行している場合は、PR番号またはbaseブランチの後に --trust-workspace を付けるか、CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK=1 を設定してください。そうしないと、ターミナルがない環境では実行が拒否されます。

リンク