跳到正文

我不再给 agent 逐条点“允许”了:安全管的是爆炸半径,不是权限弹窗

Agent 权限弹窗点多了,人很快只剩机械确认。把任务隔离在可重建的环境里,限制文件、身份和网络,才有条件放心开启 auto-accept。

2026年8月19日·1,159 字·4 分钟
我不再给 agent 逐条点“允许”了:安全管的是爆炸半径,不是权限弹窗

我不再给 agent 逐条点“允许”了:安全管的是爆炸半径,不是权限弹窗

封面:安全管的是爆炸半径,不是权限弹窗

agent 跑着任务,弹出确认框:要执行一条 shell 命令,允许吗?我扫了一眼,点允许。两分钟后又弹一个,再点。一下午下来我发现,大部分“允许”根本没过脑子——弹窗假设人在把关,实际上人只是一个延迟更高的自动确认器。

可真要全开 auto-accept,心里又发毛。万一它删错目录、push 错分支呢?这个问题我一直没想明白。直到上周读到 Sentry 工程师 Burak Yigit Kaya 的一篇文章,标题很不体面:一台 40 英镑、在他蹲坑时替他写代码的盒子。

他给 opencode 开了 YOLO 模式,一个弹窗都不留,因为 agent 能碰到的东西,本来就没多少。

一台 40 英镑的盒子

Burak 在 eBay 上花 40 镑买了台二手 Dell OptiPlex 3050。本来想刷 OpenWRT 当路由器,折腾失败后塞进了抽屉。搬家时他又把机器翻出来,装上 Ubuntu Server,让 opencode 以 systemd 服务常驻,再用 Tailscale 从手机访问 web UI。

后来他又加了内存、SSD 和网卡,总成本已经接近 100 镑。不过它依然是一台可以随时重装的旧电脑,没有生产环境,也没有值得偷的密钥。

他对最坏情况的估计是:机器被搞坏,花一个下午从头重建。这个代价他付得起,所以日常命令全部 auto-accept。

全权限只存在于这台机器里

这台机器后来解决了一个困扰 Burak 近二十年的 Linux WiFi AP 问题,还接管了家里的灯光。最冒险的一次,是跑在机器上的 agent 亲手迁移了机器自己的系统盘,过程中还在 web UI 里继续和他对话。

这种任务要连续执行很多条命令。每一步都等人拿起手机确认,常驻 agent 最后只会变成一台反应很慢的远程终端。

Burak 交出去的只有那台旧 Dell。所谓“全权限”,只在这台机器里成立。出了这台机器,权限就到头了。

权限弹窗与爆炸半径的区别

爆炸半径说白了,就是一次错误最多能造成多少损失。逐条审批依赖人每次都保持警觉;Burak 直接把损失限制在一台能重装的机器上。后一种做法更容易验证。

弹窗应该留给少数动作

这不等于权限弹窗一律没用。发布版本、部署生产、删除线上数据,这些动作发生得少,后果又很难撤回,值得停下来让人确认。

问题出在另一种弹窗:跑测试要确认,读文件要确认,执行 git status 也要确认。提醒一旦变成背景噪声,按钮还在,审核已经没了。

更合理的分法,是让 agent 在隔离环境里自行执行普通命令,只在动作越过边界时停下来。审批守在边界上,不必堵在每一步前面。

我现在先检查四件事

不一定非要买一台单独的电脑。容器、虚拟机和一次性云主机都能用,关键是开工前把这四件事说清楚:

  • 文件:用一次性 clone、容器或虚拟机,不挂载主目录、SSH 目录和 Docker socket。
  • 身份:只给当前任务需要的短期凭证,不给生产密钥;远端仓库用受保护分支兜底。
  • 网络:不需要联网就断网,需要联网就限制目的地。独立机器能挡住误删宿主机,挡不住拿着你的 token 调生产 API。
  • 恢复:代码有远端,数据有快照,环境能重建。不能恢复的东西,不该放进自动执行的圈里。

文件、身份、网络和恢复四道边界

恢复得先发现问题。CI 十秒报红,和数据写歪十天后才被看见,损失不是一回事。看不到结果的任务,我不会让 agent 长时间自己跑。

worktree 仍然有用,但它只负责整理 Git 改动,不是安全边界。agent 站在 worktree 里,照样可能读父目录、删别的文件、把错误分支推上远端。

现在开任务,我会先过一遍文件、身份、网络和恢复。边界内的普通命令可以自动执行;发布、部署、删除数据这些跨出去的动作,继续保留人工确认。边界说不清,就先不开 auto-accept。

点过“允许”只说明人在线;出了错还能收得住,才说明边界真的存在。

版权声明

作者
XingKaiXin
标题
我不再给 agent 逐条点“允许”了:安全管的是爆炸半径,不是权限弹窗
发布时间
2026年8月19日

本作品采用CC BY-NC-ND 4.0 DEED许可。