敢给 AI 写代码的权限吗?Reasonix 教你守住底线
前两篇发完后,收到最多的私信是同一句话:"让 AI 直接在终端里跑命令,你不怕它把你服务器删了?">
怕,当然怕。但 Reasonix 的设计者比你更怕——所以做了整整三层防护。>
今天就把这三层防护拆开看明白。
一、先讲个恐怖故事
一个真实的事故(不是 Reasonix,是另一个工具):
开发者让 AI "帮我清理一下磁盘空间",AI 理解了需求,执行了 rm -rf /——根目录全删了。服务器直接宕机。这个事故的本质不是 AI 太笨,是权限没设好。
你把一把电钻交给 AI,它当然能帮你钻孔,但也可能把墙打穿。Reasonix 解决这个问题的方法不是"不给 AI 工具"——而是给工具,但设定明确的边界。
这三层边界是:
第一层:Plan Mode → 复杂任务先出计划,你批准了再动手(上一篇文章提到过)
第二层:Permission Rules → 谁可以干什么,精确到命令级别
第三层:Sandbox → 物理隔离,就算规则漏了也逃不出去🔴 先说结论:默认配置下,Reasonix 比 Cursor 和 Claude Code 都安全。
二、第一层:Plan Mode(计划模式)
在之前的文章里提过,这里快速过一下。
在 reasonix.toml 中开启:
[agent]
auto_plan = "on"开启后,复杂任务会先进入只读模式:
1. AI 先读文件、分析代码结构 2. AI 输出一份书面计划 3. 你审核计划 4. 你点头,AI 才开始改代码
这相当于给 AI 加了一道"先写方案,领导审批"的流程。改之前先告诉我你要改什么。
三、第二层:Permission Rules(权限规则)— 核心
这是最常用、也最灵活的一层。它不是简单的"开/关",而是一套规则引擎。
默认行为
安装完 Reasonix,默认配置是这样的:
[permissions]
mode = "ask" # 兜底策略:问用户什么意思呢?
对于只读操作(读文件、搜索代码、查看目录):一律放行,不需要问你。
对于写入操作(写文件、修改文件、执行命令):先问你。
实操演示:Chat 模式下的权限对话
当你在 reasonix chat 里让 AI 写代码时,你会看到这样的画面:
你:帮我修改 nginx.conf,把超时时间改成 60 秒
AI thinking...
→ read_file /etc/nginx/nginx.conf ← 读文件,自动放行
→ write_file /etc/nginx/nginx.conf ← 写文件,触发权限检查!
? 允许 AI 写入 /etc/nginx/nginx.conf?
[1] 允许本次 [2] 本会话都允许 [3] 拒绝三个选项很清晰:
- 1(y):这次放行,下次还问
- 2(a):这个会话里不再问了,信任 AI
- 3(n):拒绝,AI 会收到"被拒绝"的消息,自己想办法适应
Run 模式下的权限行为
reasonix run 是一次性的、非交互的,它不会弹对话框问你。所以它的行为是:
Ask级别的调用 → 自动放行(假设你在场监督)Deny级别的调用 → 硬阻断,AI 收到一条"被阻止"的消息
自定义规则:精确到命令级别
默认的 ask 模式已经够安全了。但如果你想更精细地控制,可以写规则:
[permissions]
mode = "ask" # 没有规则匹配时的兜底行为
deny = ["bash(rm -rf*)", "bash(git push*)"] # 硬阻断:这些操作在任何模式下都不允许
allow = ["bash(go test*)", "bash(git status*)", "bash(ls*)"] # 放行:安全操作永不询问
ask = ["write_file(/etc/*)"] # 强制询问:写入 /etc 下的文件必须问我规则语法:
ToolName— 匹配该工具的所有调用,比如write_fileToolName(glob)— 匹配该工具调用中的操作对象,比如bash(rm -rf*)匹配所有以rm -rf开头的 bash 命令- 支持的通配符:
*匹配任意字符,?匹配单个字符
规则的优先级
deny(硬阻断) > ask(询问) > allow(放行) > 兜底(mode)这个优先级意味着:
# 即使你把模式设为 allow,deny 规则仍然生效
mode = "allow"
deny = ["bash(rm -rf*)"] # rm -rf 仍然被硬阻断
# 即使你放行了所有 bash 命令,仍然可以针对特定命令要求询问
allow = ["bash"]
ask = ["bash(docker*)"] # docker 命令还是要问我三种常用配置模板
配置一:新人模式(最安全)
[permissions]
mode = "ask"
deny = ["bash(rm -rf*)", "bash(shutdown*)", "bash(reboot*)", "bash(sudo*)", "bash(docker rm*)"]适合:刚接触、还在熟悉阶段、在重要服务器上使用。
配置二:日常开发模式(平衡)
[permissions]
mode = "ask"
deny = ["bash(rm -rf*)", "bash(git push*)", "bash(> /dev/*)"]
allow = ["bash(go test*)", "bash(git status*)", "bash(git diff*)", "bash(ls*)", "bash(cat*)", "bash(python3 *)"]适合:日常写代码,放行安全操作,对敏感操作保持警惕。
配置三:信任模式(高效)
[permissions]
mode = "allow"
deny = ["bash(rm -rf /)", "bash(sudo rm*)"]适合:你在旁边盯着,想让 AI 全速干活。
四、第三层:Sandbox(沙盒)— 最后的防线
如果说权限规则是"法律",那沙盒就是"监狱"——即使法律被绕过了,人也逃不出监狱。
文件写入沙盒
默认情况下,AI 只能在当前工作目录里写文件:
[sandbox]
# workspace_root = "" # 留空 = 当前目录,文件只能写在这里
# allow_write = ["/tmp"] # 额外允许写的目录这意味着:
- 你在
/home/user/my-project启动 Reasonix - AI 想写文件,只能写在
/home/user/my-project/*下面 - 哪怕 AI 试图用
../../etc/nginx.conf越界,符号链接和..都会被解析拦截
你让 AI 写一个脚本到 /tmp/test.sh:
AI 调用 write_file,目标路径:/tmp/test.sh
沙盒检查:/tmp/test.sh 不在 /home/user/my-project 下
结果:❌ 拒绝写入,错误信息返回给 AI
AI 收到错误,自己想办法适配bash 命令沙盒(macOS)
在 macOS 上,不光是文件写入被限制,连 bash 命令都在沙盒里跑:
[sandbox]
bash = "enforce" # macOS 默认开启,用 Seatbelt 技术实现
network = true # 是否允许 AI 联网受沙盒保护的 bash 命令:
- 只能写项目目录 + 临时目录 + 工具链缓存
- 网络访问受
network开关控制 - 想越界?沙盒直接拒绝,然后权限层会问你"要不要放行一次"
💡 Linux 用户:bubblewrap 支持已经在路上了。目前 Linux 上 bash 沙盒暂退化为不限制,但文件写入沙盒和权限规则始终生效。
五、三层防护全开是什么效果?
我模拟了一个真实场景来测试:
任务:让 Reasonix 帮我"优化服务器配置"
第一关:Plan Mode
→ AI 先读文件,写计划
→ 我看到计划里有修改 /etc/nginx.conf
→ 我决定"计划通过"
第二关:Permission Rules
→ AI 试图 write_file /etc/nginx.conf
→ 命中规则 ask = ["write_file(/etc/*)"]
→ 弹窗问: "允许写入 /etc/nginx.conf?"
→ 我按 1(允许本次)
第三关:Sandbox
→ 假设我没有放行,AI 硬写
→ 沙盒检查:/etc/nginx.conf 不在工作目录下
→ ❌ 拒绝写入,AI 收到错误三关全过,AI 才能碰到你的文件。漏一关还有下一关兜底。
六、对比一下竞品
| 安全特性 | Reasonix | Cursor | Claude Code |
|---|---|---|---|
| 写入前询问 | ✅ 默认开启 | 部分 | ✅ |
| 自定义权限规则 | ✅ 精确到命令级别 | ❌ 只能全局开/关 | ❌ 只能环境变量控制 |
| deny 硬阻断 | ✅ deny > 一切 | ❌ | ❌ |
| 文件沙盒隔离 | ✅ 符号链接安全 | ❌ | ❌ |
| bash 沙盒 | ✅ macOS(Linux 开发中) | ❌ | ❌ |
| 计划模式前置审核 | ✅ 可选的 auto_plan | ❌ | 部分 |
| 开源可审计 | ✅ MIT 开源 | ❌ 闭源 | ❌ 闭源 |
写在最后
这一篇的内容比较多,我帮你总结一下:
| 层级 | 作用 | 比喻 |
|---|---|---|
| Plan Mode | 先写方案,你审批 | 开工前先交方案 |
| Permission Rules | 精确控制每个命令 | 门禁系统,按权限刷卡 |
| Sandbox | 物理隔离,跑不出去 | 监狱围墙 |
- 计划模式漏了 → 权限规则兜底
- 权限规则漏了 → 沙盒隔离兜底
- 沙盒也漏了 → ……那只能说明攻击者太强了,但至少你已经比 99% 的人安全
mode = "ask"),用一段时间后,根据你的使用习惯逐步自定义规则。先用熟了再放开,别一上来就全放行。🔜 下一篇预告:从零读懂 reasonix.toml
前三篇装好了、会用模式了、知道怎么设权限了——但那个 reasonix.toml 文件里还有好多配置项没讲过。provider 怎么配多个模型?statusline 怎么自定义?多模型协同要改哪一行?下一篇一次性讲清楚。
>
关注我,带你用最少的钱,薅最狠的 AI 羊毛。
📌 互动话题:你用过 AI 编程工具出过安全事故吗?或者你做过什么奇怪的权限设置?评论区聊聊。