Skip to content

openclaw approvals 工具控制着系统命令执行(Exec)的白名单和安全拦截策略。你可以利用它分别管理本地客户端、Gateway 服务端或是远程工作节点(Node)的审批规则,甚至可以将其设置为免提示模式(YOLO 模式)以适应纯自动化容器环境。

openclaw approvals

管理本地主机Gateway 主机Node 主机上的 exec 审批。 默认情况下,命令作用于磁盘上的本地审批文件。使用 --gateway 指向 Gateway,或使用 --node 指向特定节点。

别名:openclaw exec-approvals

相关文档:

常用命令

bash
openclaw approvals get
openclaw approvals get --node <id|name|ip>
openclaw approvals get --gateway

openclaw 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.json

set 接受 JSON5,不仅限于严格 JSON。使用 --file--stdin,不能同时使用。

免审批(YOLO)配置示例

对于永远不需要暂停 exec 审批的主机,将主机审批默认值设为 full + off

bash
openclaw approvals set --stdin <<'EOF'
{
  version: 1,
  defaults: {
    security: "full",
    ask: "off",
    askFallback: "full"
  }
}
EOF

Node 版本:

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 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"

通用选项

getsetallowlist 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 host)。
  • 审批文件按主机存储于 ~/.openclaw/exec-approvals.json

常见问题

Q: 为什么我在 tools.exec 中关掉了 ask,执行还是会弹审批窗?

A: 主机的 exec-approvals.json 文件才是权限放行的最终判定者。客户端配置(tools.exec.ask=off)只是客户端的请求意图,如果宿主机上的审批文件要求弹窗拦截,该命令仍会被拦截。你必须用 openclaw approvals set 同步更新宿主机的配置。

Q: 如果我把机器配成了免审批(YOLO)模式,Agent 能不能执行 rm -rf / 这样的危险命令?

A: 可以。免审批模式下 OpenClaw 会完全放权给大模型,模型给出的任何命令都会被直接传递给 Shell 执行。这非常危险,请绝对不要在你个人的工作电脑或存有重要数据的宿主机上开启 YOLO 模式,仅限于沙盒(Sandbox)和随用随抛的容器内使用。