Cortex Code CLIサンドボックス

Cortex Code CLIは、サンドボックス内でシェルコマンドを実行し、ファイルシステムアクセス、ネットワークアクセス、プロセス機能を制限できます。サンドボックスは分離層を追加し、エージェントが誤ってファイルを変更したり、プロジェクト外のリソースにアクセスしたりすることを防ぎます。

重要

この機能のサポートは試験的なものであり、変更される可能性があります。

プラットフォームのサポート

サンドボックスは、オペレーティングシステムの組み込み分離機能を使用してコマンドを制限します。

プラットフォーム

実装

依存関係

macOS

``sandbox-exec``(組み込み)

ripgrep

Linux

bubblewrap

bubblewrapsocat、および ripgrep

Windows

ネイティブ制限トークン

なし

依存関係のインストール

macOS:

brew install ripgrep

Debian/Ubuntu:

sudo apt-get install bubblewrap socat ripgrep

Fedora/RHEL:

sudo dnf install bubblewrap socat ripgrep

サンドボックスの有効化

Cortex Code CLIで``/sandbox``スラッシュコマンドを使用します。

/sandbox                          # Interactive selector
/sandbox runtime on               # Enable sandbox
/sandbox runtime off              # Disable sandbox
/sandbox runtime status           # Show sandbox status
/sandbox status                   # Show current sandbox status

設定ファイルでサンドボックスを有効にすることもできます。~/.snowflake/cortex/settings.json``(ユーザーレベル)または.snowflake/cortex/settings.json``(プロジェクトレベル)に``sandbox``オブジェクトを追加します。

{
  "sandbox": {
    "enabled": true
  }
}

デフォルトの権限モードは``"regular"です。自動許可モードを使用するには、"mode": "autoAllow"``を明示的に設定します。権限モード をご参照ください。

権限モード

サンドボックスには、コマンドの承認方法を制御する2つの権限モードがあります。

モード

設定値

動作

自動許可

"autoAllow"

サンドボックス化できるコマンドは、プロンプトなしで自動的に実行されます。サンドボックス化できないコマンド(例:許可されていないドメインへのネットワークアクセスを必要とするコマンド)は、通常の権限フローにフォールバックします。

通常

"regular"

サンドボックス内で実行されている場合でも、すべてのコマンドは承認を求めます。

``/sandbox``コマンドを使用するか設定でモードを設定します。

/sandbox mode auto                # Set auto-allow mode
/sandbox mode regular             # Set regular mode

ファイルシステムの制限

サンドボックスは、コマンドが読み取りおよび書き込みできるパスを制御します。

デフォルトの動作

  • 作業ディレクトリ:読み取りと書き込みが常に許可されます。

  • **スキルディレクトリ**(~/.snowflake/cortex/skills):許可されます。

  • **コンテキストディレクトリ**(~/.snowflake/cortex/.ctx):``ctxAvailable``が有効な場合に許可されます。

保護されたパス(常に書き込み拒否)

構成に関係なく、次のパスは常に保護されます。

  • シェル構成ファイル:~/.bashrc~/.bash_profile~/.zshrc~/.zprofile~/.profile~/.bash_login~/.bash_logout

  • Gitフック:~/.git/hooks.git/hooks

  • SSH構成:~/.ssh/authorized_keys~/.ssh/config

  • 管理設定ディレクトリとファイル:/Library/Application Support/Cortex/``(macOS)、/etc/cortex/``(Linux)、``%ProgramData%Cortex``(Windows)

カスタムファイルシステムルール

設定でファイルシステムへのアクセスを構成します。

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowRead": [],
      "denyRead": ["/private/secrets"],
      "allowWrite": ["/tmp", "~/projects"],
      "denyWrite": ["/etc", "/var"]
    }
  }
}

設定

デフォルト

説明

allowRead

``[]``(すべてを許可)

サンドボックスが読み取ることができるパス。空の配列は、すべてのパスが許可されることを意味します(``denyRead``内のパスを除く)。

denyRead

[]

サンドボックスが読み取れないパス。``allowRead``よりも優先されます。

allowWrite

``[]``(作業ディレクトリのみ)

サンドボックスが書き込めるパス。

denyWrite

[]

サンドボックスが書き込めないパス。``allowWrite``よりも優先されます。

重要

