Claude Code セキュリティ:依存関係のインストールだけに通信を許可する

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

Tuesday, September 15, 2026Omid Saffari
Claude Code セキュリティ:依存関係のインストールだけに通信を許可する

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.jsonsandbox.network.allowedDomainsとは別物です。

制御方法有効期間後続コマンドへの影響
コマンド単位のallowed_domains審査対象となった1回のBash、PowerShell、Monitor呼び出しアクセス権は引き継がれません。後続コマンドでは、必要なホストを改めて審査します。
sandbox.network.allowedDomainsその設定が適用される間の、すべてのサンドボックス化コマンド指定ホストはすでに開いているため、後続コマンドからも到達できます。
保存されたWebFetch(domain:...)許可ルールそのルールを読み込む今後のセッションホストは一時的な例外ではなく、常設設定になります。
sandbox.network.deniedDomains条件に一致する、すべてのサンドボックス通信より広い許可ワイルドカードの内側でも、拒否が優先されます。

このリリース以前は、新しいサンドボックスホストを承認すると、必要以上に広い権限が残る場合がありました。手動承認は現在のセッションが終わるまで有効で、保存すれば後のセッションにも残ります。自動モードがホストとポートに対する判断をキャッシュすることもあります。新しいフィールドが変えるのは、実行時に到達できる範囲です。分類器の判定が再利用されても、ネットワークの開放は現在のコマンドだけに属します。

対象はリリースで明示された組み合わせに限られます。自動モード、サンドボックス、そして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のドキュメントに記載されています

  1. Claude Codeのバージョンを確認する

    変更履歴に記載されたバージョン確認コマンドを実行します。

    Bash
    claude --version

    2.1.271、またはこの機能を含むそれ以降のビルドを使用します。

  2. フェイルクローズのサンドボックスで自動モードを起動する

    1つのセッションに限り、自動モードと、起動に成功することが必須で、ブロックされたコマンドを境界外で再試行できないサンドボックスを組み合わせます。

    Bash
    claude --permission-mode auto --settings '{"sandbox":{"enabled":true,"failIfUnavailable":true,"allowUnsandboxedCommands":false}}'

    ここでは、ドキュメントに記載された--permission-mode--settingsfailIfUnavailableallowUnsandboxedCommandsを使用しています。macOSではサンドボックスが組み込まれています。LinuxとWSL2ではbubblewrapsocatが必要で、ネイティブWindowsは組み込みサンドボックスの対象外です。セットアップ方法と対応プラットフォームの制約はサンドボックスガイドに記載されています

  3. インストールの役割を狭く指定する

    次の内容をタスクとして送信します。ロックファイルがプライベートレジストリを使っている場合は、レジストリホストを置き換えてください。

    package-lock.jsonに記録された依存関係だけを、npm ci --ignore-scriptsでインストールしてください。このコマンドが接続できるのはregistry.npmjs.orgだけです。このホストをプロジェクト設定またはユーザー設定に保存しないでください。インストールの完了後、ネットワークアクセスなしの別コマンドとしてテストスイートを実行してください。インストールにほかのホストが必要なら停止してください。

    allowed_domainsフィールドを自分で入力する必要はありません。Claude Codeがシェルツール呼び出しを組み立て、自動モードがその呼び出しと要求されたホストをまとめて審査します。

  4. 次の工程が閉じた状態で始まることを確認する

    /sandboxを開いて、解決済み設定のConfigタブを確認します。registry.npmjs.orgが常設のallowedDomainsや保存済みのWebFetchルールに含まれていないことを確かめてから、別コマンドとしてテストを実行してください。この後続コマンドがネットワーク接続を試みた場合、専用の審査済みドメインセットが新たに必要になるか、既存ポリシーによって拒否されるはずです。

見落としやすいのがロックファイルです。パッケージロックには、プライベートレジストリ、Gitホスト、あるいはtarballの直接URLが記録されている場合があります。registry.npmjs.orgだけを指定しても、それらの依存関係が同じホストから取得できるようになるわけではありません。実際の解決先ホストを確認してリストを正確に絞り込み、想定外の接続先をロックが要求したらコマンドを停止させます。

コマンド単位のネットワークアクセスでも解決できないこと

コマンド単位のネットワークアクセスが狭めるのは、ホストへ到達できる時間です。そのホストの信頼性を証明したり、暗号化されたリクエストをすべて検査したり、ダウンロードしたコードを安全にしたりする機能ではありません。

Anthropicの組み込みプロキシはホスト名で通信をフィルタリングし、デフォルトではTLSの内容を検査しません。許可されたコマンドの実行中は、そのホスト上の許可されたすべてのパスへプロセスが接続できます。コマンドが起動した子プロセスにも同じサンドボックス境界が適用されます。そのため、npm ci --ignore-scriptsは教材として分かりやすい例です。インストール工程からパッケージのライフサイクルスクリプトは取り除けますが、ダウンロードするパッケージ自体を監査するわけではありません。

管理ポリシーは引き続き、この機能より上位にあります。strictAllowlistは設定済みリスト外のすべてを拒否でき、allowManagedDomainsOnlyは接続可能なホストを管理設定に限定できます。明示的な拒否ルールもそのまま優先されます。コマンド単位のドメイン許可で、これらの制御をすり抜けることはできません。

サンドボックス外での再試行も、現実的な境界条件です。通常のClaude Codeには、サンドボックスで実行できないコマンドのためのエスケープハッチがあります。allowUnsandboxedCommandsfalseにする意味は、失敗したインストールがいつの間にか「このコマンドはどのホストへ接続してよいか」ではなく、「このコマンドをサンドボックス外で実行してよいか」という別の問いに変わるのを防ぐことです。

次の月曜日に試すこと

