- サンドボックス (
agents.defaults.sandbox.*/agents.list[].sandbox.*): ツールを どこで実行するか(Docker コンテナ内か、ホスト上か)を決定します。 - ツールポリシー (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*): どのツールが利用可能 / 許可されるか を決定します。 - 昇格 (Elevated) (
tools.elevated.*,agents.list[].tools.elevated.*): サンドボックス環境から ホスト上で直接実行するための、exec ツール専用のエスケープハッチ(脱出口) です。
クイックデバッグ
インスペクター(調査ツール)を使用して、OpenClaw が実際にどのように判断しているかを確認できます:- 適用されているサンドボックスモード / スコープ / ワークスペースへのアクセス権。
- 現在のセッションがサンドボックス化されているかどうか(メインか非メインか)。
- 適用されているサンドボックスツールの許可 / 拒否状態(エージェント設定、グローバル設定、デフォルトのどこに由来するか)。
- 昇格用ゲートの状態と、修正すべき構成キーのパス。
サンドボックス: ツールの実行場所
サンドボックス化はagents.defaults.sandbox.mode によって制御されます:
"off": すべてがホスト上で実行されます。"non-main": 非メイン(non-main)セッションのみがサンドボックス化されます。グループチャットやチャネル経由の通信で「なぜか制限されている」と感じる場合の多くはこれが原因です。"all": すべてのセッションがサンドボックス内で実行されます。
バインドマウントに関するセキュリティ上の注意
docker.bindsは、サンドボックスのファイルシステムを 貫通(pierce) させます。マウントしたディレクトリは、指定したモード(:roまたは:rw)でコンテナ内から見えてしまいます。- モードを省略した場合はデフォルトで読み書き可能(read-write)となります。ソースコードやシークレット情報をマウントする場合は
:ro(読み取り専用)を推奨します。 scope: "shared"の場合、エージェントごとの個別のバインド設定は無視されます(グローバル設定のみが適用されます)。/var/run/docker.sockをバインドすると、サンドボックス内からホストの Docker 制御が可能になります。意図的な場合を除き、行わないでください。- ワークスペースへのアクセス設定 (
workspaceAccess: "ro"/"rw") は、このバインドマウント設定とは独立して機能します。
ツールポリシー: ツールの存在と呼び出し可否
以下の 2 つのレイヤーが重要です:- ツールプロファイル:
tools.profileおよびagents.list[].tools.profile(基本となる許可リスト)。 - プロバイダー別ツールプロファイル:
tools.byProvider[provider].profileなど。 - グローバル / エージェント別ポリシー:
tools.allow/tools.denyおよびagents.list[].tools.allow/deny。 - プロバイダー別ポリシー:
tools.byProvider[provider].allow/deny。 - サンドボックス内ツールポリシー (サンドボックス実行時のみ適用):
tools.sandbox.tools.allow/denyおよびagents.list[].tools.sandbox.tools.*。
deny(拒否)が常に優先されます。allow(許可)リストが空でない場合、そこに記載されていないツールはすべてブロックされます。- ツールポリシーは「絶対的な停止」を意味します。
/execコマンドで設定を変えても、ポリシーで拒否されているexecツールを動かすことはできません。 /execは、認可された送信者に対して「セッション内でのデフォルト挙動」を変更するだけであり、ツールの実行権限そのものを与えるものではありません。- プロバイダー指定のキーには、
provider(例:google-antigravity)またはprovider/model(例:openai/gpt-5.2)のいずれかを使用できます。
ツールグループ (短縮記法)
ツールポリシー(グローバル、エージェント、サンドボックス)では、複数のツールをまとめて指定できるgroup:* 形式をサポートしています:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: すべての組み込みツール(外部プロバイダープラグインを除く)
昇格 (Elevated): exec ツールのみ「ホストで実行」
昇格(Elevated)は、追加のツールを使えるようにするものではなく、あくまでexec の実行場所にのみ影響します。
- サンドボックス化されている場合、
/elevated on(またはexec時にelevated: trueを指定)することで、そのコマンドをホスト上で実行できます(承認ステップが必要な場合は引き続き適用されます)。 /elevated fullを使用すると、そのセッションにおいてexecの承認ステップもスキップします。- 最初からホスト上で直接ツールを動かしている(サンドボックスオフ)場合、昇格設定は実質的に何もしません(ただしゲートのチェックは行われます)。
- 昇格は スキル(skill)のスコープ内には収まりません。また、ツールポリシーの許可/拒否を上書きすることもありません。
/execは昇格とは別の設定です。認可された送信者からのセッションごとのexecのデフォルト設定を調整するだけのものです。
- 有効化設定:
tools.elevated.enabled(およびオプションでagents.list[].tools.elevated.enabled)。 - 送信者許可リスト:
tools.elevated.allowFrom.<provider>(およびオプションでエージェント別設定)。
よくある「サンドボックス獄」の修正方法
「Tool X blocked by sandbox tool policy」と表示される
以下のいずれかで修正します:- サンドボックスを無効にする:
agents.defaults.sandbox.mode=off(またはエージェント別に設定)。 - サンドボックス内での実行を許可する:
tools.sandbox.tools.denyからそのツールを削除する。- または、
tools.sandbox.tools.allowにそのツールを追加する。
「これはメイン(main)セッションのはずなのに、なぜサンドボックス化されているのか?」
"non-main" モードにおいて、グループチャットや各チャネルのキーは「メイン」とはみなされません。sandbox explain で表示されるメインセッションのキーを使用するか、あるいはモードを "off" に切り替えてください。