
最近用ChatGPT、Codex做真实项目时我越来越明显地感觉到一个变化以前AI主要是“会不会做”现在开始越来越像“允不允许它做”。以前让AI帮忙大多数时候只是解释代码。生成函数。分析报错。给出修改建议。它能做什么边界很简单。但现在Agent越来越能自己执行读项目。修改文件。运行Shell。安装依赖。调用工具。访问数据库。触发测试。操作CI。甚至继续完成多轮任务。这时候真正限制Agent效率的开始不只是模型能力。而是它到底被允许走到哪一步。权限太小任务做到一半就停下来找人。权限太大一次错误又可能扩大成更大的影响面。所以Agent越能独立工作一个新的开发问题会越来越重要Permission Boundary——权限边界真正难的不是给不给权限。而是怎么让Agent在足够完成任务的前提下又只拥有必要的权限。一、一个很真实的场景Agent其实知道怎么做但做到一半停了假设你让Codex修一个CI失败。它很快定位到依赖版本不一致。接下来它需要修改配置。重新安装依赖。运行测试。更新lock文件。前面都没问题。但到了某一步它需要执行一个外部命令。权限不够。于是任务停下来“需要授权。”你确认以后继续。过一会它又需要访问另一个目录。再停。然后需要读取某个环境变量。再停。最后一个本来Agent可以连续完成的任务变成执行→ 等人→ 执行→ 等人→ 执行→ 再等人这时候瓶颈已经不是AI会不会做。而是权限边界把任务切碎了。二、为什么以前这个问题没那么明显因为过去AI大多只给建议。比如它告诉你运行这条命令。修改这个文件。安装这个依赖。真正执行的是人。所以权限一直天然掌握在人手里。Agent不需要自己承担权限问题。但现在情况变了。Agent越来越从Advisor变成Executor一旦它开始真正执行任务权限就不再是外围问题。而变成核心Workflow的一部分。因为没有权限Agent不能真正自治。权限太大风险又会上升。所以Agent能力越强权限设计反而越重要。三、真正的问题不是“权限越多越好”很多人看到Agent总被权限卡住很容易产生一个想法那就把权限开大一点。比如整个仓库可写。Shell全开放。网络全开放。数据库直接连。部署权限也给。这样Agent当然更顺。但风险也会同步放大。因为Agent一旦理解错任务。修改错目录。运行错命令。调用错环境。影响面可能马上扩大。所以权限问题从来不是开还是不开。真正的问题是最小权限下Agent还能不能完成完整任务。四、为什么“最小权限”在Agent时代会越来越重要传统安全里一直讲Principle of Least Privilege。也就是只给完成任务所需的最小权限。这个原则放到Agent身上反而更重要。因为Agent可能读错上下文。误判任务边界。自动连续执行多个动作。如果权限没有限制一个错误决策可以连续向下传播。比如本来只是修测试。结果它发现需要改配置。接着又重启服务。修改数据库。调用外部接口。如果任务最开始就被限定在测试环境。指定目录。只读数据库。风险就会小很多。所以权限不是单纯限制Agent。它其实是在限制错误方向最多能扩散多远。五、权限边界本质上就是“爆炸半径控制”可以把它理解成Blast Radius——影响半径Agent每一次操作都可能影响一定范围。如果它只能改当前Worktree。那错误最多影响这个Worktree。如果它拥有整个共享目录写权限。影响面就扩大。如果还能操作生产数据库。风险再进一步扩大。所以Agent权限设计真正要回答的是这次任务最坏情况下允许影响多大这比单纯问“它需不需要这个权限”更有意义。六、为什么权限太小也会反过来降低Agent质量因为频繁授权会破坏任务连续性。Agent原本在一个完整上下文里工作。中途因为权限停下来。人过一段时间才回来确认。任务上下文就被切断。甚至有些Agent为了绕过权限限制会选择更复杂的替代方案。例如不能访问真实接口。那就临时Mock。不能运行某命令。那就修改配置绕过去。于是权限限制如果设计不好不只是变慢。还可能改变Agent的实现路径。所以理想状态不是权限越少越安全。而是权限刚好覆盖任务闭环。七、哪些权限最容易成为新的开发瓶颈1. 文件权限Agent能不能读代码。改代码。创建文件。删除文件。写指定目录。如果边界不清楚就很容易要么总被挡。要么改太多。2. Shell执行权限很多真实任务最终都需要运行测试。安装依赖。执行脚本。构建项目。如果Shell权限频繁人工确认自治程度会明显下降。3. 网络访问权限比如下载依赖。访问内部API。查文档。调用外部服务。完全禁止Agent能力受限。完全开放安全风险又很高。4. 数据库权限这里尤其敏感。只读和可写差别非常大。开发库和生产库也完全不同。Agent如果只是排查问题很多时候只读已经够。如果直接给写权限风险会明显上升。5. CI/CD和部署权限这是最高风险的一类。如果Agent可以触发CI。合并代码。部署环境。甚至操作生产。那权限设计就必须非常清楚。否则Agent从“写代码工具”变成能够改变真实系统状态的执行主体。八、为什么未来可能不能只用“有权限 / 没权限”两档因为真实任务太复杂。更合理的方式可能是分层。比如Level 1只读读代码。看日志。查Metrics。Level 2本地可写修改Worktree。运行本地测试。Level 3受限执行安装依赖。访问测试环境。写开发数据库。Level 4高风险操作修改共享配置。触发部署。访问生产。这样不同任务可以进入不同权限层。而不是所有Agent都拿同一套权限。九、权限边界还必须跟“任务边界”一起设计假设一个任务只是修复单元测试。那合理权限可能只需要读写当前仓库。运行测试。根本不需要数据库写权限。部署权限。外部生产API。如果任务是排查线上慢查询。可能需要日志。Tracing。数据库只读。但仍然不一定需要修改生产。所以真正成熟的Agent Workflow应该做到先定义任务再派发权限。而不是先给Agent一个固定大权限然后让它什么都做。十、最危险的一种情况Agent权限长期固定不变如果Agent一直拥有很宽的通用权限。那么任何一个任务都自动继承同样能力。这很方便。但问题是低风险任务也拥有高风险能力。比如只是改README。Agent理论上却仍然可以运行Shell。访问数据库。操作部署。这会让任务风险和权限风险完全脱钩。更合理的是权限应该跟任务动态变化。这也是为什么以后Agent系统很可能越来越需要Task-Scoped Permissions。十一、一个实用办法给任务先做“权限预算”执行前先问这次任务最少需要哪些权限比如文件读写需要。Shell需要。网络不需要。数据库只读。部署禁止。这其实就是Permission Budget——权限预算不是越省越好。而是只给足够完成任务的权限。如果任务执行中真的需要扩大再单独升级。这样既不会频繁卡死也能控制风险。十二、第二个办法把高风险动作设成“硬检查点”有些权限就不适合完全自动化。比如删除数据库数据。修改生产环境配置。部署主分支。变更权限系统。这类动作可以规定Agent可以做到前一步。但真正执行前必须停下来。例如它可以生成SQL。解释影响范围。模拟结果。但最终DELETE需要人工确认。这类Hard Checkpoint很重要。因为真正好的权限设计不是不让Agent做事。而是把人工介入放在最值得介入的地方。十三、第三个办法尽量使用沙箱很多任务其实不需要直接在真实环境执行。例如代码修改。依赖安装。测试。Build。完全可以先在独立Worktree。容器。临时环境。沙箱数据库。执行。这样Agent可以获得比较高的操作自由度。但影响范围仍然可控。这其实解决了一个很重要的矛盾高自治 低风险不一定冲突。关键在于Agent在哪个环境里获得高权限。十四、第四个办法权限升级必须留下原因如果Agent原本只有只读权限。中途突然请求数据库写权限。不要只弹一句“Allow”更合理的是让它解释为什么需要要修改什么是否有替代方案影响范围多大如果拒绝会发生什么这不仅方便人判断。以后也能作为权限审计记录。十五、权限变化本身也应该可观测第一篇讲了可观测性。权限其实也需要Observability。比如系统应该知道哪个Agent。哪个任务。什么时候。申请过什么权限。真正执行了什么操作。影响了哪些资源。否则一旦出现问题你甚至不知道Agent到底做过什么。所以Agent权限体系最终也会和日志。审计。Tracing。紧密结合。十六、给自己测一个指标权限阻塞率这篇我建议只看一个核心指标Permission Blocking Rate——权限阻塞率统计最近一段时间Agent任务。看有多少因为缺文件权限。不能执行命令。无法访问环境。缺数据库权限。等待人工审批。而被中途阻塞。比如最近20个Agent任务。其中7个都因为权限问题停下来。那么权限阻塞率 35%。这个数字能很直接反映Agent自治到底被权限卡得多严重。十七、权限阻塞率高于30%说明什么说明当前权限设计可能过于碎片化。Agent虽然有能力完成任务。但实际Workflow里频繁等人。暂停。重新恢复。这时候继续提高模型能力收益不会太大。因为真正限制它的不是智力。而是它没有足够连续的行动空间。十八、权限阻塞率10%—30%重点是找高频阻塞点这个阶段一般不需要直接放大所有权限。更应该看哪些权限最常导致中断。比如80%的阻塞都来自运行测试需要Shell确认。那可以考虑把安全测试命令加入白名单。如果大部分阻塞来自读取某个固定目录。那就优化目录授权。也就是说先消灭重复阻塞。而不是一次把所有门都打开。十九、权限阻塞率长期低于10%才说明Agent真正有稳定执行空间如果大多数任务都可以自主读取。自主修改。自主测试。必要时访问受限工具。只有真正高风险操作才需要人工确认。那说明权限体系已经比较成熟。这时候Agent自治才能真正转化成效率。二十、但权限阻塞率越低不代表越好这里也要避免走极端。如果一个系统权限阻塞率是0。有两种可能。一种是权限设计非常成熟。Agent几乎不需要无意义确认。另一种是权限开得太大什么都不拦。这就很危险。所以权限阻塞率必须和另一个问题一起看高风险动作有没有硬边界。最理想的状态不是什么都能做。而是低风险任务几乎不阻塞。高风险任务一定会停。二十一、为什么权限边界会成为新的“开发瓶颈”因为未来很多任务可能已经不是模型不会。而是流程不允许。比如Agent完全知道怎么修Bug。更新配置。验证环境。但因为中间三个权限点始终需要人工确认。那真正的吞吐瓶颈就变成审批。授权。风险判断。所以以后优化Agent效率可能不只是换更强模型。还包括重新设计权限架构。二十二、Plus和Pro怎么判断如果你的权限阻塞率还很高Agent大量任务做到一半就需要人工确认。权限升级。环境访问。这种情况下当前真正限制效率的不是AI容量。而是行动权限不连续。这时候Plus通常已经足够。更值得先优化任务级权限。沙箱。命令白名单。高风险检查点。审批规则。否则就算增加更多AI容量也只是产生更多“执行到一半等人授权”的任务。如果你的权限阻塞率已经很低Agent可以在安全边界内稳定完成读代码。修改。测试。受限工具调用。高风险动作也有明确检查点。同时大量成熟任务仍然排队。等待执行。AI容量真正成为瓶颈。这时候Pro才更容易转化成效率。因为Agent已经拥有足够安全、又足够连续的执行空间。增加AI产能以后才能真正增加吞吐。二十三、Agent时代真正成熟的权限设计不是“少给权限”而是“给对权限”这是我觉得这类趋势最值得注意的一点。Agent越强权限越不能粗放。完全不给它无法自治。全部给风险不可控。真正成熟的方式应该是根据任务。根据环境。根据风险。动态决定Agent到底能做到哪一步。于是未来Agent开发里的一个重要能力可能不再只是Prompt设计。Tool设计。Workflow设计。还包括Permission Design——权限设计最后ChatGPT、Codex越来越能自己执行真实工程任务以后一个新的问题正在变得越来越明显限制Agent的不一定是能力而可能是边界。权限太小每走一步都要找人。权限太大一个错误方向就可能造成更大的影响。所以未来真正高效的Agent Workflow不会追求“什么权限都给。”也不会追求“什么都要审批。”而是在最小必要权限下让Agent尽可能完整地完成任务。低风险操作可以连续执行。高风险操作必须明确停下来。不同任务拥有不同权限。不同环境拥有不同边界。这样Agent的自主性才不会和安全性冲突。所以以后如果你发现Codex明明知道下一步该做什么却频繁停下来等授权真正的瓶颈可能已经不是AI。而是权限边界还没有跟上Agent能力增长的速度。持续分享 Codex、大模型开发与 AI 编程实战内容。长期深度使用各类代码大模型也整理了稳定的Plus/Pro会员订阅渠道有需要可自取。