拒否ルールは、常に許可ルールよりも優先されます。パスが``allowWrite``と``denyWrite``の両方に一致する場合、パスは拒否されます。

ネットワークの制限

サンドボックスは、コマンドがネットワークを介してアクセスできるドメインを制限できます。

{
  "sandbox": {
    "enabled": true,
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],
      "deniedDomains": ["*.internal.company.com"],
      "allowLocalBinding": false
    }
  }
}

設定

デフォルト

説明

allowedDomains

``[]``(すべてを許可)

サンドボックスがアクセスできるドメイン。空の配列は、すべてのドメインが許可されることを意味します(deniedDomains``のドメインを除く)。ワイルドカード(``*.example.com)をサポートします。

deniedDomains

[]

サンドボックスがアクセスできないドメイン。``allowedDomains``よりも優先されます。ワイルドカードをサポートします。

allowLocalBinding

false

サンドボックス化されたコマンドがローカルポートにバインドできるかどうか。

サンドボックス化されていないコマンドのフォールバック

一部のコマンドはサンドボックスと互換性がない場合があります。``allowUnsandboxedCommands``設定は、コマンドがサンドボックス内で実行できない場合の動作を制御します。

設定

動作

true (デフォルト)

エージェントはホスト上でコマンドを実行するようにリクエストできます。承認を求められます。

false

コマンドはサンドボックス内で実行するか、``excludedCommands``に記載されている必要があります。どちらにも当てはまらない場合、コマンドは失敗します。

除外されるコマンド

常にサンドボックス外のホスト上で実行するコマンドを指定できます。

{
  "sandbox": {
    "enabled": true,
    "allowUnsandboxedCommands": true,
    "excludedCommands": ["docker", "kubectl"]
  }
}

除外されたコマンドはサンドボックスをバイパスし、通常の権限フローに従います。

設定の参照

完全な``sandbox``設定オブジェクト:

{
  "sandbox": {
    "enabled": false,
    "mode": "regular",
    "allowUnsandboxedCommands": true,
    "excludedCommands": [],
    "permissions": {
      "allow": [],
      "deny": []
    },
    "network": {
      "allowedDomains": [],
      "deniedDomains": [],
      "allowLocalBinding": false
    },
    "filesystem": {
      "allowRead": [],
      "denyRead": [],
      "allowWrite": [],
      "denyWrite": []
    },
    "ctxAvailable": true
  }
}

設定

デフォルト

説明

enabled

false

サンドボックスを有効または無効にします。

mode

"regular"

権限モード:"regular"``または"autoAllow"``

allowUnsandboxedCommands

true

コマンドをサンドボックス化できない場合に、ホスト実行へのフォールバックを許可します。

excludedCommands

[]

常にサンドボックス外のホスト上で実行されるコマンド。

permissions.allow

[]

高レベルの権限の許可ルール。WebFetch(domain:example.com)Edit(path)Read(path)``Bash(command)``などのパターンをサポートします。

permissions.deny

[]

高レベルの権限の拒否ルール。``permissions.allow``と同じパターン構文。許可ルールよりも優先されます。

network.allowedDomains

[]

ネットワークドメインの許可リスト(空 = すべて許可)。ワイルドカードをサポートします。

network.deniedDomains

[]

ネットワークドメインの拒否リスト。許可リストよりも優先されます。

network.allowLocalBinding

false

サンドボックス化されたコマンドがローカルポートにバインドすることを許可します。

filesystem.allowRead

[]

読み取りの許可リスト(空 = 拒否以外のすべてを許可)。

filesystem.denyRead

[]

読み取りの拒否リスト。優先されます。

filesystem.allowWrite

[]

書き込みの許可リスト。

filesystem.denyWrite

[]

書き込みの拒否リスト。優先されます。

ctxAvailable

true

会話のコンテキストとセッションデータの保存に使用されるコンテキストディレクトリ(~/.snowflake/cortex/.ctx)へのサンドボックスアクセスを許可します。

構成スコープ

サンドボックスの設定は、他のCortex Codeの設定と同じ優先順位に従います。

  1. **プロジェクトレベル**(最優先):.snowflake/cortex/settings.json

  2. ユーザーレベル~/.snowflake/cortex/settings.json

  3. 管理/適用:管理者は、管理設定ファイルを介してサンドボックスポリシーを適用できます。管理設定(組織ポリシー) をご参照ください。