OpenClawSkills
GitHub
Gateway / Operations • 5分で読める

サンドボックス、ツールポリシー、およびエレベート

ツールがブロックされる理由:サンドボックスランタイム、ツール許可/拒否ポリシー、エレベート実行ゲート

OpenClaw には関連する(しかし異なる)3 つのコントロールがあります:

1. ''サンドボックス'' (''agents.defaults.sandbox.*'' / ''agents.list[].sandbox.*'') は''ツールが実行される場所''(Docker とホスト)を決定します。

2. ''ツールポリシー''(''tools.*''、''tools.sandbox.tools.*''、''agents.list[].tools.*'')は''どのツールが利用可能/許可されているか''を決定します。

3. ''エレベート'' (''tools.elevated.*'', ''agents.list[].tools.elevated.*'') は、サンドボックス化されているときにホストで実行するための''実行専用エスケープハッチ''です。

Tutorial.step

クイックデバッグ

インスペクターを使用して、OpenClaw が実際に何をしているかを確認します:

Bash
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json

以下が出力されます:

- 有効なサンドボックスモード/スコープ/ワークスペースアクセス

- セッションが現在サンドボックス化されているかどうか(メインと非メイン)

- 有効なサンドボックステツール許可/拒否(およびエージェント/グローバル/デフォルトのどれからか)

- エレベートゲートと修復キーパス

Tutorial.step

サンドボックス:ツールが実行される場所

サンドボックス化は ''agents.defaults.sandbox.mode'' で制御されます:

- ''"off"'':すべてがホストで実行されます。

- ''"non-main"'':非メインセッションのみがサンドボックス化されます(グループ/チャネルでの一般的な"驚き")。

- ''"all"'':すべてがサンドボックス化されます。

完全な行列(スコープ、ワークスペースマウント、イメージ)については、''サンドボックス化''を参照してください。

#

Tutorial.step

バインドマウント(セキュリティクイックチェック)

- ''docker.binds'' はサンドボックスファイルシステムを貫通します:マウントしたものは、設定したモード('':ro'' または '':rw'')でコンテナ内に表示されます。

- モードを省略すると、デフォルトで読み書きになります。ソース/シークレットには '':ro'' を優先します。

- ''scope: "shared"'' はエージェントごとのバインドを無視します(グローバルバインドのみ適用されます)。

- ''/var/run/docker.sock'' をバインドすると、実質的にホスト制御がサンドボックスに渡されます。意図的に行ってください。

- ワークスペースアクセス(''workspaceAccess: "ro"''/''"rw"'')はバインドモードとは無関係です。

Tutorial.step

ツールポリシー:どのツールが存在/呼び出し可能か

2 つのレイヤーが重要です:

- ''ツールプロファイル'':''tools.profile'' と ''agents.list[].tools.profile''(基本許可リスト)

- ''プロバイダーツールプロファイル'':''tools.byProvider[provider].profile'' と ''agents.list[].tools.byProvider[provider].profile''

- ''グローバル/エージェントごとのツールポリシー'':''tools.allow''/''tools.deny'' と ''agents.list[].tools.allow''/''agents.list[].tools.deny''

- ''プロバイダーツールポリシー'':''tools.byProvider[provider].allow/deny'' と ''agents.list[].tools.byProvider[provider].allow/deny''

- ''サンドボックステツールポリシー''(サンドボックス化されている場合のみ適用):''tools.sandbox.tools.allow''/''tools.sandbox.tools.deny'' と ''agents.list[].tools.sandbox.tools.*''

Rules of thumb:

- ''deny'' は常に勝ちます。

- ''allow'' が空でない場合、他のすべてはブロックされたと見なされます。

- ツールポリシーはハードストップです:''/exec'' は拒否された ''exec'' ツールを上書きできません。

- ''/exec'' は認証された送信者のセッションデフォルトのみを変更します。ツールアクセスを付与しません。

- プロバイダーツールキーは ''provider''(例:''google-antigravity'')または ''provider/model''(例:''openai/gpt-5.2'')を受け入れます。

#

Tutorial.step

ツールグループ(短縮形)

ツールポリシー(グローバル、エージェント、サンドボックス)は、複数のツールに展開される ''group:*'' エントリをサポートします:

Json5
{
  tools: {
    sandbox: {
      tools: {
        allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
      },
    },
  },
}

利用可能なグループ:

- ''group:runtime'':''exec''、''bash''、''process''

- ''group:fs'':''read''、''write''、''edit''、''apply_patch''

- ''group:sessions'':''sessions_list''、''sessions_history''、''sessions_send''、''sessions_spawn''、''session_status''

- ''group:memory'':''memory_search''、''memory_get''

- ''group:ui'':''browser''、''canvas''

- ''group:automation'':''cron''、''gateway''

- ''group:messaging'':''message''

- ''group:nodes'':''nodes''

- ''group:openclaw'':すべての組み込み OpenClaw ツール(プロバイダープラグインを除く)

Tutorial.step

エレベート:実行専用「ホストで実行」

エレベートは追加のツールを付与しません。''exec'' にのみ影響します。

- サンドボックス化されている場合、''/elevated on''(または ''exec'' と ''elevated: true'')はホストで実行されます(承認がまだ適用される場合があります)。

- ''/elevated full'' を使用して、セッションの実行承認をスキップします。

- すでに直接実行している場合、エレベートは実質的に無操作です(まだゲートされています)。

- エレベートはスキルスコープの下にならず、ツール許可/拒否を上書きしません。

- ''/exec'' はエレベートとは別です。認証された送信者のセッションごとの実行デフォルトのみを調整します。

ゲート:

- 有効化:''tools.elevated.enabled''(およびオプションで ''agents.list[].tools.elevated.enabled'')

- 送信者ホワイトリスト:''tools.elevated.allowFrom.<provider>''(およびオプションで ''agents.list[].tools.elevated.allowFrom.<provider>'')

''エレベートモード''を参照してください。

Tutorial.step

一般的な「サンドボックス刑務所」の修復

#

Tutorial.step

「ツール X がサンドボックステツールポリシーによってブロックされました」

修復キー(1 つ選択):

- サンドボックスを無効にする:''agents.defaults.sandbox.mode=off''(またはエージェントごとに ''agents.list[].sandbox.mode=off'')

- ツールをサンドボックスに許可する:

- ''tools.sandbox.tools.deny''(またはエージェントごとに ''agents.list[].tools.sandbox.tools.deny'')から削除します

- または ''tools.sandbox.tools.allow''(またはエージェントごとの許可)に追加します

#

Tutorial.step

「これはメインだと思っていましたが、なぜサンドボックス化されているのですか?」

''"non-main"'' モードでは、グループ/チャネルキーはメインではありません。''sandbox explain'' によって表示されるメインセッションキーを使用するか、モードを ''"off"'' に切り替えます。