Claude Code セキュリティ:依存関係のインストールだけに通信を許可する
Claude Code 2.1.271では、サンドボックスの自動モードでネットワーク許可をコマンド単位に限定できます。依存関係のインストール時だけレジストリを開き、その後のビルドやテストへ通信権限を引き継がせない設定方法、適用範囲、永続許可との違い、見落としやすい制約を実務目線で解説します。

Claude Code セキュリティの運用では、依存関係のインストール1回のためだけに、Claude Codeのジョブ全体へネットワーク境界を広げる必要がなくなりました。2026年9月14日、Claude Code 2.1.271は、サンドボックス化された自動モードにコマンド単位のネットワークアクセスを追加しました。インストール時に許可したレジストリホストは、そのコマンドが終われば再び閉じられます。
Claude Code セキュリティで実際に変わったこと
この仕組みには2つの異なる安全レイヤーがあります。今回の変更を理解するには、両者を分けて考える必要があります。
自動モードが判断するのは、ツール呼び出しを実行してよいかどうかです。 別の分類器が、依頼内容に照らしてアクションを審査します。全体的な権限モデルについては、以前のClaude Code自動モード解説で詳しく取り上げています。
サンドボックスが制御するのは、実行中のシェルコマンドが触れられる範囲です。 ファイルへの書き込みを制限し、ネットワーク通信をプロキシ経由にして接続先ホストを確認します。
バージョン2.1.271では、この2つのレイヤーがより密接に連携します。サンドボックス化された自動モードで、Bash、PowerShell、Monitorの呼び出しにallowed_domainsリストを付けられるようになりました。Claude Codeはコマンドと、その実行に必要なホストをまとめて審査します。許可されたホストが開くのはそのコマンドの間だけで、ほかのホストへの接続はサンドボックスが拒否します。リリースノートにも、この適用範囲が明記されています。
このsnake_case形式のフィールドは、settings.jsonのsandbox.network.allowedDomainsとは別物です。
このリリース以前は、新しいサンドボックスホストを承認すると、必要以上に広い権限が残る場合がありました。手動承認は現在のセッションが終わるまで有効で、保存すれば後のセッションにも残ります。自動モードがホストとポートに対する判断をキャッシュすることもあります。新しいフィールドが変えるのは、実行時に到達できる範囲です。分類器の判定が再利用されても、ネットワークの開放は現在のコマンドだけに属します。
対象はリリースで明示された組み合わせに限られます。自動モード、サンドボックス、そしてBash、PowerShell、Monitorです。手動セッション、サンドボックス外のコマンド、組み込みのファイルツール、ネットワークを一切使わないジョブには、この境界は追加されません。
重要なのは料金ではなく、権限の広さ
Claude Codeのシート料金は今回変更されていません。Anthropicも、コマンド単位のドメイン許可について別料金、別SKU、性能結果を発表していません。
見るべきなのは、説明責任を負う認可範囲の大きさです。
standing grant = approved host × every later command that can reuse it
command-scoped grant = approved host × the reviewed command
registry.npmjs.orgへの接続が必要な依存関係インストールを例にします。従来の運用では、無人ジョブを止めてネットワーク利用を判断するか、レジストリを事前許可して以降のすべてのサンドボックス化コマンドから到達できる状態を受け入れるか、悩ましい選択になりがちでした。これからは、インストールと同時に自動モードがそのホストを承認し、ビルド、テスト、パッケージ化、レビューへ進む前に閉じられます。
サブスクリプションの請求額は変わりませんが、2つの運用コストには効きます。プラットフォームチームが設計し、後から片付ける常設例外が減ります。セキュリティレビューでも、ホストが残りのジョブ全体で利用可能だとみなすのではなく、コマンドとホストの組み合わせを評価できます。
ただし、審査処理には依然としてコンピュートコストがかかります。Anthropicの権限モード資料に記載されたEnterpriseおよび従量課金のプロバイダーアカウントでは、分類器による確認がトークン使用量に計上され、1往復分の処理も加わります。リリースには所要時間のベンチマークがなく、本稿でも時間計測を行っていません。そのため、何秒短縮できるとは正直に主張できません。

