Appearance
通过 openclaw approvals 可以独立控制本地、Gateway 和 Node 上的命令执行(Exec)审批规则,决定哪些命令需要弹窗确认或自动放行。openclaw exec-policy 提供了本地的一步式策略同步(仅限本机),远程目标必须用 --gateway 或 --node 参数。YOLO 模式可将审批完全跳过,但建议只在沙盒或容器中使用。
openclaw approvals 与 exec-policy:Exec 执行审批与策略配置
管理 本地主机、Gateway 主机或 Node 主机上的 exec 审批。 默认情况下,命令作用于磁盘上的本地审批文件。使用 --gateway 指向 Gateway,或使用 --node 指向特定节点。
别名:openclaw exec-approvals
相关文档:
- Exec 审批:Exec approvals
- Nodes:Nodes
openclaw exec-policy
openclaw exec-policy 是一个本地便捷命令,用于将请求的 tools.exec.* 配置与本地主机审批文件一键对齐。适合需要:
- 检查本地请求策略、主机批准文件以及合并后的有效策略
- 应用本地预设(如 YOLO 或 deny-all)
- 同步本地
tools.exec.*与~/.openclaw/exec-approvals.json
示例:
bash
openclaw exec-policy show
openclaw exec-policy show --json
openclaw exec-policy preset yolo
openclaw exec-policy preset cautious --json
openclaw exec-policy set --host gateway --security full --ask off --ask-fallback full输出模式:
- 不加
--json:打印人可读的表格视图 - 加
--json:打印机器可读的结构化输出
当前限制:
exec-policy仅作用于本地机器- 它同时更新本地配置文件与本地审批文件
- 它不会将策略推送到 Gateway 或 Node 主机
--host node在此命令中被拒绝,因为 Node 的 exec 审批在运行时从 Node 获取,必须使用 Node 相关的approvals命令来管理openclaw exec-policy show会将host=node的范围标记为 node 在运行时管理,而不是从本地批准文件推导有效策略
如果你需要直接编辑远程主机审批,继续使用 openclaw approvals set --gateway 或 openclaw approvals set --node <id|name|ip>。
常用命令
bash
openclaw approvals get
openclaw approvals get --node <id|name|ip>
openclaw approvals get --gatewayopenclaw approvals get 现在会显示本地、Gateway 和 Node 目标的有效 exec 策略:
- 请求的
tools.exec策略 - 主机审批文件策略
- 应用优先级规则后的有效结果
优先级规则的用意:
- 主机审批文件是可执行的唯一真实来源
- 请求的
tools.exec策略可以缩窄或扩宽意图,但有效结果仍从主机规则派生 --node结合了 Node 主机审批文件和 Gateway 的tools.exec策略,因为两者在运行时都适用- 如果 Gateway 配置不可用,CLI 会回退到 Node 审批快照,并注明无法计算最终运行时策略
从文件替换审批配置
bash
openclaw approvals set --file ./exec-approvals.json
openclaw approvals set --stdin <<'EOF'
{ version: 1, defaults: { security: "full", ask: "off" } }
EOF
openclaw approvals set --node <id|name|ip> --file ./exec-approvals.json
openclaw approvals set --gateway --file ./exec-approvals.jsonset 接受 JSON5,不仅限于标准 JSON。使用 --file 或 --stdin,不能同时使用。
免审批(YOLO)配置示例
对于永远不需要暂停 exec 审批的主机,将主机审批默认值设为 full + off:
bash
openclaw approvals set --stdin <<'EOF'
{
version: 1,
defaults: {
security: "full",
ask: "off",
askFallback: "full"
}
}
EOFNode 版本:
bash
openclaw approvals set --node <id|name|ip> --stdin <<'EOF'
{
version: 1,
defaults: {
security: "full",
ask: "off",
askFallback: "full"
}
}
EOF这只修改主机审批文件。要保持请求的 OpenClaw 策略一致,还需设置:
bash
openclaw config set tools.exec.host gateway
openclaw config set tools.exec.security full
openclaw config set tools.exec.ask off为什么使用 tools.exec.host=gateway:
host=auto表示"有沙盒时使用沙盒,否则使用 Gateway"。- YOLO 控制的是审批,不是路由。
- 如果你希望即使配置了沙盒也使用主机 exec,请用
gateway或/exec host=gateway显式指定。
本地快捷方式:
bash
openclaw exec-policy preset yolo该本地快捷方式会同时更新本地的 tools.exec.* 配置和本地审批默认值,与上述手动两步操作意图一致,但仅适用于本机。
白名单辅助命令
bash
openclaw approvals allowlist add "~/Projects/**/bin/rg"
openclaw approvals allowlist add --agent main --node <id|name|ip> "/usr/bin/uptime"
openclaw approvals allowlist add --agent "*" "/usr/bin/uname"
openclaw approvals allowlist remove "~/Projects/**/bin/rg"通用选项
get、set 和 allowlist add|remove 都支持:
--node <id|name|ip>--gateway- 共享 Node RPC 选项:
--url、--token、--timeout、--json
目标说明:
- 无目标标志表示磁盘上的本地审批文件
--gateway针对 Gateway 主机审批文件--node在解析 id、name、IP 或 id 前缀后针对单个 Node 主机
allowlist add|remove 还支持:
--agent <id>(默认为*)
注意事项
--node使用与openclaw nodes相同的解析器(id、name、IP 或 id 前缀)。--agent默认为"*",适用于所有 agent。- Node 主机必须暴露
system.execApprovals.get/set(macOS 应用或无头 Node 主机)。 - 审批文件按主机存储于
~/.openclaw/exec-approvals.json。
参考文档
常见问题
为什么设置了 tools.exec.ask=off 依然会弹审批窗?
主机的 exec-approvals.json 文件才是权限放行的最终裁判。客户端配置(tools.exec.ask=off)只是客户端请求意图,如果宿主机上的审批文件要求弹窗拦截,该命令仍会被拦截。必须用 openclaw approvals set 同步更新宿主机端的配置。
YOLO 模式下是否可能执行危险命令(如 rm -rf /)?
可以。YOLO 模式下 OpenClaw 完全放权给大模型,模型给出的任何命令都会被直接传递给 Shell 执行。这非常危险,请绝对不要在你个人的工作电脑或存有重要数据的宿主机上开启 YOLO 模式,建议仅在沙盒(Sandbox)或随用随抛的容器内使用。
如何批量添加多条白名单路径?
目前 allowlist add 每次只能添加一条路径。可编写脚本循环调用 openclaw approvals allowlist add 来批量添加。若需一次性替换整个白名单,可使用 openclaw approvals set --file 导入包含 allowlist 字段的完整 JSON5 审批文件。