如果你刚把 OpenClaw 升级到 4.9,结果一上来就发现:
• 以前能跑的 exec,并且是它自动跑,现在不让跑了• 一执行就报拒绝、报 denied • 自己一脸懵,不知道到底是版本坏了,还是配置炸了
那这篇你一定要看。
先说结论:
大概率不是你装坏了,也不是 OpenClaw 废了,而是 4.9 之后安全策略变严了。说白了,就是以前默认给你的“执行权限”,现在不一定默认开着了。
这事儿有点像:
擀面杖吹火——一窍不通。
很多人不是不会配,而是压根不知道问题出在“权限策略”上,所以越改越慌。
今天我就用大白话,把这件事讲明白:为什么会这样、该改哪里、怎么改最稳、怎么验证有没有修好。
一、为什么一升级,exec 就突然不能用了?
原因其实不复杂。
OpenClaw 4.9 之后,为了安全,把工具权限这块收紧了。尤其是像 exec 这种能直接执行命令的能力,风险本来就高,所以新版会更谨慎。
你可以把它理解成:
以前系统默认觉得“你大概用得上”,所以默认给得比较宽;现在系统改成了“先确认你真的要用”,所以默认更保守。
于是就出现了这种情况:
• 你原来的工作流没变 • 你的命令也没问题 • 但系统策略变了
结果就是:命令没错,权限没开。
这时候如果你还在那儿疯狂重试,那就有点像:
大腿上把脉——瞎摸。
方向不对,越试越浪费时间。
二、真正的问题,不在命令,在配置
很多人遇到这个问题,第一反应是:
• 是不是 exec语法变了?• 是不是我的环境变量没了? • 是不是网关挂了? • 是不是版本有 bug?
但大多数情况下,真正的核心问题就一个:
你需要重新调整 openclaw.json 里的工具权限配置。
也就是说,这不是“命令问题”,而是“开关问题”。
OpenClaw 升级后,相当于把你家里某个总闸关小了。你屋里的灯泡没坏,电线也没断,只是电闸没给够。
所以别一上来就怀疑人生。
三、先找到配置文件:这是修复的第一步
要解决这个问题,你先得找到 OpenClaw 的配置文件:openclaw.json
一般位置是:
• Linux / macOS: ~/.openclaw/openclaw.json• Windows: C:\Users\你的用户名\.openclaw\openclaw.json
如果你是 Windows 用户,就重点看第二个路径。
这里提醒一句:
改之前最好先备份。
虽然这一步不复杂,但提前备份一下总没错。万一手滑,起码还能回退。不然真改乱了,可能就会变成:
钢丝穿豆腐——别提了。
四、最推荐的修法:直接把 tools.profile 改成 coding
如果你只是想恢复正常开发和自动化能力,那最推荐的做法就是这一种:
{ "tools": { "profile": "coding" }}为什么推荐这个?
因为它是一个比较平衡的方案。
它会帮你打开开发场景里常用的一些能力,比如:
• 文件读写 • 运行时工具 • exec• process
简单说,该给你的基本都给了,但又不是完全裸奔。
对大多数人来说,这个就够用了。
如果让我用一句大白话总结:
这是“能干活”和“相对安全”之间最合适的中间档。
所以如果你不是特别懂权限细节,又想赶紧恢复工作流,那就别绕,先上 coding。
五、如果你想自己点菜,可以用 allowlist
有些人会说:
我不想开太多,我只想精确允许几个工具,行不行?
也行。
这种情况下,你可以手动写允许名单,比如:
{ "tools": { "allow": ["exec", "process", "read", "write"], "deny": [] }}这个方案适合谁?
适合那种很明确知道自己要什么的人。你只给系统放行你需要的工具,别的先不放。
它的优点是可控;缺点是你要自己清楚:哪些工具是你的工作流真正依赖的。
不然就容易出现一种情况:你以为只缺一个 exec,结果后面发现 process、read、write 也跟着要用。
到时候就有点像:
茶壶里煮饺子——有口倒不出。
心里知道该怎么干,但配置没配全,活还是跑不起来。
六、full 能不能用?能,但真别上头
还有一种方案,是直接开最高权限:
{ "tools": { "profile": "full" }}这个当然最省事。
因为它的思路就是:别问了,全放开。
但问题也很明显:
full 不只是给你 exec,它还可能把更多高权限能力一起打开,比如浏览器自动化、定时任务等等。
所以这个方案不是不能用,而是只适合你非常清楚风险、而且环境也足够可信的时候再用。
否则就很容易变成:
芝麻掉到水里——飘了。
一看“哇,全都能用了”,就觉得真香;但权限一旦开得太猛,后面风险也是真的更高。
所以我的建议很明确:
• 普通用户:先用 coding• 熟悉配置的人:再考虑 allowlist • full:除非你真的知道自己在干什么,否则别当默认选项
七、改完别忘了重启,不然等于白改
配置改完以后,一定要重启 OpenClaw gateway,让新配置生效。
命令是:
openclaw gateway restart很多人卡就卡在这一步。
配置写对了,文件也保存了,结果没重启,然后继续说:“怎么还是不行?”
那当然不行。
这事儿就像你把门锁换好了,但门还没关上重开一次。系统压根没重新加载到新配置。
如果重启时报错,也别急。可以试试:
openclaw doctor --fix这个命令的作用,可以理解成帮你顺手查查配置有没有明显问题,顺便做一些自动修复。
八、如果你是 Telegram 场景,还可能不是同一个坑
有些人遇到的不是普通的 exec denied,而是那种更细一点的错误,比如:
exec denied: allowlist miss
这种情况就说明:
不是 OpenClaw 完全不让你用 exec,而是当前这个来源、这个渠道、这个身份,没有被放进允许列表。
比如 Telegram 这种场景里,可能还要额外配置:
• 谁可以提权 • 哪些用户/群组可以执行 • exec用什么宿主和安全模式运行
{ "tools": { "profile": "coding", "elevated": { "enabled": true, "allowFrom": { "telegram": ["YOUR_TELEGRAM_USER_ID", "telegram:group:YOUR_GROUP_ID"] } }, "exec": { "security": "full", "host": "gateway" } }}也就是说,问题已经不是“全局有没有打开”,而是:“这个渠道,有没有资格用”。
这一类问题,不能一把梭哈地看成同一个 bug。
九、怎么验证自己到底修好了没有?
改完配置、重启完成之后,别靠猜,直接测。
最简单的方法,就是在聊天界面发一个最小命令:
echo "Hello from OpenClaw"如果能正常执行,说明 exec 基本恢复了。
为什么要用这种最简单的测试?
因为排查问题时,最怕一上来就跑复杂命令。那样一旦失败,你根本分不清:
• 是权限问题 • 是命令问题 • 是环境问题 • 还是参数问题
先拿一个最小命令试通,等于先确认“路通了”。
这一步很关键。
不然就容易变成:
酱缸里泡石头——一言难尽。
明明只是想验证配置,最后越测越乱,自己都说不清哪一步出了问题。
十、给小白的最终建议:别一上来就折腾最猛的方案
如果你只想赶紧把问题解决,我建议你按这个顺序来:
第一步:先看是不是权限策略变了
别先怀疑命令,先怀疑配置。
第二步:直接上 coding
这是最稳、最省心、最适合大多数人的方案。
第三步:保存后重启
不重启,前面都白干。
第四步:用最小命令验证
先跑一个 echo,确认 exec 已恢复。
第五步:只有在必要时,再继续细调
比如 Telegram、提权、审批跳过这些高级需求,后面再说。
这个顺序,基本能帮你避开 80% 的坑。
最后总结一下
OpenClaw 升级到 4.9 之后,exec 不能用,最常见的原因不是程序坏了,而是:
新版把权限管得更严了。
你真正要做的,不是乱改命令,而是去改 openclaw.json 里的 tools 配置。
记住这几个关键词就够了:
• 最推荐: profile: coding• 想精细控制: allow• 风险最高: profile: full• 改完必须: openclaw gateway restart• 最后记得:做最小命令验证
说到底,这事没那么可怕。
很多人第一次遇到,会觉得天塌了。其实本质上只是系统在告诉你:
以前默认开的门,现在要你自己确认一下要不要继续开。
理解这一点,后面你再碰到类似问题,就不会慌了。
甚至你还会觉得:
鞭炮两头点——想到一块了。
因为你终于明白了:这不是“OpenClaw 抽风了”,而是“权限模型升级了”。
夜雨聆风