最近把 OpenClaw 升到 2026.3.31,本以为只是一次普通升级,结果连续踩了两个坑。
第一个坑最隐蔽:我明明已经把审批相关配置关了,命令却还是卡在 Exec approval。
第二个坑最迷惑:后台服务已经是新版本,终端里 openclaw -V 却还是老版本。
后来我才发现,2026.3.31 之后最容易让人误判的地方,不是命令写错了,而是 OpenClaw 把“聊天审批”“本机审批”“CLI 来源”拆成了不同层。
一、为什么明明关了审批,OpenClaw 还是要我手动点允许?
我一开始以为问题在 Telegram,于是去改 channels.telegram.execApprovals。
后来才发现,这个开关只决定“Telegram 能不能接收审批消息”,并不决定“这台机器还要不要审批”。
真正拦住命令执行的,是本机的:
~/.openclaw/exec-approvals.json
也就是说,升级到 2026.3.31 后,如果你想把 OpenClaw 改成“彻底自动执行”,不能只改聊天通道,必须把 gateway 默认 exec 策略和本机 exec approvals 一起改掉。
先改 gateway 默认策略:
openclaw config set tools.exec '{"security":"full","ask":"off"}' --strict-json
再直接用 CLI 覆盖本机 exec-approvals.json:
cat <<'EOF' | openclaw approvals set --stdin
{
"version": 1,
"socket": {
"path": "/Users/你的用户名/.openclaw/exec-approvals.sock",
"token": "替换成你当前 ~/.openclaw/exec-approvals.json 里的 token"
},
"defaults": {
"security": "full",
"ask": "off",
"askFallback": "full",
"autoAllowSkills": false
},
"agents": {
"main": {
"security": "full",
"ask": "off",
"askFallback": "full"
}
}
}
EOF
最后重启一下:
openclaw daemon restart
改完以后,建议用这两条确认有没有真的生效:
openclaw config get tools.exec
openclaw approvals get
如果你在“已经打开很久的旧聊天会话”里偶尔还是会看到审批提示,通常不是配置没生效,而是那个会话保存了旧的 /exec 会话级参数。
这种情况,在当前聊天里补一条就行:
/exec security=full ask=off
这次最坑的一点就在这里:approvals.exec.enabled=false 只是关闭“审批消息转发”,不是关闭“本机执行审批”。
真正决定 OpenClaw 会不会自动执行的,是 tools.exec 和 exec-approvals.json。
二、为什么明明已经升级了,终端里的 OpenClaw 还是旧版本?
第二个坑看起来像“升级失败”,其实很多时候只是命中了另一套 OpenClaw。
我这边当时的真实情况是:
后台 LaunchAgent 跑的是 NVM 里的 OpenClaw,版本已经是 2026.3.31但终端默认命中的却是 /opt/homebrew/bin/openclaw所以 openclaw -V看起来一直还是旧版本
先用这三条查清楚:
which -a openclaw
openclaw -V
openclaw daemon status
如果 daemon status 里显示服务实际跑的是 ~/.nvm/.../openclaw,但终端优先命中 /opt/homebrew/bin/openclaw,那就不是没升级,而是 PATH 顺序不对。
如果你不想删掉 Homebrew 那套,也没关系,最稳的办法是让 shell 优先走 NVM 版。把下面这行放进 ~/.zprofile 和 ~/.zshrc:
export PATH="$HOME/.nvm/versions/node/v22.22.1/bin:$PATH"
然后重新开终端,或者执行:
exec zsh
以后升级也尽量只升级 NVM 这套:
~/.nvm/versions/node/v22.22.1/bin/npm install -g openclaw@latest
openclaw daemon restart
这次折腾下来,我最大的感受是:
OpenClaw 2026.3.31 最容易让人踩坑的,不是某条命令有多复杂,而是你以为只需要关一个开关,结果真正生效的地方其实在另一层。
一个是本机 exec approvals。
一个是 CLI 和后台服务到底是不是同一套版本。
这两个地方看明白了,升级后的大多数“玄学问题”,其实都能解释通。
夜雨聆风