2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.
4 4
5# サンドボックス5# サンドボックス化された Bash ツールを設定する
6 6
7> Claude Code のサンドボックス化された bash ツールがファイルシステムとネットワークの分離を提供し、より安全で自律的なエージェント実行を実現する方法について学びます。7> Claude Code のサンドボックス化された Bash ツールがファイルシステムとネットワークの分離を提供し、より安全で自律的なエージェント実行を実現する方法について学びます。
8 8
9## 概要9Bash サンドボックスを使用すると、Claude はほとんどのシェルコマンドを実行できます。各コマンドの実行許可を求める代わりに、コマンドがアクセスできるファイルとネットワークドメインを定義し、オペレーティングシステムがすべての Bash コマンドとその子プロセスに対してその境界を実施します。
10 10
11Claude Code はネイティブサンドボックス機能を備えており、エージェント実行のためのより安全な環境を提供しながら、継続的な許可プロンプトの必要性を軽減します。各 bash コマンドの実行許可を求める代わりに、サンドボックス化により事前に定義された境界が作成され、Claude Code はリスクを軽減しながらより自由に動作できます。11このページでは、以下の方法について説明します。
12 12
13サンドボックス化された bash ツールは OS レベルのプリミティブを使用して、ファイルシステムとネットワークの両方の分離を実施します。13* [サンドボックスを有効化](#get-started)し、サンドボックス化されたコマンドがどのように承認されるかを選択する
14* [サンドボックス化を設定](#configure-sandboxing)して、コマンドがアクセスできるパスとネットワークドメインを定義する
15* [サンドボックス化を許可ルールと許可モードと組み合わせる](#how-sandboxing-relates-to-permissions-and-permission-modes)
16* [組織全体でサンドボックス化を実施](#configure-the-sandbox-for-your-organization)する(管理設定を使用)
14 17
15## サンドボックス化が重要な理由18<Note>
16 19 dev コンテナ、カスタムコンテナ、仮想マシンなどの他の分離アプローチを比較するには、[Sandbox environments](/ja/sandbox-environments) を参照してください。Bash 以外のツールの許可プロンプトを削減するには、[permission modes](/ja/permission-modes) を参照してください。
17従来の許可ベースのセキュリティでは、bash コマンドごとに継続的なユーザー承認が必要です。これは制御を提供しますが、以下の問題につながる可能性があります。20</Note>
18
19* **承認疲れ**:「承認」を繰り返しクリックすると、ユーザーが承認内容に注意を払わなくなる可能性があります
20* **生産性の低下**:継続的な中断により開発ワークフローが遅くなります
21* **自律性の制限**:Claude Code は承認を待つ際に効率的に動作できません
22
23サンドボックス化はこれらの課題に以下の方法で対処します。
24
251. **明確な境界を定義**:Claude Code がアクセスできるディレクトリとネットワークホストを正確に指定します
262. **許可プロンプトを削減**:サンドボックス内の安全なコマンドは承認を必要としません
273. **セキュリティを維持**:サンドボックス外のリソースへのアクセス試行は即座に通知をトリガーします
284. **自律性を有効化**:Claude Code は定義された制限内でより独立して実行できます
29 21
30<Warning>22<h2 id="get-started">
31 効果的なサンドボックス化には、ファイルシステムとネットワークの両方の分離が**必要**です。ネットワーク分離がない場合、侵害されたエージェントは SSH キーなどの機密ファイルを流出させる可能性があります。ファイルシステム分離がない場合、侵害されたエージェントはシステムリソースにバックドアを仕掛けてネットワークアクセスを取得する可能性があります。サンドボックス化を設定する際は、設定がこれらのシステムのバイパスを作成しないことを確認することが重要です。23 開始方法
32</Warning>24</h2>
33 25
34## 仕組み26サンドボックスは Claude Code に組み込まれており、macOS、Linux、WSL2 で実行されます。ネイティブ Windows はサポートされていません。Windows では、Claude Code を WSL2 ディストリビューション内で実行してください。
35 27
36### ファイルシステム分離28macOS では、インストールするものはありません。サンドボックス化は組み込みの Seatbelt フレームワークを使用します。Linux と WSL2 では、サンドボックスは 2 つのパッケージに依存しており、[Linux と WSL2 をセットアップする](#set-up-linux-and-wsl2)で説明されています。まだインストールしていない場合でも、`/sandbox` で開始できます。そのパネルには、何が不足しているかが表示されます。
37 29
38サンドボックス化された bash ツールはファイルシステムアクセスを特定のディレクトリに制限します。30<Steps>
31 <Step title="/sandbox を実行する">
32 Claude Code セッションを開始し、`/sandbox` コマンドを実行します。
39 33
40* **デフォルトの書き込み動作**:現在の作業ディレクトリとそのサブディレクトリへの読み取りおよび書き込みアクセス34 ```text theme={null}
41* **デフォルトの読み取り動作**:特定の拒否ディレクトリを除く、コンピュータ全体への読み取りアクセス35 /sandbox
42* **ブロックされたアクセス**:明示的な許可なしに現在の作業ディレクトリ外のファイルを変更できません36 ```
43* **設定可能**:設定を通じてカスタム許可パスと拒否パスを定義します
44 37
45`sandbox.filesystem.allowWrite` を設定で使用して、追加のパスへの書き込みアクセスを付与できます。これらの制限は OS レベル(macOS の Seatbelt、Linux の bubblewrap)で実施されるため、Claude のファイルツールだけでなく、`kubectl`、`terraform`、`npm` などのツールを含むすべてのサブプロセスコマンドに適用されます。38 これにより、3 つのタブを持つサンドボックスパネルが開きます。
46 39
47### ネットワーク分離40 * **Mode**:サンドボックス化されたコマンドがどのように承認されるかを選択します。次のステップで説明します
41 * **Overrides**:サンドボックス内で失敗するコマンドがサンドボックス化されていない状態で実行にフォールバックできるかどうかを選択します。これは [`allowUnsandboxedCommands`](/ja/settings#sandbox-settings) 設定です
42 * **Config**:解決されたサンドボックス設定を表示します
48 43
49ネットワークアクセスはサンドボックス外で実行されるプロキシサーバーを通じて制御されます。44 パネルに Dependencies タブのみが表示される場合、必要なパッケージが不足しています。[Linux と WSL2 をセットアップする](#set-up-linux-and-wsl2)で説明されているようにインストールし、Claude Code を再起動して、`/sandbox` を再度実行してください。
45 </Step>
50 46
51* **ドメイン制限**:承認されたドメインのみにアクセスできます47 <Step title="モードを選択する">
52* **ユーザー確認**:新しいドメインリクエストは許可プロンプトをトリガーします([`allowManagedDomainsOnly`](/ja/settings#sandbox-settings) が有効な場合を除き、許可されていないドメインを自動的にブロックします)48 Mode タブで、自動許可または通常の許可を選択します。自動許可はサンドボックス化されたコマンドをプロンプトなしで実行し、通常の許可はコマンドがサンドボックス化されている場合でも通常の許可プロンプトを保持します。自動許可モードでもプロンプトが表示されるコマンドについては、[Sandbox modes](#sandbox-modes) を参照してください。
53* **カスタムプロキシサポート**:高度なユーザーは発信トラフィックにカスタムルールを実装できます49 </Step>
54* **包括的なカバレッジ**:制限はすべてのスクリプト、プログラム、およびコマンドによって生成されるサブプロセスに適用されます
55 50
56### OS レベルの実施51 <Step title="Bash コマンドを実行する">
52 Claude にコマンド(ビルドやテストスイートなど)を実行するよう依頼します。デフォルトでは、サンドボックス内のコマンドは作業ディレクトリにのみ書き込みできます。コマンドが新しいネットワークドメインにアクセスする必要がある場合、Claude Code は承認を求めます。
57 53
58サンドボックス化された bash ツールは OS セキュリティプリミティブを活用します。54 サンドボックス化されていない状態で実行できないコマンドは、通常の許可フローにフォールバックします。これらの境界を広げたり狭めたりするには、[サンドボックス化を設定](#configure-sandboxing)を参照してください。
55 </Step>
56</Steps>
59 57
60* **macOS**:Seatbelt をサンドボックス実施に使用します58パネルでモードを選択すると、プロジェクトのローカル設定 `.claude/settings.local.json` に書き込まれます。これは現在のプロジェクトに適用され、git にチェックインされません。すべてのプロジェクトでサンドボックスを有効化するには、ユーザー設定 `~/.claude/settings.json` で [`sandbox.enabled`](/ja/settings#sandbox-settings) を `true` に設定します。組織内のすべての開発者にサンドボックス化を実施するには、[管理設定](#enforce-sandboxing-with-managed-settings)を使用します。
61* **Linux**:分離に [bubblewrap](https://github.com/containers/bubblewrap) を使用します
62* **WSL2**:Linux と同じく bubblewrap を使用します
63
64WSL1 は bubblewrap が WSL2 でのみ利用可能なカーネル機能を必要とするため、サポートされていません。
65 59
66これらの OS レベルの制限により、Claude Code のコマンドによって生成されたすべての子プロセスが同じセキュリティ境界を継承することが保証されます。60<Warning>
61 デフォルトでは、依存関係が不足しているか、プラットフォームがサポートされていないためにサンドボックスが起動できない場合、Claude Code は警告を表示してサンドボックス化なしでコマンドを実行します。これをハード失敗にするには、[`sandbox.failIfUnavailable`](/ja/settings#sandbox-settings) を `true` に設定します。これは、セキュリティゲートとしてサンドボックス化を必要とする管理デプロイメント向けです。
62</Warning>
67 63
68## 開始方法64<h3 id="set-up-linux-and-wsl2">
65 Linux と WSL2 をセットアップする
66</h3>
69 67
70### 前提条件68Linux と WSL2 では、サンドボックスは 2 つのパッケージに依存しています。
71 69
72**macOS** では、サンドボックス化は組み込みの Seatbelt フレームワークを使用してすぐに動作します。70* [`bubblewrap`](https://github.com/containers/bubblewrap):ファイルシステム分離を実施する非特権サンドボックス化ツール
71* [`socat`](http://www.dest-unreach.org/socat/):サンドボックスプロキシを通じてネットワークトラフィックをルーティングするために使用されるリレー
73 72
74**Linux と WSL2** では、まず必要なパッケージをインストールしてください。73ディストリビューションのパッケージマネージャーでインストールします。
75 74
76<Tabs>75<Tabs>
77 <Tab title="Ubuntu/Debian">76 <Tab title="Ubuntu/Debian">
87 </Tab>86 </Tab>
88</Tabs>87</Tabs>
89 88
90WSL1 は必要な Linux 名前空間プリミティブが不足しているため、サンドボックス化をサポートしていません。`Sandboxing requires WSL2` が表示される場合は、ディストリビューションを WSL2 にアップグレードするか、Claude Code をサンドボックス化なしで実行してください。89インストール後、`/sandbox` の Dependencies タブに、`ripgrep`、`bubblewrap`、`socat`、および seccomp フィルターがプラットフォームで利用可能かどうかが表示されます。Ripgrep はネイティブ Claude Code バイナリにバンドルされています。seccomp フィルターはオプションで、Unix ドメインソケットのブロッキングを追加します。不足している場合は、`npm install -g @anthropic-ai/sandbox-runtime` でインストールしてください。
91 90
92WSL2 では、サンドボックス化されたコマンドは `cmd.exe`、`powershell.exe`、または `/mnt/c/` 下のものなどの Windows バイナリを起動できません。WSL はこれらを Unix ソケット経由で Windows ホストに渡しますが、サンドボックスはこれをブロックします。コマンドが Windows バイナリを呼び出す必要がある場合は、[`excludedCommands`](/ja/settings#sandbox-settings) に追加して、サンドボックス外で実行するようにしてください。91必要な依存関係が不足している場合、Dependencies タブはインストールするまで唯一のタブとして表示されます。依存関係チェックはスタートアップ時に実行されるため、パッケージをインストール後に Claude Code を再起動して、`/sandbox` がそれらを検出するようにしてください。
93 92
94### サンドボックス化を有効化93<AccordionGroup>
94 <Accordion title="Ubuntu 24.04 以降:bubblewrap がユーザー名前空間を作成できるようにする">
95 Ubuntu 24.04 以降では、デフォルトの AppArmor ポリシーが bubblewrap が分離に必要とするユーザー名前空間の作成を防止します。
95 96
96`/sandbox` コマンドを実行してサンドボックス化を有効化できます。97 WSL2 内を含む、環境がこの制限を実施しているかどうかを確認するには、`sysctl kernel.apparmor_restrict_unprivileged_userns` を実行します。キーが存在しないか 0 を返す場合は、このステップをスキップしてください。1 を返す場合は、`bwrap` にこの機能を付与する AppArmor プロファイルを追加します。
97 98
98```text theme={null}99 ```bash theme={null}
99/sandbox100 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'
100```101 abi <abi/4.0>,
102 include <tunables/global>
103
104 profile bwrap /usr/bin/bwrap flags=(unconfined) {
105 userns,
106 include if exists <local/bwrap>
107 }
108 EOF
109 ```
110
111 プロファイルは `bwrap` 自体にのみ適用され、サンドボックス内で実行されるコマンドには適用されません。AppArmor を再度読み込んで適用します。
112
113 ```bash theme={null}
114 sudo systemctl reload apparmor
115 ```
116 </Accordion>
101 117
102これはサンドボックスモードを選択できるメニューを開きます。必要な依存関係(Linux の `bubblewrap` や `socat` など)が不足している場合、メニューはプラットフォームのインストール手順を表示します。118 <Accordion title="WSL2 に関する注記">
119 PowerShell から `wsl -l -v` で WSL バージョンを確認します。`Sandboxing requires WSL2` が表示される場合、ディストリビューションは WSL1 で実行されています。WSL2 にアップグレードするか、Claude Code をサンドボックス化なしで実行してください。
103 120
104デフォルトでは、サンドボックスが起動できない場合(依存関係の不足またはサポートされていないプラットフォーム)、Claude Code は警告を表示してサンドボックス化なしでコマンドを実行します。これをハード失敗にするには、[`sandbox.failIfUnavailable`](/ja/settings#sandbox-settings) を `true` に設定します。これは、セキュリティゲートとしてサンドボックス化を必要とする管理デプロイメント向けです。121 WSL2 では、サンドボックス化されたコマンドは `cmd.exe`、`powershell.exe`、または `/mnt/c/` 下のものなどの Windows バイナリを起動できません。WSL はこれらを Unix ソケット経由で Windows ホストに渡しますが、サンドボックスはこれをブロックします。コマンドが Windows バイナリを呼び出す必要がある場合は、[`excludedCommands`](/ja/settings#sandbox-settings) に追加して、サンドボックス外で実行するようにしてください。
122 </Accordion>
123</AccordionGroup>
105 124
106### サンドボックスモード125<h3 id="sandbox-modes">
126 サンドボックスモード
127</h3>
107 128
108Claude Code は 2 つのサンドボックスモードを提供します。129Claude Code は 2 つのサンドボックスモードを提供します。
109 130
110**自動許可モード**:Bash コマンドはサンドボックス内で実行を試みられ、許可なしに自動的に許可されます。サンドボックス化できないコマンド(許可されていないホストへのネットワークアクセスが必要なコマンドなど)は通常の許可フローにフォールバックします。明示的な拒否ルールは常に尊重されます。また、`rm` または `rmdir` コマンドが `/`、ホームディレクトリ、または他の重要なシステムパスをターゲットにしている場合でも、許可プロンプトがトリガーされます。Ask ルールは通常の許可フローにフォールバックするコマンドにのみ適用されます。131**自動許可モード**:Bash コマンドはサンドボックス内で実行を試みられ、許可なしに自動的に許可されます。サンドボックス化できないコマンド(許可されていないホストへのネットワークアクセスが必要なコマンドなど)は、通常の許可フローにフォールバックします。そこで Claude Code は [許可ルール](/ja/permissions)を確認し、それらのルールが既に許可していないコマンドについてプロンプトを表示します。
111 132
112**通常の許可モード**:すべての bash コマンドは、サンドボックス化されている場合でも標準的な許可フローを通じます。これはより多くの制御を提供しますが、より多くの承認が必要です。133自動許可モードでも、以下が適用されます。
113 134
114両方のモードで、サンドボックスは同じファイルシステムとネットワーク制限を実施します。違いは、サンドボックス化されたコマンドが自動承認されるか明示的な許可が必要かだけです。135* 明示的な [拒否ルール](/ja/permissions)は常に尊重されます
136* `/`、ホームディレクトリ、または他の重要なシステムパスをターゲットにする `rm` または `rmdir` コマンドは、依然として許可プロンプトをトリガーします
137* [Ask ルール](/ja/permissions)は、通常の許可フローにフォールバックするコマンドに適用されます
138
139**通常の許可モード**:すべての Bash コマンドは、サンドボックス化されている場合でも、通常の許可フローを通じます。これはより多くの制御を提供しますが、より多くの承認が必要です。
140
141両方のモードで、サンドボックスは同じファイルシステムとネットワーク制限を実施します。違いは、サンドボックス化されたコマンドが自動承認されるか、明示的な許可が必要かだけです。
142
143一部のコマンドはサンドボックス内でまったく実行できません。これは、それと互換性がないツール、または許可していないホストが必要なツールなどです。タスクを失敗させたり、サンドボックス化をオフにするよう要求したりするのではなく、Claude Code には意図的なエスケープハッチが含まれています。サンドボックス制限のためにコマンドが失敗した場合、Claude は失敗を分析し、`dangerouslyDisableSandbox` パラメータでコマンドを再試行する可能性があります。再試行されたコマンドはサンドボックス外で実行されるため、通常の許可フローを通じて実行され、承認が必要です。
144
145このエスケープハッチは、[サンドボックス設定](/ja/settings#sandbox-settings)で `"allowUnsandboxedCommands": false` を設定することで無効化できます。無効化されると、`dangerouslyDisableSandbox` パラメータは完全に無視され、すべてのコマンドはサンドボックス化されるか、`excludedCommands` に明示的にリストされている必要があります。
115 146
116<Info>147<Info>
117 自動許可モードは許可モード設定とは独立して動作します。「編集を受け入れる」モードでない場合でも、自動許可が有効な場合、サンドボックス化された bash コマンドは自動的に実行されます。これは、ファイル編集ツールが通常は承認を必要とする場合でも、サンドボックス境界内のファイルを変更する bash コマンドはプロンプトなしに実行されることを意味します。148 自動許可モードは許可モード設定とは独立して動作します。「編集を受け入れる」モードでない場合でも、自動許可が有効な場合、サンドボックス化された Bash コマンドは自動的に実行されます。これは、ファイル編集ツールが通常は承認を必要とする場合でも、サンドボックス境界内のファイルを変更する Bash コマンドはプロンプトなしに実行されることを意味します。
118</Info>149</Info>
119 150
120### サンドボックス化を設定151<h2 id="configure-sandboxing">
152 サンドボックス化を設定する
153</h2>
121 154
122`settings.json` ファイルを通じてサンドボックス動作をカスタマイズします。完全な設定リファレンスについては [Settings](/ja/settings#sandbox-settings) を参照してください。155`settings.json` ファイルを通じてサンドボックス動作をカスタマイズします。完全な設定リファレンスについては [Settings](/ja/settings#sandbox-settings) を参照してください。
123 156
124#### 特定のパスへのサブプロセス書き込みアクセスの付与
125
126デフォルトでは、サンドボックス化されたコマンドは現在の作業ディレクトリにのみ書き込みできます。`kubectl`、`terraform`、`npm` などのサブプロセスコマンドがプロジェクトディレクトリ外に書き込む必要がある場合、`sandbox.filesystem.allowWrite` を使用して特定のパスへのアクセスを付与します。157デフォルトでは、サンドボックス化されたコマンドは現在の作業ディレクトリにのみ書き込みできます。`kubectl`、`terraform`、`npm` などのサブプロセスコマンドがプロジェクトディレクトリ外に書き込む必要がある場合、`sandbox.filesystem.allowWrite` を使用して特定のパスへのアクセスを付与します。
127 158
128```json theme={null}159```json theme={null}
138 169
139これらのパスは OS レベルで実施されるため、サンドボックス内で実行されるすべてのコマンド(その子プロセスを含む)がそれらを尊重します。これは、`excludedCommands` でツールをサンドボックスから除外するのではなく、ツールが特定の場所への書き込みアクセスを必要とする場合の推奨アプローチです。170これらのパスは OS レベルで実施されるため、サンドボックス内で実行されるすべてのコマンド(その子プロセスを含む)がそれらを尊重します。これは、`excludedCommands` でツールをサンドボックスから除外するのではなく、ツールが特定の場所への書き込みアクセスを必要とする場合の推奨アプローチです。
140 171
141`allowWrite`(または `denyWrite`/`denyRead`/`allowRead`)が複数の [設定スコープ](/ja/settings#settings-precedence) で定義されている場合、配列は**マージ**されます。つまり、すべてのスコープからのパスが結合され、置き換えられません。たとえば、管理設定が `/opt/company-tools` への書き込みを許可し、ユーザーが個人設定で `~/.kube` を追加する場合、両方のパスが最終的なサンドボックス設定に含まれます。これは、ユーザーとプロジェクトが、より高い優先度のスコープで設定されたパスを複製または上書きすることなく、リストを拡張できることを意味します。172同じファイルシステム配列が複数の [設定スコープ](/ja/settings#settings-precedence)で定義されている場合、配列はマージされます。すべてのスコープからのパスが結合され、置き換えられません。
142 173
143パスプレフィックスはパスの解決方法を制御します。174パスプレフィックスはパスの解決方法を制御します。
144 175
148| `~/` | ホームディレクトリからの相対パス | `~/.kube` は `$HOME/.kube` になります |179| `~/` | ホームディレクトリからの相対パス | `~/.kube` は `$HOME/.kube` になります |
149| `./` またはプレフィックスなし | プロジェクト設定の場合はプロジェクトルートからの相対パス、またはユーザー設定の場合は `~/.claude` からの相対パス | `.claude/settings.json` の `./output` は `<project-root>/output` に解決されます |180| `./` またはプレフィックスなし | プロジェクト設定の場合はプロジェクトルートからの相対パス、またはユーザー設定の場合は `~/.claude` からの相対パス | `.claude/settings.json` の `./output` は `<project-root>/output` に解決されます |
150 181
151古い `//path` プレフィックスは絶対パスの場合でも機能します。以前に単一スラッシュ `/path` を使用してプロジェクト相対解決を期待していた場合は、`./path` に切り替えてください。この構文は [Read と Edit 許可ルール](/ja/permissions#read-and-edit) とは異なります。これらは絶対パスに `//path` を使用し、プロジェクト相対に `/path` を使用します。サンドボックスファイルシステムパスは標準的な規則を使用します。`/tmp/build` は絶対パスです。182この構文は [Read と Edit 許可ルール](/ja/permissions#read-and-edit)とは異なります。これらは絶対パスに `//path` を使用し、プロジェクト相対に `/path` を使用します。サンドボックスファイルシステムパスは標準的な規則を使用します。`/tmp/build` は絶対パスです。
152 183
153`sandbox.filesystem.denyWrite` と `sandbox.filesystem.denyRead` を使用して書き込みまたは読み取りアクセスを拒否することもできます。これらは `Edit(...)` と `Read(...)` 許可ルールからのパスとマージされます。拒否された領域内の特定のパスの読み取りを再度許可するには、`sandbox.filesystem.allowRead` を使用します。これは `denyRead` より優先されます。管理設定で `allowManagedReadPathsOnly` が有効な場合、管理 `allowRead` エントリのみが尊重されます。ユーザー、プロジェクト、ローカルの `allowRead` エントリは無視されます。`denyRead` はすべてのソースからマージされます。184`sandbox.filesystem.denyWrite` と `sandbox.filesystem.denyRead` を使用して書き込みまたは読み取りアクセスを拒否することもでき、`sandbox.filesystem.allowRead` を使用して拒否された領域内の特定のパスの読み取りを再度許可できます。
154 185
155たとえば、ホームディレクトリ全体からの読み取りをブロックしながら、現在のプロジェクトからの読み取りを許可するには、プロジェクトの `.claude/settings.json` に以下を追加します。186以下の例は、ホームディレクトリ全体からの読み取りをブロックしながら、現在のプロジェクトからの読み取りを許可します。プロジェクトの `.claude/settings.json` に配置してください。相対パス `.` はプロジェクト設定に存在する場合にのみプロジェクトルートに解決されるためです。
156 187
157```json theme={null}188```json theme={null}
158{189{
166}197}
167```198```
168 199
169この設定がプロジェクト設定に存在するため、`allowRead` の `.` はプロジェクトルートに解決されます。同じ設定を `~/.claude/settings.json` に配置した場合、`.` は `~/.claude` に解決され、プロジェクトファイルは `denyRead` ルールによってブロックされたままになります。200`.` が `allowRead` に含まれるのは、この設定がプロジェクト設定に存在するためです。同じ設定を `~/.claude/settings.json` に配置した場合、`.` は `~/.claude` に解決され、プロジェクトファイルは `denyRead` ルールによってブロックされたままになります。
170 201
171<Tip>202<h2 id="how-sandboxing-works">
172 すべてのコマンドがサンドボックス化と互換性があるわけではありません。サンドボックスを最大限に活用するのに役立つ可能性のあるいくつかのメモ:203 サンドボックス化の仕組み
204</h2>
173 205
174 * 多くの CLI ツールは特定のホストへのアクセスを必要とします。これらのツールを使用すると、特定のホストへのアクセス許可をリクエストします。許可を付与すると、これらのホストに今後アクセスでき、サンドボックス内で安全に実行できるようになります。206<h3 id="filesystem-isolation">
175 * `watchman` はサンドボックス内での実行と互換性がありません。`jest` を実行している場合は、`jest --no-watchman` の使用を検討してください207 ファイルシステム分離
176 * `docker` はサンドボックス内での実行と互換性がありません。`excludedCommands` で `docker *` を指定して、サンドボックス外で実行するように強制することを検討してください。208</h3>
177</Tip>
178 209
179<Note>210サンドボックス化された Bash ツールはファイルシステムアクセスを特定のディレクトリに制限します。
180 Claude Code には、必要に応じてコマンドをサンドボックス外で実行できるようにする意図的なエスケープハッチメカニズムが含まれています。コマンドがサンドボックス制限(ネットワーク接続の問題や互換性のないツールなど)により失敗した場合、Claude は失敗を分析するよう促され、`dangerouslyDisableSandbox` パラメータでコマンドを再試行する可能性があります。このパラメータを使用するコマンドは、実行するユーザー許可を必要とする通常の Claude Code 許可フローを通じます。これにより、Claude Code は特定のツールまたはネットワーク操作がサンドボックス制約内で機能できないエッジケースを処理できます。211
212* **デフォルトの書き込み動作**:現在の作業ディレクトリとそのサブディレクトリへの読み取りおよび書き込みアクセス
213* **デフォルトの読み取り動作**:特定の拒否ディレクトリを除く、コンピュータ全体への読み取りアクセス。このデフォルトは `~/.aws/credentials` や `~/.ssh/` などの認証情報ファイルの読み取りを許可することに注意してください。これらをブロックするには、`denyRead` に追加してください。
214* **ブロックされたアクセス**:明示的な許可なしに現在の作業ディレクトリ外のファイルを変更できません。これには `~/.bashrc` などのシェル設定ファイルと `/bin/` のシステムバイナリが含まれます。
215* **Git worktrees**:作業ディレクトリが[リンクされた git worktree](/ja/worktrees)の場合、サンドボックスはメインリポジトリの共有 `.git` ディレクトリへの書き込みも許可するため、`git commit` などのコマンドが refs とインデックスを更新できます。そのディレクトリ内の `hooks/` と `config` への書き込みは引き続き拒否されます。
216* **設定可能**:設定を通じてカスタム許可パスと拒否パスを定義します
181 217
182 このエスケープハッチは、[サンドボックス設定](/ja/settings#sandbox-settings) で `"allowUnsandboxedCommands": false` を設定することで無効化できます。無効化されると、`dangerouslyDisableSandbox` パラメータは完全に無視され、すべてのコマンドはサンドボックス化されるか、`excludedCommands` に明示的にリストされている必要があります。218`sandbox.filesystem.allowWrite` を設定で使用して、追加のパスへの書き込みアクセスを付与できます。これらの制限は OS レベルで実施されるため、Claude のファイルツールだけでなく、`kubectl`、`terraform`、`npm` などのツールを含むすべてのサブプロセスコマンドに適用されます。
219
220<h3 id="network-isolation">
221 ネットワーク分離
222</h3>
223
224ネットワークアクセスはサンドボックス外で実行されるプロキシサーバーを通じて制御されます。
225
226* **ドメイン制限**:事前に許可されたドメインはありません。コマンドが新しいドメインにアクセスする必要がある場合、Claude Code はプロンプトを表示します。[`allowedDomains`](/ja/settings#sandbox-settings)でドメインを事前に許可してプロンプトを回避します。
227* **管理ロックダウン**:[`allowManagedDomainsOnly`](/ja/settings#sandbox-settings)が管理設定で設定されている場合、許可されていないドメインはプロンプトの代わりに自動的にブロックされ、管理設定からの `allowedDomains` のみが尊重されます。
228* **カスタムプロキシサポート**:高度なユーザーは発信トラフィックにカスタムルールを実装できます
229* **包括的なカバレッジ**:制限はすべてのスクリプト、プログラム、およびコマンドによって生成されるサブプロセスに適用されます
230
231<Note>
232 組み込みプロキシは要求されたホスト名に基づいて許可リストを実施し、TLS トラフィックを終了または検査しません。このデザインのセキュリティ上の影響については [Security limitations](#security-limitations) を参照してください。脅威モデルが TLS 検査を必要とする場合は、[Custom proxy configuration](#custom-proxy-configuration) を参照してください。
183</Note>233</Note>
184 234
185## セキュリティ上の利点235<h3 id="os-level-enforcement">
236 OS レベルの実施
237</h3>
186 238
187### プロンプトインジェクションからの保護239サンドボックス化された Bash ツールは OS セキュリティプリミティブを活用します。
188 240
189攻撃者がプロンプトインジェクションを通じて Claude Code の動作を正常に操作した場合でも、サンドボックスはシステムのセキュリティを確保します。241* **macOS**:サンドボックス実施に Seatbelt を使用します
242* **Linux**:分離に [bubblewrap](https://github.com/containers/bubblewrap) を使用します
243* **WSL2**:Linux と同じく bubblewrap を使用します
190 244
191**ファイルシステム保護:**245WSL1 は bubblewrap が WSL2 でのみ利用可能なカーネル機能を必要とするため、サポートされていません。これらの OS レベルの制限により、Claude Code のコマンドによって生成されたすべての子プロセスが同じセキュリティ境界を継承することが保証されます。
192 246
193* `~/.bashrc` などの重要な設定ファイルを変更できません247これらの同じプリミティブは、スタンドアロン [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) パッケージとして利用可能です。[Sandbox environments](/ja/sandbox-environments#sandbox-runtime) ページでは、Claude Code プロセス全体をラップするための別のアプローチとしてこれについて説明しています。
194* `/bin/` のシステムレベルファイルを変更できません
195* [Claude 許可設定](/ja/permissions#manage-permissions) で拒否されたファイルを読み取ることができません
196 248
197**ネットワーク保護:**249<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">
250 サンドボックス化が許可と許可モードにどのように関連するか
251</h2>
198 252
199* 攻撃者が制御するサーバーへのデータ流出はできません253サンドボックス化、[許可ルール](/ja/permissions)、および [許可モード](/ja/permission-modes)は補完的なレイヤーです。以下のセクションでは、サンドボックスが各レイヤーとどのように相互作用するかについて説明します。
200* 許可されていないドメインから悪意のあるスクリプトをダウンロードできません
201* 承認されていないサービスへの予期しない API 呼び出しを行うことができません
202* 明示的に許可されていないドメインに連絡することはできません
203 254
204**監視と制御:**255<h3 id="permission-rules">
256 許可ルール
257</h3>
205 258
206* サンドボックス外のすべてのアクセス試行は OS レベルでブロックされます259許可ルールとサンドボックス化は異なるものを制御します。
207* 境界がテストされるときに即座に通知を受け取ります
208* リクエストを拒否、1 回だけ許可、または設定を永続的に更新することを選択できます
209 260
210### 攻撃面の削減261* **許可ルール**は Claude Code が使用できるツールを制御し、任意のツールが実行される前に評価されます。これらは Bash、Read、Edit、WebFetch、MCP、およびその他のツールを含むすべてのツールに適用されます。
262* **サンドボックス化**は、Bash コマンドがファイルシステムとネットワークレベルでアクセスできるものを制限する OS レベルの実施を提供します。これは Bash コマンドとその子プロセスにのみ適用されます。
211 263
212サンドボックス化は以下からの潜在的な損害を制限します。2642 つのレイヤーは実施方法も異なります。Claude Code はコマンド文字列に基づいて、また自動モードではコマンドが安全かどうかについての別の分類器の判断に基づいて、コマンドが実行される前に許可決定を評価します。オペレーティングシステムは実行中のプロセスにサンドボックス境界を実施するため、モデルが何を実行することを選択したかに関係なく、許可されたコマンドが名前が示唆するもの以上のことを行う場合でも、それは保持されます。
213 265
214* **悪意のある依存関係**:有害なコードを含む NPM パッケージまたは他の依存関係266ファイルシステムとネットワーク制限は、サンドボックス設定と許可ルールの両方を通じて設定されます。
215* **侵害されたスクリプト**:セキュリティ脆弱性を持つビルドスクリプトまたはツール
216* **ソーシャルエンジニアリング**:ユーザーに危険なコマンドを実行させるための攻撃
217* **プロンプトインジェクション**:Claude に危険なコマンドを実行させるための攻撃
218 267
219### 透過的な操作268| 設定またはルール | 機能 |
269| :------------------------------------------------------------- | :------------------------------------------------------------ |
270| `sandbox.filesystem.allowWrite` | 作業ディレクトリ外のパスへのサブプロセス書き込みアクセスを付与します |
271| `sandbox.filesystem.denyWrite` と `sandbox.filesystem.denyRead` | 特定のパスへのサブプロセスアクセスをブロックします |
272| `sandbox.filesystem.allowRead` | `denyRead` 領域内の特定のパスの読み取りを再度許可します |
273| `Edit` 許可ルール | 特定のパスへの書き込みアクセスを付与します。`sandbox.filesystem.allowWrite` と同じ方法です |
274| `Read` と `Edit` 拒否ルール | 特定のファイルまたはディレクトリへのアクセスをブロックします |
275| `WebFetch` 許可および拒否ルール | ドメインアクセスを制御します |
276| サンドボックス `allowedDomains` | Bash コマンドが到達できるドメインを制御します |
277| サンドボックス `deniedDomains` | より広い `allowedDomains` ワイルドカードが許可する場合でも、特定のドメインをブロックします |
220 278
221Claude Code がサンドボックス外のネットワークリソースにアクセスしようとする場合:279`sandbox.filesystem` 設定と許可ルールからのパスは、最終的なサンドボックス設定にマージされます。
222 280
2231. 操作は OS レベルでブロックされます281[claude-code リポジトリの examples ディレクトリ](https://github.com/anthropics/claude-code/tree/main/examples/settings)には、一般的なデプロイメントシナリオ(サンドボックス固有の例を含む)のスターター設定が含まれています。これらを出発点として使用し、ニーズに合わせて調整してください。
2242. 即座に通知を受け取ります
2253. 以下を選択できます。
226 * リクエストを拒否する
227 * 1 回だけ許可する
228 * サンドボックス設定を永続的に更新して許可する
229 282
230## セキュリティ上の制限283<h3 id="permission-modes">
284 許可モード
285</h3>
231 286
232* ネットワークサンドボックス化の制限:ネットワークフィルタリングシステムは、プロセスが接続を許可されるドメインを制限することで動作します。プロキシを通じて渡されるトラフィックを検査することはなく、ユーザーはポリシーで許可されたドメインが信頼できるドメインのみであることを確認する責任があります。287`/sandbox` は [許可モード](/ja/permission-modes)ではありません。許可モードはツール呼び出しが実行されるかどうか、および最初にプロンプトが表示されるかどうかを決定しますが、サンドボックスは Bash コマンドが実行されたら何にアクセスできるかを制限します。これらは制御対象と、1 回のアクション プロンプトを置き換えるものが異なります。
233 288
234<Warning>289| | 制御対象 | プロンプトを置き換えるもの |
235 ユーザーは、データ流出を許可する可能性のある `github.com` などの広いドメインを許可することに伴う潜在的なリスクに注意する必要があります。また、場合によっては [ドメインフロンティング](https://en.wikipedia.org/wiki/Domain_fronting) を通じてネットワークフィルタリングをバイパスすることが可能な場合があります。290| :----------------------------------------------------------------- | :------------------------- | :------------------------------------------------------------------------------------------------------------ |
236</Warning>291| `/sandbox` | Bash コマンドが実行されたら何にアクセスできるか | [自動許可モード](#sandbox-modes)のサンドボックス境界自体 |
292| [Auto mode](/ja/permission-modes#eliminate-prompts-with-auto-mode) | 各ツール呼び出しが実行されるかどうか | アクションをレビューする分類器 |
293| `--dangerously-skip-permissions` | 各ツール呼び出しが実行されるかどうか | なし。[Protected path](/ja/permission-modes#protected-paths) チェックもスキップされます。`/` またはホームディレクトリを削除することだけがプロンプトを表示します |
237 294
238* Unix ソケットを通じた権限昇格:`allowUnixSockets` 設定は、サンドボックスバイパスにつながる可能性のある強力なシステムサービスへのアクセスを不注意に付与する可能性があります。たとえば、`/var/run/docker.sock` へのアクセスを許可するために使用される場合、docker ソケットを悪用してホストシステムへのアクセスを効果的に付与します。ユーザーはサンドボックスを通じて許可する Unix ソケットを慎重に検討することをお勧めします。295サンドボックスの [自動許可モード](#sandbox-modes)は [自動モード](/ja/permission-modes#eliminate-prompts-with-auto-mode)とは別です。自動許可はサンドボックス境界がそれらを含むため Bash コマンドを承認し、自動モードは分類器を使用してアクションをレビューします。2 つは独立して動作し、組み合わせることができます。無人実行の分離境界を選択するには、[Sandbox environments](/ja/sandbox-environments#how-isolation-relates-to-permission-modes) を参照してください。
239* ファイルシステム許可昇格:過度に広いファイルシステム書き込み許可は権限昇格攻撃を有効にする可能性があります。`$PATH` の実行可能ファイルを含むディレクトリ、システム設定ディレクトリ、またはユーザーシェル設定ファイル(`.bashrc`、`.zshrc`)への書き込みを許可すると、他のユーザーまたはシステムプロセスがこれらのファイルにアクセスするときに異なるセキュリティコンテキストでコード実行につながる可能性があります。
240* Linux サンドボックス強度:Linux 実装は強力なファイルシステムとネットワーク分離を提供しますが、特権のない名前空間なしで Docker 環境内で動作できるようにする `enableWeakerNestedSandbox` モードが含まれています。このオプションはセキュリティを大幅に弱め、追加の分離が別の方法で実施される場合にのみ使用する必要があります。
241 296
242## サンドボックス化が許可とどのように関連するか297<h2 id="configure-the-sandbox-for-your-organization">
298 組織のサンドボックスを設定する
299</h2>
243 300
244サンドボックス化と [許可](/ja/permissions) は、一緒に動作する補完的なセキュリティレイヤーです。301管理者はすべてのユーザーにサンドボックス化を要求し、開発者がポリシーを広げるのを防ぎ、サンドボックストラフィックを企業プロキシを通じてルーティングできます。
245 302
246* **許可** は Claude Code が使用できるツールを制御し、任意のツールが実行される前に評価されます。これらは Bash、Read、Edit、WebFetch、MCP などすべてのツールに適用されます。303<h3 id="enforce-sandboxing-with-managed-settings">
247* **サンドボックス化** は、Bash コマンドがファイルシステムとネットワークレベルでアクセスできるものを制限する OS レベルの実施を提供します。これは Bash コマンドとその子プロセスにのみ適用されます。304 管理設定でサンドボックス化を実施する
305</h3>
248 306
249ファイルシステムとネットワーク制限は、サンドボックス設定と許可ルールの両方を通じて設定されます。307すべての開発者にサンドボックスを要求するには、[管理設定](/ja/settings#settings-files)を通じて `sandbox` キーを配信します。MDM で管理されるファイルまたは Claude.ai の [server-managed settings](/ja/server-managed-settings)を通じて配信します。
250 308
251* `sandbox.filesystem.allowWrite` を使用して、作業ディレクトリ外のパスへのサブプロセス書き込みアクセスを付与します309以下の管理設定構成はサンドボックスを有効化し、サンドボックスが初期化できない場合は Claude Code の起動を拒否し、モデルがサンドボックス外でコマンドを再試行するのを防止します。
252* `sandbox.filesystem.denyWrite` と `sandbox.filesystem.denyRead` を使用して、特定のパスへのサブプロセスアクセスをブロックします
253* `sandbox.filesystem.allowRead` を使用して、`denyRead` 領域内の特定のパスの読み取りを再度許可します
254* `Read` と `Edit` 拒否ルールを使用して、特定のファイルまたはディレクトリへのアクセスをブロックします
255* `WebFetch` 許可/拒否ルールを使用してドメインアクセスを制御します
256* サンドボックス `allowedDomains` を使用して、Bash コマンドが到達できるドメインを制御します
257* サンドボックス `deniedDomains` を使用して、より広い `allowedDomains` ワイルドカードが許可する場合でも、特定のドメインをブロックします
258 310
259`sandbox.filesystem` 設定と許可ルールからのパスは、最終的なサンドボックス設定にマージされます。311```json theme={null}
312{
313 "sandbox": {
314 "enabled": true,
315 "failIfUnavailable": true,
316 "allowUnsandboxedCommands": false
317 }
318}
319```
320
321`enabled` を超える 2 つのキーは、サンドボックスがコマンドを実行できない場合に何が起こるかを制御します。
322
323* **`failIfUnavailable`**:Linux の bubblewrap などの不足している依存関係は、警告を表示してサンドボックス化されていない実行にフォールバックするのではなく、Claude Code の起動をブロックします
324* **`allowUnsandboxedCommands: false`**:`dangerouslyDisableSandbox` エスケープハッチは無視されるため、サンドボックス内で失敗するコマンドはサンドボックス外で再試行できません
325
326それらと一緒に検討する価値のある 2 つの追加があります。サンドボックス化なしで実行する必要がある組織承認ツールについて `excludedCommands` を追加します。`~/.aws` や `~/.ssh` などの認証情報ディレクトリについて [`denyRead`](#filesystem-isolation) エントリを追加します。デフォルトの読み取りポリシーはこれらを許可します。
327
328サンドボックスはネイティブ Windows では実行されないため、フリートに Windows ホストが含まれている場合、この設定を macOS と Linux にスコープするか、それらのユーザーに WSL2 またはコンテナ内で Claude Code を実行させてください。
260 329
261この [リポジトリ](https://github.com/anthropics/claude-code/tree/main/examples/settings) には、一般的なデプロイメントシナリオ(サンドボックス固有の例を含む)のスターター設定が含まれています。これらを出発点として使用し、ニーズに合わせて調整してください。330<h3 id="keep-developers-from-widening-the-policy">
331 開発者がポリシーを広げるのを防ぐ
332</h3>
262 333
263## 高度な使用方法334`enabled` と `failIfUnavailable` などのブール値キーの場合、Claude Code は管理値を使用し、開発者がローカルで設定したものを無視します。`excludedCommands` と `allowRead` などの配列キーの場合、Claude Code はすべてのスコープからエントリをマージするため、開発者はポリシーを広げるエントリを追加できます。
264 335
265### カスタムプロキシ設定336管理設定で `allowManagedReadPathsOnly` を `true` に設定して、管理設定からの `allowRead` エントリのみが尊重されるようにします。ユーザー、プロジェクト、ローカルの `allowRead` エントリは無視されます。これにより、開発者は組織承認パスを超えて読み取りアクセスを広げるのを防止します。ネットワークドメインを同じ方法で管理値にロックするには、[`allowManagedDomainsOnly`](/ja/settings#sandbox-settings)を設定します。
337
338`excludedCommands` には同等の管理のみロックダウンがないため、開発者は常にサンドボックス外で実行する追加コマンドを追加するエントリを追加できます。管理リストを狭く保ちます。
339
340<h3 id="custom-proxy-configuration">
341 カスタムプロキシ設定
342</h3>
266 343
267高度なネットワークセキュリティを必要とする組織の場合、カスタムプロキシを実装して以下を行うことができます。344高度なネットワークセキュリティを必要とする組織の場合、カスタムプロキシを実装して以下を行うことができます。
268 345
271* すべてのネットワークリクエストをログに記録する348* すべてのネットワークリクエストをログに記録する
272* 既存のセキュリティインフラストラクチャと統合する349* 既存のセキュリティインフラストラクチャと統合する
273 350
351Claude Code をプロキシにポイントするには、[サンドボックス設定](/ja/settings#sandbox-settings)でプロキシポートを設定します。
352
274```json theme={null}353```json theme={null}
275{354{
276 "sandbox": {355 "sandbox": {
282}361}
283```362```
284 363
285### 既存のセキュリティツールとの統合364<h2 id="troubleshooting">
365 トラブルシューティング
366</h2>
286 367
287サンドボックス化された bash ツールは以下と連携します。368一部のコマンドはサンドボックス内で失敗しますが、サンドボックス外では機能します。以下の修正は最も一般的なケースをカバーしています。
288 369
289* **許可ルール**:[許可設定](/ja/permissions) と組み合わせて多層防御を実現します370* **コマンドがホスト許可なしエラーで失敗する**:多くの CLI ツールは特定のホストに到達する必要があります。プロンプトが表示されたときに許可を付与すると、ホストが許可リストに追加されるため、ツールは将来サンドボックス内で実行されます。
290* **開発コンテナ**:[dev containers](/ja/devcontainer) と共に使用して追加の分離を実現します371* **`jest` がハングまたは失敗する**:`watchman` はサンドボックスと互換性がありません。代わりに `jest --no-watchman` を実行してください。
291* **エンタープライズポリシー**:[管理設定](/ja/settings#settings-precedence) を通じてサンドボックス設定を実施します372* **Go ベースの CLI が macOS で TLS 検証に失敗する**:`gh`、`gcloud`、`terraform` などのツールは Seatbelt の下で TLS 検証に失敗する可能性があります。これらのツールを `excludedCommands` にリストして、サンドボックス外で実行してください。`httpProxyPort` を MITM プロキシとカスタム CA で使用している場合は、代わりに [`enableWeakerNetworkIsolation`](/ja/settings#sandbox-settings)を `true` に設定してください。
373* **`docker` コマンドが失敗する**:`docker` はサンドボックスと互換性がありません。`docker *` を `excludedCommands` に追加して、サンドボックス外で実行してください。
374* **Bubblewrap がコンテナ内で起動に失敗する**:非特権コンテナでは、bubblewrap は新しい `/proc` ファイルシステムをマウントできません。[`enableWeakerNestedSandbox`](/ja/settings#sandbox-settings)を `true` に設定して、内部サンドボックスがコンテナの既存の `/proc` をバインドマウントするようにしてください。このオプションは、外部コンテナが既に必要な分離境界を提供する場合にのみ使用してください。新しい `/proc` マウントが隠すサンドボックス化されたコマンドにプロセス情報を公開するためです。
375* **Linux の Seccomp フィルター**:seccomp フィルターは Unix ドメインソケットをブロックするために必要です。`/sandbox` の Dependencies タブに、それが利用可能かどうかが表示されます。不足している場合は、`npm install -g @anthropic-ai/sandbox-runtime` を実行してヘルパーをインストールしてください。
376* **`--dangerously-skip-permissions` が root として失敗する**:このフラグは Linux と macOS で root として実行するか sudo 経由で実行する場合にブロックされます。root アクセスと許可プロンプトなしを組み合わせるとシステム上のあらゆるファイルまたはサービスを変更できるためです。チェックは認識されたサンドボックス内で自動的にスキップされます。コンテナで自律的に実行するには、[dev container](/ja/devcontainer)設定を使用してください。これは Claude Code を非 root ユーザーとして実行します。
292 377
293## ベストプラクティス378<h2 id="limitations">
379 制限事項
380</h2>
294 381
2951. **制限的に開始**:最小限の許可で開始し、必要に応じて拡張します382サンドボックス化はリスクを軽減しますが、完全な分離境界ではありません。ハードセキュリティ制御として依存する前に、以下の制限事項を確認してください。
2962. **ログを監視**:サンドボックス違反の試みを確認して、Claude Code のニーズを理解します
2973. **環境固有の設定を使用**:開発環境と本番環境で異なるサンドボックスルールを使用します
2984. **許可と組み合わせる**:包括的なセキュリティのためにサンドボックス化を IAM ポリシーと共に使用します
2995. **設定をテスト**:サンドボックス設定が正当なワークフローをブロックしないことを確認します
300 383
301## オープンソース384<h3 id="security-limitations">
385 セキュリティ上の制限
386</h3>
302 387
303サンドボックスランタイムは、独自のエージェントプロジェクトで使用するためのオープンソース npm パッケージとして利用可能です。これにより、より広い AI エージェントコミュニティがより安全で安全な自律システムを構築できます。これは、サンドボックス化したい他のプログラムをサンドボックス化するためにも使用できます。たとえば、MCP サーバーをサンドボックス化するには、以下を実行できます。388* **ネットワークフィルタリング**:ネットワークフィルタリングシステムは、プロセスが接続を許可されるドメインを制限することで動作します。組み込みプロキシは発信トラフィックを終了または TLS 検査を実行しないため、暗号化された接続の内容は検査されません。許可リストに含まれるドメインのみが信頼できることを確認する責任があります。
304 389
305```bash theme={null}390<Warning>
306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>391 `github.com` などの広いドメインを許可すると、データ流出のパスが作成される可能性があります。プロキシは TLS を検査せずにクライアント提供のホスト名から許可決定を行うため、サンドボックス内で実行されるコードは [ドメインフロンティング](https://en.wikipedia.org/wiki/Domain_fronting)または同様の技術を使用して許可リスト外のホストに到達する可能性があります。脅威モデルがより強力な保証を必要とする場合は、TLS を終了してトラフィックを検査し、CA 証明書をサンドボックス内にインストールする [カスタムプロキシ](#custom-proxy-configuration)を設定してください。より強力な TLS 対応ネットワーク分離は開発の活発な領域です。
307```392</Warning>
308 393
309実装の詳細とソースコードについては、[GitHub リポジトリ](https://github.com/anthropic-experimental/sandbox-runtime) を参照してください。394* **Unix ソケットを通じた権限昇格**:`allowUnixSockets` 設定は、サンドボックスバイパスにつながる可能性のある強力なシステムサービスへのアクセスを不注意に付与する可能性があります。たとえば、`/var/run/docker.sock` へのアクセスを許可すると、Docker ソケットを通じてホストシステムへのアクセスが効果的に付与されます。サンドボックスを通じて許可する Unix ソケットを慎重に検討してください。
395* **ファイルシステム許可昇格**:過度に広いファイルシステム書き込み許可は権限昇格攻撃を有効にする可能性があります。`$PATH` の実行可能ファイルを含むディレクトリ、システム設定ディレクトリ、またはユーザーシェル設定ファイル(`.bashrc` または `.zshrc`)への書き込みを許可すると、他のユーザーまたはシステムプロセスがこれらのファイルにアクセスするときに異なるセキュリティコンテキストでコード実行につながる可能性があります。
396* **Linux サンドボックス強度**:Linux 実装は強力なファイルシステムとネットワーク分離を提供しますが、特権のない名前空間なしで Docker 環境内で動作できるようにする `enableWeakerNestedSandbox` モードが含まれています。このオプションはセキュリティを大幅に弱め、追加の分離が別の方法で実施される場合にのみ使用する必要があります。
397* **設定ファイルが保護されている**:サンドボックスは自動的に Claude Code の `settings.json` ファイルのすべてのスコープと管理設定ディレクトリへの書き込みアクセスを拒否するため、サンドボックス化されたコマンドは独自のポリシーを変更できません。
310 398
311## 制限事項399<h3 id="platform-and-tool-compatibility">
400 プラットフォームとツールの互換性
401</h3>
312 402
313* **パフォーマンスオーバーヘッド**:最小限ですが、一部のファイルシステム操作はわずかに遅くなる可能性があります403* **プラットフォームサポート**:macOS、Linux、WSL2 をサポートします。WSL1 とネイティブ Windows はサポートされていません。
314* **互換性**:特定のシステムアクセスパターンを必要とするツールの中には、設定調整が必要な場合や、サンドボックス外で実行する必要がある場合があります404* **パフォーマンスオーバーヘッド**:最小限ですが、一部のファイルシステム操作はわずかに遅くなる可能性があります。
315* **プラットフォームサポート**:macOS、Linux、WSL2 をサポートします。WSL1 はサポートされていません。ネイティブ Windows サポートは計画中です。405* **ツール互換性**:特定のシステムアクセスパターンを必要とするツールの中には、設定調整が必要な場合や、サンドボックス外で実行する必要がある場合があります。
316 406
317## サンドボックス化がカバーしていないもの407<h3 id="scope">
408 スコープ
409</h3>
318 410
319サンドボックスは Bash サブプロセスを分離します。他のツールは異なる境界の下で動作します。411サンドボックスは Bash サブプロセスを分離します。他のツールは異なる境界の下で動作します。
320 412
321* **組み込みファイルツール**:Read、Edit、Write はサンドボックスを通じて実行するのではなく、許可システムを直接使用します。[許可](/ja/permissions) を参照してください。413* **組み込みファイルツール**:Read、Edit、Write はサンドボックスを通じて実行するのではなく、許可システムを直接使用します。[permissions](/ja/permissions) を参照してください。
322* **コンピュータ使用**:Claude が macOS でアプリを開いてスクリーンを制御する場合、分離された環境ではなく実際のデスクトップで実行されます。アプリごとの許可プロンプトが各アプリケーションをゲートします。[CLI でのコンピュータ使用](/ja/computer-use) または [Desktop でのコンピュータ使用](/ja/desktop#let-claude-use-your-computer) を参照してください。414* **コンピュータ使用**:Claude がアプリを開いてスクリーンを制御する場合、分離された環境ではなく実際のデスクトップで実行されます。アプリごとの許可プロンプトが各アプリケーションをゲートします。[CLI でのコンピュータ使用](/ja/computer-use)または [Desktop でのコンピュータ使用](/ja/desktop#let-claude-use-your-computer)を参照してください。
415* **環境変数**:サンドボックス化された Bash コマンドはデフォルトで親プロセス環境を継承します。そこに設定されたすべての認証情報を含みます。サブプロセスから Anthropic とクラウドプロバイダーの認証情報を削除するには、[`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/ja/env-vars)を設定してください。
416* **サブエージェント**:[subagents](/ja/sub-agents)は親セッションと同じプロセスで実行され、同じサンドボックス設定を使用します。親セッションでサンドボックス化が有効な場合、サブエージェント内の Bash コマンドはサンドボックス化されます。
417
418<Warning>
419 効果的なサンドボックス化にはファイルシステムとネットワークの両方の分離が必要です。ネットワーク分離がない場合、侵害されたエージェントは SSH キーなどの機密ファイルを流出させる可能性があります。ファイルシステム分離がない場合、侵害されたエージェントはシステムリソースにバックドアを仕掛けてネットワークアクセスを取得する可能性があります。デフォルトを広げるときは、`allowWrite` パス、広い `allowedDomains` エントリ、または `excludedCommands` 例外が反対側の制限を元に戻さないことを確認してください。
420</Warning>
323 421
324## 関連項目422<h2 id="see-also">
423 関連項目
424</h2>
325 425
326* [Security](/ja/security) - 包括的なセキュリティ機能とベストプラクティス426* [Sandbox environments](/ja/sandbox-environments):組み込みサンドボックスと dev コンテナ、コンテナ、VM を比較する
327* [Permissions](/ja/permissions) - 許可設定とアクセス制御427* [Security](/ja/security):包括的なセキュリティ機能とベストプラクティス
328* [Settings](/ja/settings) - 完全な設定リファレンス428* [Permissions](/ja/permissions):許可設定とアクセス制御
329* [CLI reference](/ja/cli-reference) - コマンドラインオプション429* [Settings](/ja/settings):完全な設定リファレンス
430* [CLI reference](/ja/cli-reference):コマンドラインオプション