sandbox.json リファレンス
sandbox.json ファイルでサンドボックスの挙動を設定し、ネットワークアクセスやファイルシステムパスなどを制御します。
ファイルの配置場所
sandbox.json は、以下のいずれか、または両方の場所に配置します。
| 場所 | 適用範囲 | 優先度 |
|---|---|---|
~/.cursor/sandbox.json | すべてのワークスペース (ユーザーごと) | 低 |
<workspace>/.cursor/sandbox.json | 単一のワークスペース (リポジトリごと) | 高 |
どちらのファイルも省略可能です。両方存在する場合はマージされ、リポジトリごとの設定が優先されます。エンタープライズ チームの チーム管理者 ポリシーと Cherri Code にハードコードされたセキュリティ ルールは、これらの設定に追加で適用され、どちらのファイルでも緩和できません。
トップレベルのフィールド
すべてのフィールドは省略可能です。省略したフィールドには、以下のデフォルト値が使用されます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
type | string | "workspace_readwrite" | サンドボックスモード。"workspace_readwrite" では、ワークスペースへの読み取り・書き込み権限が付与されます。"workspace_readonly" では参照専用に制限されます。"insecure_none" ではサンドボックスが完全に無効になります。 |
additionalReadwritePaths | string[] | [] | エージェントが読み取り・書き込みできる追加のパス。type が "workspace_readwrite" の場合にのみ適用されます。 |
additionalReadonlyPaths | string[] | [] | エージェントが読み取りできる追加のパス。 |
disableTmpWrite | boolean | false | true の場合、/tmp およびシステムの一時ディレクトリに対するデフォルトの書き込み権限を削除します。 |
enableSharedBuildCache | boolean | false | ビルドツールのキャッシュ (npm、cargo、pip など) を共有 tmpdir にリダイレクトし、サンドボックス内外で実行されるコマンドが同じキャッシュを共有できるようにします。 |
networkPolicy オブジェクト
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
default | "allow" | "deny" | "deny" |
allow | string[] | [] | 許可するパターン。完全一致のドメイン、ワイルドカード、CIDR 表記をサポートします。 |
deny | string[] | [] | 拒否するパターン。最優先で適用され、同じパターンが allow にも含まれている場合でも常にブロックします。 |
ネットワークのパターン構文
allow および deny 配列では、次の 3 種類のパターン形式を指定できます。
| 形式 | 例 | 一致対象 |
|---|---|---|
| 完全一致のドメイン | "registry.npmjs.org" | そのホストのみ |
| ワイルドカード | "*.example.com" | example.com 自体を含む、example.com のすべてのサブドメイン |
| CIDR | "10.0.0.0/8" | その範囲内のすべての IP |
主なルール:
denyは常にallowより優先されます。ホストが両方のリストに一致する場合はブロックされます。- SSRF を防ぐため、プライベート/RFC 1918 アドレス (
10.x、172.16.x、192.168.x、127.x) とクラウドメタデータエンドポイント (169.254.169.254) はデフォルトでブロックされます。 - IPv6 のプライベートアドレス (
::1、fe80::/10、fc00::/7) もブロックされます。 - URL パスは無視され、一致判定はドメインまたは IP のみで行われます。
ポリシーのマージ方法
複数のポリシーソースがある場合、優先順位に従ってマージされます。
ユーザーごと < リポジトリごと < チーム管理者 < ハードコード済み(最低) (最高)マージルール:
- パス (
additionalReadwritePaths,additionalReadonlyPaths): すべてのソースの値を統合します。 - ネットワーク許可リスト: チーム管理者の許可リストがある場合を除き、統合します (ある場合は統合結果を置き換えます) 。
- ネットワーク拒否リスト: 常に統合します。
networkPolicy.default:"allow"より"deny"が優先されます。- 制限的なブール値 (
disableTmpWrite,networkPolicyStrict):trueが優先されます。
保護されたパス
sandbox.json の設定にかかわらず、以下のパスは常に書き込みが保護されます。
.cursor/*.json,.cursor/**/*.json,.cursor/.workspace-trusted.claude/*.json,.claude/**/*.json.vscode/**.code-workspace.git/hooks/**,.git/config,.git/info/attributes.cursorignore
以下の .cursor サブディレクトリは書き込み可能です: rules/, commands/, worktrees/, skills/, agents/。
SSL 証明書のパスと ~/.ssh は常に読み取り可能です。
環境変数
上記の設定に加えて、Cherri Code は CURSOR_SANDBOX、CURSOR_ORIG_UID、CURSOR_ORIG_GID などの環境変数をサンドボックス内の子プロセスに注入します。完全な一覧と使用方法については、実行モード: 環境変数を参照してください。
例
特定のドメインを許可する
{ "networkPolicy": { "default": "deny", "allow": [ "registry.npmjs.org", "pypi.org", "*.githubusercontent.com" ] }}ネットワークトラフィックはデフォルトで拒否されます。アクセスできるのは、リストにあるドメインのみです。
すべてのネットワークを許可
{ "networkPolicy": { "default": "allow" }}サンドボックス内では、すべてのアウトバウンドネットワーク通信が許可されます。
フルスタックWebプロジェクト
エージェントがパッケージをインストールし、コンテナイメージをプルし、ローカルネットワーク上のデータベースにアクセスし、共有のdesign-tokensリポジトリを読み取る必要があるプロジェクト:
{ "networkPolicy": { "default": "deny", "allow": [ "registry.npmjs.org", "registry.yarnpkg.com", "pypi.org", "files.pythonhosted.org", "*.docker.io", "ghcr.io", "*.googleapis.com" ], "deny": [ "*.internal.corp.example.com" ] }, "additionalReadwritePaths": [ "/home/me/.docker" ], "additionalReadonlyPaths": [ "/opt/shared/design-tokens" ], "enableSharedBuildCache": true}この設定では、エージェントは次のことができます。
- npm/pip パッケージをインストールし、Docker イメージを取得する。
- Google Cloud API にアクセスする。
- 社内サービスへのアクセスをブロックする。
- コンテナ操作のために
~/.dockerに書き込む。 - 共有の design-tokens ディレクトリを読み取る (変更は不可) 。
- サンドボックス環境と非サンドボックス環境の実行間で npm/pip/cargo のキャッシュを共有する。