Sandbox vs Tool Policy vs Elevated
OpenClaw có ba cơ chế kiểm soát liên quan (nhưng khác nhau):
- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) quyết định tool chạy ở đâu (Docker hay host). - Tool policy (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) quyết định tool nào được phép dùng. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) là lối thoát chỉ dành cho exec để chạy trên host khi các bạn đang ở trong sandbox.
Debug nhanh
Dùng inspector để xem OpenClaw đang làm gì:
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
Lệnh này sẽ hiển thị:
- sandbox mode/scope/workspace access hiện tại
- session có đang bị sandbox hay không (main vs non-main)
- sandbox tool allow/deny hiệu lực (và nó đến từ agent/global/default)
- elevated gates và đường dẫn key để fix
Sandbox: tool chạy ở đâu
Sandboxing được điều khiển bởi agents.defaults.sandbox.mode:
"off": mọi thứ chạy trên host."non-main": chỉ non-main sessions bị sandbox (thường gây “bất ngờ” với groups/channels)."all": mọi thứ đều bị sandbox.
Xem Sandboxing để biết chi tiết đầy đủ (scope, workspace mounts, images).
Bind mounts (kiểm tra bảo mật nhanh)
docker.bindsxuyên thủng filesystem của sandbox: bất cứ thứ gì các bạn mount sẽ hiển thị bên trong container với mode đã set (:rohoặc:rw).- Mặc định là read-write nếu bỏ qua mode; nên dùng
:rocho source/secrets. scope: "shared"bỏ qua per-agent binds (chỉ global binds có hiệu lực).- Binding
/var/run/docker.sockthực tế là trao quyền kiểm soát host cho sandbox; chỉ làm điều này khi có chủ đích. - Workspace access (
workspaceAccess: "ro"/"rw") độc lập với bind modes.
Tool policy: tool nào tồn tại/có thể gọi
Có hai lớp quan trọng:
- Tool profile:
tools.profilevàagents.list[].tools.profile(allowlist cơ bản) - Provider tool profile:
tools.byProvider[provider].profilevàagents.list[].tools.byProvider[provider].profile - Global/per-agent tool policy:
tools.allow/tools.denyvàagents.list[].tools.allow/agents.list[].tools.deny - Provider tool policy:
tools.byProvider[provider].allow/denyvàagents.list[].tools.byProvider[provider].allow/deny - Sandbox tool policy (chỉ áp dụng khi bị sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denyvàagents.list[].tools.sandbox.tools.*
Nguyên tắc cơ bản:
denyluôn thắng.- Nếu
allowkhông rỗng, mọi thứ khác sẽ bị coi là blocked. - Tool policy là điểm dừng cứng:
/execkhông thể override mộtexectool bị denied. /execchỉ thay đổi session defaults cho authorized senders; nó không cấp quyền truy cập tool. Provider tool keys chấp nhậnprovider(ví dụgoogle-antigravity) hoặcprovider/model(ví dụopenai/gpt-5.2).
Tool groups (viết tắt)
Tool policies (global, agent, sandbox) hỗ trợ các entry group:* mở rộng thành nhiều tools:
{
tools: {
sandbox: {
tools: {
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
},
},
},
}
Các groups có sẵn:
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: tất cả built-in OpenClaw tools (không bao gồm provider plugins)
Elevated: “chạy trên host” chỉ cho exec
Elevated không cấp thêm tools; nó chỉ ảnh hưởng đến exec.
- Nếu các bạn đang bị sandbox,
/elevated on(hoặcexecvớielevated: true) sẽ chạy trên host (vẫn có thể cần approvals). - Dùng
/elevated fullđể bỏ qua exec approvals cho session. - Nếu các bạn đã chạy direct rồi, elevated thực tế là no-op (vẫn bị gated).
- Elevated không phải skill-scoped và không override tool allow/deny.
/exectách biệt với elevated. Nó chỉ điều chỉnh per-session exec defaults cho authorized senders.
Gates:
- Enablement:
tools.elevated.enabled(và tùy chọnagents.list[].tools.elevated.enabled) - Sender allowlists:
tools.elevated.allowFrom.<provider>(và tùy chọnagents.list[].tools.elevated.allowFrom.<provider>)
Xem Elevated Mode.
Cách fix “sandbox jail” phổ biến
”Tool X blocked by sandbox tool policy”
Các key để fix (chọn một):
- Tắt sandbox:
agents.defaults.sandbox.mode=off(hoặc per-agentagents.list[].sandbox.mode=off) - Cho phép tool bên trong sandbox:
- xóa nó khỏi
tools.sandbox.tools.deny(hoặc per-agentagents.list[].tools.sandbox.tools.deny) - hoặc thêm nó vào
tools.sandbox.tools.allow(hoặc per-agent allow)
- xóa nó khỏi
“Mình tưởng đây là main, sao lại bị sandbox?”
Ở mode "non-main", group/channel keys không phải main. Dùng main session key (hiển thị bởi sandbox explain) hoặc chuyển mode sang "off".