コンテンツにスキップ

OpenClawのSandbox・Tool Policy・Elevated設定を完全解説

開発中に「なぜかツールが動かない」「意図せずサンドボックスに閉じ込められてしまう」といった問題に直面したことはありませんか?OpenClawのセキュリティと実行環境の制御は非常に強力ですが、設定が複雑になりがちで、どこで制限がかかっているのか把握するのが難しいことがあります。

この記事では、OpenClawのSandbox、Tool policy、Elevatedという3つの主要な制御機能について、それぞれの役割とデバッグ方法を分かりやすく解説します。

まずは、OpenClawが現在どのような状態で動作しているのか、インスペクターを使って確認しましょう。以下のコマンドを実行することで、現在のサンドボックス設定や有効なツールポリシーを即座に把握できます。

  1. ターミナルで以下のコマンドを実行します。
Terminal window
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json

このコマンドは、以下の情報を出力してくれます。

  • 有効なサンドボックスモード、スコープ、ワークスペースへのアクセス権
  • 現在のセッションがサンドボックス化されているかどうか(mainかnon-mainか)
  • 有効なサンドボックスツールの許可/拒否設定(エージェント、グローバル、デフォルトのどこから適用されているか)
  • Elevatedゲートおよび修正用のキーパス

Sandbox:ツールがどこで実行されるか

Section titled “Sandbox:ツールがどこで実行されるか”

サンドボックス化の挙動は、agents.defaults.sandbox.modeによって制御されます。

  • "off": すべての処理がホスト上で実行されます。
  • "non-main": メインセッション以外のみがサンドボックス化されます(グループやチャンネルでよくある「予期せぬ制限」の原因です)。
  • "all": すべての処理がサンドボックス化されます。

詳細なマトリックス(スコープ、ワークスペースのマウント、イメージなど)については、Sandboxingを参照してください。

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

Section titled “バインドマウント(セキュリティのクイックチェック)”
  1. Dockerのdocker.bindsはサンドボックスのファイルシステムを貫通します。マウントしたものはコンテナ内から指定したモード(:roまたは:rw)で見えます。
  2. モードを省略した場合はデフォルトで読み書き可能になりますが、ソースコードや秘密情報には:ro(読み取り専用)を推奨します。
  3. scope: "shared"の場合、エージェントごとのバインドは無視され、グローバルなバインドのみが適用されます。
  4. OpenClawはバインドソースを二重に検証します。シンボリックリンクを経由したパスの脱出は、ブロックされたパスや許可されていないルートのチェックを回避できません。
  5. 存在しないリーフパスも安全にチェックされます。シンボリックリンクされた親ディレクトリを経由してブロックされたパスや許可外のルートに解決される場合、バインドは拒否されます。
  6. /var/run/docker.sockをバインドすると、サンドボックスにホストの制御権を渡すことになります。これは意図的に行う場合のみにしてください。
  7. ワークスペースへのアクセス(workspaceAccess: "ro"/"rw")は、バインドモードとは独立しています。

Tool policy:どのツールが存在し、呼び出せるか

Section titled “Tool policy:どのツールが存在し、呼び出せるか”

ツールポリシーは複数の階層で管理されており、以下のルールが重要です。

  • Tool profile: tools.profileおよびagents.list[].tools.profile(ベースとなる許可リスト)
  • Provider tool profile: tools.byProvider[provider].profileおよびagents.list[].tools.byProvider[provider].profile
  • Global/per-agent tool policy: tools.allow/tools.denyおよびagents.list[].tools.allow/agents.list[].tools.deny
  • Provider tool policy: tools.byProvider[provider].allow/denyおよびagents.list[].tools.byProvider[provider].allow/deny
  • Sandbox tool policy(サンドボックス時のみ適用): tools.sandbox.tools.allow/tools.sandbox.tools.denyおよびagents.list[].tools.sandbox.tools.*

ヒント:

  • deny(拒否)が常に優先されます。
  • allow(許可)が空でない場合、それ以外のツールはすべてブロックされます。
  • ツールポリシーは最終的な防壁です。/execコマンドで拒否されたツールを上書きすることはできません。
  • /execは承認された送信者に対してセッションのデフォルトを変更するだけであり、ツールへのアクセス権を付与するものではありません。プロバイダーのツールキーには、provider(例: google-antigravity)またはprovider/model(例: openai/gpt-5.4)のいずれかを指定できます。

ツールポリシー(グローバル、エージェント、サンドボックス)では、複数のツールをまとめて指定できるgroup:*エントリーをサポートしています。

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

利用可能なグループは以下の通りです。

  • group:runtime: exec, process, code_execution (bashはexecのエイリアスとして受け入れられます)
  • group:fs: read, write, edit, apply_patch
  • group:sessions: sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status
  • group:memory: memory_search, memory_get
  • group:web: web_search, x_search, web_fetch
  • group:ui: browser, canvas
  • group:automation: cron, gateway
  • group:messaging: message
  • group:nodes: nodes
  • group:agents: agents_list
  • group:media: image, image_generate, video_generate, tts
  • group:openclaw: すべての組み込みOpenClawツール(プロバイダープラグインは除外)

Elevated:ホスト上で実行する「exec専用」モード

Section titled “Elevated:ホスト上で実行する「exec専用」モード”

Elevatedは追加のツール権限を付与するものではなく、execの実行場所にのみ影響します。

  • サンドボックス環境下で/elevated on(またはelevated: trueを指定したexec)を実行すると、サンドボックスの外側で実行されます(承認が必要な場合があります)。
  • /elevated fullを使用すると、そのセッションのexec承認をスキップできます。
  • すでに直接実行されている場合、Elevatedは実質的に何もしません(依然としてゲートの対象です)。
  • Elevatedはスキルスコープではなく、ツールの許可/拒否を上書きしません。
  • Elevatedはhost=autoからの任意のクロスホスト上書きを許可しません。通常のexecターゲットルールに従い、設定済みまたはセッションのターゲットがすでにnodeである場合のみnodeを維持します。
  • /execはElevatedとは別物です。これは承認された送信者に対して、セッションごとのexecデフォルトを調整するだけです。

ゲート設定:

  • 有効化: tools.elevated.enabled(およびオプションでagents.list[].tools.elevated.enabled)
  • 送信者の許可リスト: tools.elevated.allowFrom.<provider>(およびオプションでagents.list[].tools.elevated.allowFrom.<provider>)

詳細はElevated Modeを参照してください。

サンドボックスのトラブルシューティング

Section titled “サンドボックスのトラブルシューティング”

「Tool X blocked by sandbox tool policy」と表示される場合

Section titled “「Tool X blocked by sandbox tool policy」と表示される場合”

以下のいずれかの修正キーを試してください。

  1. サンドボックスを無効にする: agents.defaults.sandbox.mode=off(またはエージェント単位でagents.list[].sandbox.mode=off)
  2. サンドボックス内でツールを許可する:
    • tools.sandbox.tools.deny(またはエージェント単位でagents.list[].tools.sandbox.tools.deny)から削除する
    • または、tools.sandbox.tools.allow(またはエージェント単位の許可リスト)に追加する

「メインセッションだと思っていたのに、なぜサンドボックス化されているのか?」

Section titled “「メインセッションだと思っていたのに、なぜサンドボックス化されているのか?」”

"non-main"モードでは、グループやチャンネルのキーはメインセッションとして扱われません。sandbox explainで表示されるメインセッションキーを使用するか、モードを"off"に切り替えてください。

さらにサポートが必要な場合は、AI Setup Assistantをご利用ください。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。