在使用 OpenClaw 时,不少用户会遇到一个典型问题:
执行 /approve <id> allow-always 后 没有任何反应,网络查询依然反复提示需要审批。
本文将帮助你定位原因,并给出完整解决方案。
一、典型报错现象
微信弹出审批提示:
Approval required.
Run:
/approve 0bcf506d allow-once
Other options:
/approve 0bcf506d allow-always
/approve 0bcf506d deny执行审批后却出现:
❌ Failed to submit approval: GatewayClientRequestError: unknown or expired approval id或者仍然提示:
抱歉,网络查询功能还需要您的审批才能执行 😓即使使用 allow-always 也无效。
二、核心原因:OpenClaw 有 “两套配置”,必须同时修改
OpenClaw 的 exec 权限体系由两份配置共同决定:
exec-approvals.json
openclaw.json 中的 tools.exec
只修改其中一个,另一个会用默认值覆盖你的设置,导致审批永远不生效。
两者必须都配置,并且字段必须完整。
三、第一套配置:exec-approvals.json
位置示例:
Docker Compose:宿主机 ~/.openclaw/exec-approvals.json
容器内:/home/node/.openclaw/exec-approvals.json
示例内容:
{
"version": 1,
"socket": {
"path": "/home/node/.openclaw/exec-approvals.sock",
"token": "XXXXXXXXXXXX"
},
"defaults": {
"security": "full",
"ask": "off",
"askFallback": "full",
"autoAllowSkills": true
},
"agents": {
"main": {
"security": "full",
"ask": "off",
"askFallback": "full",
"autoAllowSkills": true
}
}
}四、第二套配置:openclaw.json → tools.exec
路径示例:
/home/cloudphone/media/0/openclaw/openclaw.json必须包含:
"tools": {
"exec": {
"security": "full",
"ask": "off"
}
}重点:ask 字段必须显式写出来。
缺失时,gateway 会使用严格默认值,覆盖掉你的 exec-approvals.json 设置。