すぐに活用できるのは誰か
一人で長時間のビルドジョブを回す創業者
SaaSリポジトリのパッケージをClaude Codeにロックファイルどおり復元させた後も、公開レジストリを開いたままにせず、テストとコードレビューまで進められます。必要なダウンロード1回のためにセッション全体へ常設の外向き通信を許すことなく、ジョブを止めずに進行できる点がメリットです。
複数の顧客リポジトリを切り替える開発会社の技術責任者
顧客のパッケージホストを、必要なインストールだけにひも付けられます。プロジェクト単位の例外を新たに保存する必要はありません。権限の後片付けが減るだけでなく、依存関係の取得専用に開けたホストへ、次の工程のコマンドが顧客コードを送ってしまうリスクも抑えられます。
無人エージェントを管理するプラットフォーム/セキュリティ責任者
組織全体の拒否ルールと管理対象ドメインの制約を維持しながら、日常的なコマンドには、そのポリシー内でより狭いアクセスを要求させられます。審査記録も説明しやすくなります。「このアクションのために、このコマンドがこのホストを必要とした」と示せるからです。ただし、その後にエージェントが実行したすべての処理に対して、同じホストが安全だった証明にはなりません。
インストールとテストを分離するビルドエンジニア
パッケージ復元をネットワーク接続ありの工程、テストスイートをオフライン工程として切り分けられます。侵害されたテストや想定外のスクリプトがインストール後にレジストリへ接続しようとしても、別の常設ルールで許可されていない限り、先ほどのコマンドに与えた開放状態は引き継がれません。
依存関係のインストールを必要最小限に設定する
この変更を最も分かりやすく確認できるのは、package-lock.jsonがコミットされ、既知の1つのレジストリから依存関係を解決するリポジトリです。npmは、クリーンな自動インストール向けにnpm ciを案内しています。ロックファイルが必須で、ロックとマニフェストが一致しなければ失敗し、既存のnode_modulesを削除し、マニフェストとロックファイルは変更しません。--ignore-scriptsオプションを付ければ、インストール中のパッケージライフサイクルスクリプトも止められます。これらの動作はnpmのドキュメントに記載されています。
Claude Codeのバージョンを確認する
変更履歴に記載されたバージョン確認コマンドを実行します。
Bashclaude --version2.1.271、またはこの機能を含むそれ以降のビルドを使用します。
フェイルクローズのサンドボックスで自動モードを起動する
1つのセッションに限り、自動モードと、起動に成功することが必須で、ブロックされたコマンドを境界外で再試行できないサンドボックスを組み合わせます。
Bashclaude --permission-mode auto --settings '{"sandbox":{"enabled":true,"failIfUnavailable":true,"allowUnsandboxedCommands":false}}'ここでは、ドキュメントに記載された
--permission-mode、--settings、failIfUnavailable、allowUnsandboxedCommandsを使用しています。macOSではサンドボックスが組み込まれています。LinuxとWSL2ではbubblewrapとsocatが必要で、ネイティブWindowsは組み込みサンドボックスの対象外です。セットアップ方法と対応プラットフォームの制約はサンドボックスガイドに記載されています。インストールの役割を狭く指定する
次の内容をタスクとして送信します。ロックファイルがプライベートレジストリを使っている場合は、レジストリホストを置き換えてください。
package-lock.jsonに記録された依存関係だけを、npm ci --ignore-scriptsでインストールしてください。このコマンドが接続できるのはregistry.npmjs.orgだけです。このホストをプロジェクト設定またはユーザー設定に保存しないでください。インストールの完了後、ネットワークアクセスなしの別コマンドとしてテストスイートを実行してください。インストールにほかのホストが必要なら停止してください。allowed_domainsフィールドを自分で入力する必要はありません。Claude Codeがシェルツール呼び出しを組み立て、自動モードがその呼び出しと要求されたホストをまとめて審査します。次の工程が閉じた状態で始まることを確認する
/sandboxを開いて、解決済み設定のConfigタブを確認します。registry.npmjs.orgが常設のallowedDomainsや保存済みのWebFetchルールに含まれていないことを確かめてから、別コマンドとしてテストを実行してください。この後続コマンドがネットワーク接続を試みた場合、専用の審査済みドメインセットが新たに必要になるか、既存ポリシーによって拒否されるはずです。
見落としやすいのがロックファイルです。パッケージロックには、プライベートレジストリ、Gitホスト、あるいはtarballの直接URLが記録されている場合があります。registry.npmjs.orgだけを指定しても、それらの依存関係が同じホストから取得できるようになるわけではありません。実際の解決先ホストを確認してリストを正確に絞り込み、想定外の接続先をロックが要求したらコマンドを停止させます。
コマンド単位のネットワークアクセスでも解決できないこと
コマンド単位のネットワークアクセスが狭めるのは、ホストへ到達できる時間です。そのホストの信頼性を証明したり、暗号化されたリクエストをすべて検査したり、ダウンロードしたコードを安全にしたりする機能ではありません。
Anthropicの組み込みプロキシはホスト名で通信をフィルタリングし、デフォルトではTLSの内容を検査しません。許可されたコマンドの実行中は、そのホスト上の許可されたすべてのパスへプロセスが接続できます。コマンドが起動した子プロセスにも同じサンドボックス境界が適用されます。そのため、npm ci --ignore-scriptsは教材として分かりやすい例です。インストール工程からパッケージのライフサイクルスクリプトは取り除けますが、ダウンロードするパッケージ自体を監査するわけではありません。
管理ポリシーは引き続き、この機能より上位にあります。strictAllowlistは設定済みリスト外のすべてを拒否でき、allowManagedDomainsOnlyは接続可能なホストを管理設定に限定できます。明示的な拒否ルールもそのまま優先されます。コマンド単位のドメイン許可で、これらの制御をすり抜けることはできません。
サンドボックス外での再試行も、現実的な境界条件です。通常のClaude Codeには、サンドボックスで実行できないコマンドのためのエスケープハッチがあります。allowUnsandboxedCommandsをfalseにする意味は、失敗したインストールがいつの間にか「このコマンドはどのホストへ接続してよいか」ではなく、「このコマンドをサンドボックス外で実行してよいか」という別の問いに変わるのを防ぐことです。
次の月曜日に試すこと
依存関係の更新、夜間メンテナンス、無人ビルドジョブでClaude Codeの自動モードを使い、現在パッケージレジストリを広いサンドボックス許可リストに入れているなら、今週中に対応する価値があります。今回の機能を使えば、そうした常設エントリを削除できるか検証できます。
一方、組織の管理対象ネットワークポリシーで、すべてのコマンドに対して意図的にレジストリを事前許可している場合は急ぐ必要がありません。外側のコンテナやCIランナーですでにプロセス単位の厳しい外向き通信制御を実施している場合も同様です。新しいフィールドは多層防御にはなりますが、運用中の境界に置き換わるものではありません。
サンドボックスと自動モードを組み合わせていない場合や、Bash、PowerShell、Monitorからネットワークを使う作業がない場合は、今回の変更による影響はありません。
月曜日に行う作業は小さなものです。Claude Code 2.1.271以降であることを確認し、ロック済みの依存関係インストールを1つ選びます。フェイルクローズのサンドボックスで自動モードを起動し、想定するレジストリホストだけを指定したうえで、次のテストコマンドがそのネットワーク経路を再利用できないことを確かめてください。常設のレジストリ例外を削除するのは、自分の環境でこの確認に合格してからです。
次のプラットフォーム変更が実際のワークフローをどう変えるのか知りたい方は、ニュースレターにご登録ください。
- 最終更新
- 2026年9月15日
- カテゴリー
- Explained







