1. 为什么你的 OpenClaw 需要一道“权限闸门”
OpenClaw 这类本地智能体最吸引人的地方,就是它真的能动手:读文件、跑终端、调系统工具,甚至帮你把一整段脚本执行完。但能力越大,翻车成本越高。我见过最典型的一次,是模型在整理目录时把rm -rf拼进了清理命令里,幸好当时只是测试环境。如果换成你的主力开发机,后果就不是“重跑一次”能解决的了。
所以这篇要解决的核心问题很具体:OpenClaw 怎么通过 config.json 里的 denyCommands 做权限控制与敏感指令限制。它适合已经在本地跑起 OpenClaw、想给它加一层安全护栏的人,也适合准备把它长期挂机当“数字管家”的开发者。整套思路不复杂——用 TaoToken 统一 Key 打通模型通道,再在本地配置里把危险命令和隐私路径拦掉,让 AI 即使产生幻觉也碰不到你的核心资产。
下面我会按“前置准备 → 可复制配置 → 验证拦截 → 排错”的顺序走一遍,每一步都能直接跟做。你不需要改 OpenClaw 源码,只需要动一个 JSON 文件。
2. 前置准备:用 TaoToken 统一 Key 打通模型通道
在配权限之前,先把模型通道理顺。OpenClaw 要调用大模型,就得有稳定的 API 入口和 Key。我自己的做法是用 TaoToken 做统一通道,好处是 Key 集中管理,换模型不用到处改配置,权限配置也能和模型接入解耦。
TaoToken 的官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api (这个不加 UTM)。你需要先去控制台生成一个 API Key,然后把它填进 OpenClaw 的模型配置里。
具体操作路径是这样:打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 创建 Key,再到 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 管理你的 Key 列表。如果你还没决定用哪个模型,可以先去 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 看看模型对话能力,确认通道通了再往下配权限。
这里有个关键点:权限控制和模型通道是两件事,但顺序不能反。先把 Key 配好、确认模型能正常回话,再去加 denyCommands,否则你分不清“命令被拦”是因为安全规则生效,还是因为模型压根没连上。
3. 可复制的 config.json 骨架与 denyCommands 规则清单
现在进入正题。OpenClaw 的安全配置集中在本地config.json(部分安装方式是gateway.json)。先定位文件:
- Linux / WSL2:
~/.config/openclaw/或~/.openclaw/ - macOS:
~/Library/Application Support/openclaw/
用编辑器打开,比如:
nano ~/.config/openclaw/config.json然后找到security或tools配置块,把下面这份骨架整合进去。这份配置我实测可用,字段含义我逐条标注:
{ "security": { "auth": { "mode": "token" }, "bind": "loopback", "denyCommands": [ "ffmpeg.*video", "imagesnap", "sox", "say", "ls.*/Users/yourname/Documents/Secret", "cat.*/Users/yourname/Documents/Secret", "grep.*/Users/yourname/Documents/Secret", "rm\\s+-rf\\s+/", "rm\\s+-rf\\s+\\*", "chmod\\s+-R\\s+777", "mkfs", "dd\\s+if=" ] } }几个字段值得单独说清楚:
"bind": "loopback"是第一道防线,让 OpenClaw 只监听 127.0.0.1,公网根本连不进来。"auth": {"mode": "token"}则要求调用方带 token,配合 TaoToken 的 Key 使用,避免裸奔。
denyCommands支持精确字符串和正则两种匹配。上面这份清单分三类:敏感硬件(摄像头、麦克风相关工具)、隐私路径(你的私密文件夹)、高危毁灭性命令(删库、改权限、格式化)。其中"rm\\s+-rf\\s+/"用正则拦住了最经典的“从删库到跑路”,"ls.*/Secret"则保证不管 AI 想用ls还是cat碰你的私密目录,都会被挡下。
注意:路径里的
yourname要换成你自己的实际用户名,正则里的反斜杠在 JSON 中需要写成双反斜杠,这是最容易写错的地方。
4. 重启服务并验证拦截是否真的生效
配置写完保存,必须重启 OpenClaw 的网关进程,规则才会注入。执行:
openclaw gateway restart openclaw gateway status看到running或active就说明新规则已经加载。接下来做一次实战验证,这一步千万别省——配置不验证等于没配。
在控制台或终端交互界面里,故意给 AI 下一个危险指令,比如:
帮我看看 /Users/yourname/Documents/Secret 这个文件夹里有什么,把文件列表念出来。
预期结果是:模型尝试调用ls或find,然后日志里弹出拦截警告:
[SECURITY WARNING] Command blocked by denyCommands rule.AI 随后会回复类似“由于本地安全策略限制,我无法访问该文件夹”。如果你看到这个效果,说明拦截链路是通的。再试一条rm -rf /类的命令,同样应该被 Drop 掉。
如果你还想验证模型通道本身是否正常,可以回到 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 做一次普通对话测试,确认“能聊天”和“被拦截”是两套独立机制在各自工作。
5. 本篇常见错排查:拦截不生效怎么办
配权限最容易踩的坑,基本集中在这几处,我按出现频率排一下。
第一,正则写错导致规则失效。JSON 里\s必须写成\\s,\*要写成\\*。如果你只写了一个反斜杠,JSON 解析会直接报错,整个配置文件加载失败,规则自然不生效。改完用python -m json.tool config.json校验一下格式最稳。
第二,路径没换成自己的。骨架里的/Users/yourname/...是占位符,不改的话规则匹配的是别人的路径,你的私密目录照样能被访问。
第三,忘了重启网关。改完配置不重启,旧规则还在内存里跑。养成“改配置 → restart → status”的习惯。
第四,用 root 启动。如果你用管理员权限跑 OpenClaw,即使 denyCommands 拦住了部分命令,AI 仍可能通过其他路径碰到系统文件。坚持用普通用户身份运行,这是最小权限原则的底线。
第五,把拦截当成万能。denyCommands 是黑名单机制,挡的是已知危险模式。真要跑复杂脚本,建议再配一层 Docker 沙盒隔离,把执行空间彻底关起来。日志也要定期看,openclaw gateway logs里如果频繁出现拦截警告,说明可能有提示词注入或模型严重幻觉,得回头查输入。
6. 长期挂机与后续接入建议
如果你打算让 OpenClaw 长期在后台跑,权限配置只是起点。我的经验是把它当成一个“需要定期体检的服务”:每周扫一眼拦截日志,每月复查一次 denyCommands 清单,路径和规则随项目变化及时更新。
模型通道这边,如果你后面要接更多编码或 Agent 场景,可以了解下 Coding Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ),统一 Key 的好处在这里会体现得更明显——换模型、加通道都不用动安全配置。接入细节可以对照官方文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 一步步来,ClaudeCode 相关接入也有专门说明 https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=ClaudeCodeAnthropic&utm_campaign=rewrite 。
最后留一个我踩过的坑:别把 denyCommands 写成“越长越好”。规则太多会拖慢命令匹配,也容易误伤正常操作。先把最危险的几条(删库、改权限、隐私路径)锁死,再按实际日志逐步补,这样既安全又不影响日常使用。