让 OpenClaw 执行命令不再需要手动审批,实现真正的自动化!
背景说明
OpenClaw 默认出于安全考虑,执行 shell 命令时需要用户审批。这对于自动化场景非常不便。本指南将教你如何正确配置,让 exec 命令无需审批直接执行。
适用场景:
- ✅ 个人/可信环境部署
- ✅ 需要自动化执行命令
- ✅ 本地开发测试环境
不适用场景:
- ❌ 公开/共享环境
- ❌ 多用户 adversarial 环境
- ❌ 需要严格权限控制的生产环境
配置文件位置
需要修改两个配置文件:
| 文件 | 路径 | 作用 |
|---|---|---|
openclaw.json |
~/.openclaw/openclaw.json |
主配置文件,定义工具策略 |
exec-approvals.json |
~/.openclaw/exec-approvals.json |
Exec 审批配置,定义审批规则 |
注意: 两个文件的配置需要保持一致,实际生效的是两者中更严格的那个。
正确配置方法
步骤 1:修改 openclaw.json
在文件根级别添加或修改 tools 配置:
{
"tools": {
"profile": "full",
"exec": {
"security": "full",
"ask": "off"
}
}
}
步骤 2:修改 exec-approvals.json
修改 defaults 部分:
{
"version": 1,
"socket": {
"path": "~/.openclaw/exec-approvals.sock",
"token": "your-token"
},
"defaults": {
"security": "full",
"ask": "off",
"askFallback": "full"
},
"agents": {
"main": {
"allowlist": []
}
}
}
步骤 3:重启 Gateway
openclaw gateway restart
步骤 4:验证配置
# 验证配置已加载
openclaw config get tools.exec
# 测试执行命令
echo "测试无需授权"
配置字段详解
openclaw.json 配置
| 字段 | 可选值 | 说明 | 推荐值 |
|---|---|---|---|
tools.profile |
minimal / full |
工具权限级别 | full |
tools.exec.security |
deny / allowlist / full |
安全模式 | full |
tools.exec.ask |
off / on-miss / always |
审批模式 | off |
tools.exec.host |
auto / gateway / sandbox / node |
执行位置 | 可选 |
字段说明:
security: "full"- 允许所有命令执行(相当于 elevated 权限)ask: "off"- 从不询问审批ask: "on-miss"- 仅在白名单不匹配时询问(默认值)ask: "always"- 每次命令都询问
exec-approvals.json 配置
| 字段 | 可选值 | 说明 | 推荐值 |
|---|---|---|---|
defaults.security |
deny / allowlist / full |
安全模式 | full |
defaults.ask |
off / on-miss / always |
审批模式 | off |
defaults.askFallback |
deny / allowlist / full |
无法显示审批时的回退策略 | full |
关键字段说明:
askFallback: "full"- ⚠️ 这是最容易遗漏的字段!- 当审批 UI 无法显示时(如后台运行、无界面环境),此字段决定如何处理
- 默认值是
deny,会导致命令被拒绝执行 - 必须设置为
full才能实现完全无审批
常见错误
❌ 错误 1:只修改了 openclaw.json
// openclaw.json - 配置正确
"tools": {
"exec": {
"security": "full",
"ask": "off"
}
}
// exec-approvals.json - 使用默认值(错误!)
"defaults": {
"security": "deny", // ← 默认值,会覆盖 openclaw.json
"ask": "on-miss" // ← 默认值,会导致询问
}
解决方案: 同时修改两个文件,保持一致。
❌ 错误 2:缺少 askFallback 字段
// exec-approvals.json - 缺少 askFallback(错误!)
"defaults": {
"security": "full",
"ask": "off"
// askFallback 缺失,默认值为 deny
}
现象: 配置已设置,但命令仍被拒绝,错误信息:exec denied: allowlist miss
解决方案: 添加 "askFallback": "full"
❌ 错误 3:使用了无效的配置字段
// 错误配置
"tools": {
"exec": {
"security": "allowlist",
"allowlist": ["*"], // ← 这不是有效的配置字段
"ask": "off"
}
}
说明: allowlist 不是 openclaw.json 中的有效字段。白名单配置在 exec-approvals.json 中。
正确配置:
"tools": {
"exec": {
"security": "full",
"ask": "off"
}
}
❌ 错误 4:Agent 级别配置覆盖了全局配置
// openclaw.json
"agents": {
"list": [
{
"id": "main",
"tools": {
"profile": "full"
// 缺少 exec 配置,会使用默认值(需要审批)
}
}
]
},
"tools": {
"exec": {
"security": "full",
"ask": "off"
}
}
说明: Agent 级别的 tools 配置会覆盖全局 tools 配置。
解决方案: 在 Agent 级别也添加 exec 配置:
"agents": {
"list": [
{
"id": "main",
"tools": {
"profile": "full",
"exec": {
"security": "full",
"ask": "off"
}
}
}
]
}
验证方法
方法 1:使用 config 命令验证
# 验证 openclaw.json 配置
openclaw config get tools.exec
# 预期输出:
# {
# "security": "full",
# "ask": "off"
# }
方法 2:直接测试命令
# 测试简单命令
echo "测试无需授权"
# 测试目录列表
dir C:\Users
# 测试系统命令
systeminfo | Select-String "OS 名称"
如果命令直接执行并输出结果,说明配置生效。
方法 3:运行 Doctor 检查
openclaw doctor --non-interactive
检查是否有配置错误。
方法 4:查看配置文件内容
Windows PowerShell:
# 查看 openclaw.json 配置
Get-Content C:\Users\Administrator\.openclaw\openclaw.json | ConvertFrom-Json | Select-Object -ExpandProperty tools | Select-Object -ExpandProperty exec
# 查看 exec-approvals.json 配置
Get-Content C:\Users\Administrator\.openclaw\exec-approvals.json | ConvertFrom-Json | Select-Object -ExpandProperty defaults
Linux/macOS:
# 查看 openclaw.json 配置
cat ~/.openclaw/openclaw.json | jq '.tools.exec'
# 查看 exec-approvals.json 配置
cat ~/.openclaw/exec-approvals.json | jq '.defaults'
故障排查
问题 1:配置修改后仍需要授权
检查清单:
- ✅ 两个配置文件都修改了吗?
- ✅
askFallback字段设置了吗? - ✅ Gateway 重启了吗?
- ✅ Agent 级别配置覆盖了吗?
解决步骤:
# 1. 验证配置
openclaw config get tools.exec
# 2. 检查 exec-approvals.json
# 确保有 askFallback: "full"
# 3. 完全重启 Gateway
openclaw gateway stop
# 等待 3 秒
openclaw gateway start
# 4. 测试
echo "测试"
问题 2:命令执行失败,错误 exec denied: allowlist miss
原因: exec-approvals.json 中 defaults.security 不是 full,或者 askFallback 是 deny。
解决方案:
// exec-approvals.json
"defaults": {
"security": "full",
"ask": "off",
"askFallback": "full" // ← 确保这个字段存在且值为 full
}
问题 3:Gateway 重启失败
可能原因: 配置文件语法错误。
解决步骤:
# 1. 验证配置语法
openclaw config validate
# 2. 查看错误日志
openclaw logs --follow
# 3. 恢复备份配置
# 如果有 openclaw.json.bak,可以恢复后重新修改
问题 4:配置无法通过 API 修改
原因: tools.exec.security 和 tools.exec.ask 是受保护的路径,不能通过 config.patch 修改。
解决方案: 直接编辑文件:
# 使用文本编辑器
notepad ~/.openclaw/openclaw.json
# 或使用命令行
# Windows
echo CONFIG_CONTENT > ~/.openclaw/openclaw.json
# Linux/macOS
nano ~/.openclaw/openclaw.json
安全提示
⚠️ 重要警告: 此配置会让 OpenClaw 能够执行任何shell 命令,无需任何审批。
适用环境
- ✅ 个人开发环境
- ✅ 可信的本地部署
- ✅ 单用户系统
- ✅ 有良好网络安全边界的内网
不适用环境
- ❌ 公开/共享环境
- ❌ 多用户 adversarial 环境
- ❌ 直接暴露在公网
- ❌ 需要审计合规的生产环境
安全建议
- 网络隔离: 确保 Gateway 只绑定本地地址(
bind: "loopback") - 认证保护: 使用强 token 保护 Gateway API
- 防火墙: 限制 18789 端口的访问
- 定期审计: 定期检查
exec-approvals.json中的 allowlist - 备份配置: 修改前备份配置文件
更安全的替代方案
如果需要在共享环境中使用,考虑以下配置:
// 使用白名单模式
"tools": {
"exec": {
"security": "allowlist",
"ask": "on-miss"
}
}
这样只允许白名单中的命令执行,其他命令需要审批。
完整配置示例
openclaw.json 完整示例
{
"meta": {
"lastTouchedVersion": "2026.4.1",
"lastTouchedAt": "2026-04-02T01:00:00.000Z"
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "loopback",
"auth": {
"mode": "token",
"token": "your-secure-token"
}
},
"agents": {
"defaults": {
"model": {
"primary": "bailian/qwen3.5-plus"
}
},
"list": [
{
"id": "main",
"tools": {
"profile": "full",
"exec": {
"security": "full",
"ask": "off"
}
}
}
]
},
"tools": {
"profile": "full",
"exec": {
"security": "full",
"ask": "off"
}
}
}
exec-approvals.json 完整示例
{
"version": 1,
"socket": {
"path": "~/.openclaw/exec-approvals.sock",
"token": "random-token-here"
},
"defaults": {
"security": "full",
"ask": "off",
"askFallback": "full"
},
"agents": {
"main": {
"allowlist": []
}
}
}