依存関係の更新、夜間メンテナンス、無人ビルドジョブでClaude Codeの自動モードを使い、現在パッケージレジストリを広いサンドボックス許可リストに入れているなら、今週中に対応する価値があります。今回の機能を使えば、そうした常設エントリを削除できるか検証できます。

一方、組織の管理対象ネットワークポリシーで、すべてのコマンドに対して意図的にレジストリを事前許可している場合は急ぐ必要がありません。外側のコンテナやCIランナーですでにプロセス単位の厳しい外向き通信制御を実施している場合も同様です。新しいフィールドは多層防御にはなりますが、運用中の境界に置き換わるものではありません。

サンドボックスと自動モードを組み合わせていない場合や、Bash、PowerShell、Monitorからネットワークを使う作業がない場合は、今回の変更による影響はありません。

月曜日に行う作業は小さなものです。Claude Code 2.1.271以降であることを確認し、ロック済みの依存関係インストールを1つ選びます。フェイルクローズのサンドボックスで自動モードを起動し、想定するレジストリホストだけを指定したうえで、次のテストコマンドがそのネットワーク経路を再利用できないことを確かめてください。常設のレジストリ例外を削除するのは、自分の環境でこの確認に合格してからです。

次のプラットフォーム変更が実際のワークフローをどう変えるのか知りたい方は、ニュースレターにご登録ください

最終更新
2026年9月15日
カテゴリー
Explained

Googleでこのサイトを優先する

omidsaffari.comをGoogle検索の優先ソースに追加

omidsaffari.comを優先ソースに設定すると、GoogleがTop Stories・AI Overviews・AI Modeであなたのために優先表示します。

Vercel AI SDKの料金設計:既存サブスクリプションでエージェント費用を抑える

Vercel AI SDKの料金設計:既存サブスクリプションでエージェント費用を抑える

Vercel AI SDKがClaude CodeやCodexなどの既存サブスクリプションを使う仕組みを解説。認証情報の優先順位、プラン利用枠とAPI・AI Gatewayの請求先、Vercel Sandboxに残る実行コストまで、どの経路が誰に向くかを実例と設定手順で整理します。2026年9月15日Explained
Cloudflare Browser Runの新機能:ブラウザ自動化を承認済みホストに限定

Cloudflare Browser Runの新機能:ブラウザ自動化を承認済みホストに限定

Cloudflare Browser Runの新しいセッションガードレールと読み取り専用Live Viewを解説します。ブラウザ自動化の通信先を承認済みホストに限定し、クライアントに操作権を渡さずレビューしてもらう設計から、実装手順、料金への影響、許可リスト運用の落とし穴まで実務目線で整理します。2026年9月14日Explained
AIコールセンターの費用はどう変わる?GPT-Live-1を実例で試算

AIコールセンターの費用はどう変わる?GPT-Live-1を実例で試算

GPT-Live-1の音声セッションは1分$0.05。ただしAIコールセンターの実コストには、バックエンド推論、ツール、電話回線も含まれます。90秒の予約電話を例に、解決済み通話1件あたりの費用、SIP構成、割り込み対応、バックエンド選定、導入判断の測り方まで具体的に整理します。2026年9月14日Explained
ChatGPT デスクトップアプリのAppshots活用法:Windowsの情報共有を効率化

ChatGPT デスクトップアプリのAppshots活用法:Windowsの情報共有を効率化

ChatGPT デスクトップアプリのAppshotsをWindowsで使い、最前面のウィンドウをチャットへ渡す手順を解説します。画像と利用可能なテキストの範囲、送信先の設定、クライアントメールやエラー調査での使い方、共有前に確認すべきプライバシー上の注意点まで、実務目線で整理します。2026年9月14日Explained
Vercel CDNでFastAPIの静的ファイル配信を効率化する

Vercel CDNでFastAPIの静的ファイル配信を効率化する

Vercel CDNがFastAPIのapp.frontend()とStaticFilesを直接配信し、Function呼び出し、CPU、オリジン転送を減らす仕組みを解説します。料金への影響、ルート順序、ミドルウェア、依存関係の注意点を押さえ、公開ファイルと保護ファイルを分けて安全に検証する手順まで整理しました。2026年9月13日Explained
OpenAI APIキーの有効期限に備える、安全なローテーション設計

OpenAI APIキーの有効期限に備える、安全なローテーション設計

OpenAIのプロジェクトAPIキーに有効期限を設定できるようになりました。期限切れによる定期ジョブの停止を防ぐため、担当者の決め方、交換時期、シークレットストアへの反映、実環境での検証、旧キーの失効までを整理。安全なローテーション手順と運用コストの見積もり方を実務目線で解説します。2026年9月13日Explained
Vercel Connectの権限管理:共有認証情報を誰に任せるか

Vercel Connectの権限管理:共有認証情報を誰に任せるか

Vercel ConnectのConnector Permissionsで、共有コネクタを管理できる担当者を明確にする方法を解説します。OwnerとMemberに含まれる権限の落とし穴、プロバイダーのスコープやランタイムアクセスとの違い、Pro・Enterpriseチームで安全に引き継ぐ手順まで整理します。2026年9月13日Explained
拡張子なしファイルを改名せずCloudflare AI Searchに登録する方法

拡張子なしファイルを改名せずCloudflare AI Searchに登録する方法

Cloudflare AI Searchが、正しいHTTP Content-Typeを持つ拡張子なしファイルをR2からインデックス化できるようになりました。リネーム工程を省ける条件、残る同期・検証作業、メタデータ修復時のR2コスト、Workersでの実装方法、移行前に確認すべき制限を実務目線で解説します。2026年9月12日Explained
ニュースレター

毎週日曜、一通の手紙。動くシステムの話。感想戦ではなく。

週刊。スパムなし。いつでも解除できます。