很多 agent workflow 的权限判断都发生得太早。
用户说“帮我完成这个任务”,agent 做了一个计划,然后一路执行。只要计划看起来合理,后续动作就被默认放行。这在低风险任务里问题不大,但在真实项目里非常脆弱。
因为计划阶段的许可,不等于执行阶段的权限。
运行时权限要问的是:在当前状态下,这个具体动作是否仍然可以执行?
计划许可为什么不够
计划阶段看到的是一个抽象任务。执行阶段面对的是具体资源、具体文件、具体账号、具体数据和具体副作用。
例如,用户让 agent “把文章同步到站点”。这句话不等于允许 agent 部署到生产环境。同步草稿、切换 published、运行 build、提交 Git、推送远端、触发 Cloudflare 部署,是不同权限等级的动作。
再例如,用户让 agent “修复支付问题”。这不等于允许它改生产数据库、绕过 KYC、重算账户余额或触发提现。每个动作都要在 action-time 重新判断权限。
这就是 runtime authority 的核心:权限不是一次性授予的,它要在关键动作发生前被重新构造。
Reconstructive authority
我更认可的形式是 reconstructive authority。
agent 在执行关键动作前,应从当前状态重新构造权限依据:
- 用户明确授权了什么?
- 当前动作会影响哪个资源?
- 这个资源的 owner 是谁?
- 当前状态是否与计划阶段一致?
- 项目规则是否允许自动执行?
- 是否涉及凭证、资金、生产、公开发布或不可逆变更?
- 是否有足够证据证明动作必要且边界清楚?
如果权限可以构造,动作进入下一步。如果权限不完整,agent 应该请求人工确认。如果权限不可构造或风险越界,agent 应该停止。
停止不是失败。停止是治理系统正常工作。
Autonomy gate:不要用一个总开关
很多团队会把 agent 分成“自动模式”和“手动模式”。这个划分太粗。
更好的做法是为每个动作设置 autonomy gate:
allow:低风险、可回滚、证据充足、项目规则允许,直接执行。
ask:目标合理,但缺少关键授权、存在不确定性、或会触及中风险边界,需要人工确认。
block:违反项目规则,或者触及明确禁止的动作,不能执行。
halt:权限无法从当前状态重建,或者 agent 发现任务目标本身已经不可靠,应停止并汇报。
这个门禁不应该只写在提示词里。至少在成熟项目里,它应该进入脚本、hook、MCP server、CI、review checklist 或项目控制平面。
哪些动作必须更谨慎
并不是所有动作都需要同样重的门禁。治理的目标不是拖慢所有事情,而是把人工放在真正的风险边界上。
常见高风险动作包括:
- 生产部署、数据库迁移、线上配置变更;
- 删除文件、重写历史、批量移动文档;
- 安装新依赖、启用新 MCP、添加凭证读取能力;
- 公开发布文章、社交媒体发帖、发送邮件;
- 涉及资金、身份、合规、健康、安全或法律判断的动作;
- 会改变项目长期规则的 skill、AGENTS.md、hook 或 daemon。
这些动作不一定都不能自动化,但不应该只靠“模型觉得可以”来执行。
对 AI 工程的实际含义
运行时权限和自治门禁会改变 agent harness 的设计。
任务入口要区分用户目标和授权范围。执行计划要标出哪些步骤会产生副作用。工具调用要带 risk label。关键动作前要能生成一个简短的 authority summary。审查时要看 agent 为什么认为自己有权执行,而不是只看它执行了什么。
这套机制不需要一开始就很复杂。最小可行版本可以只是三件事:
- 给工具和命令标记风险等级;
- 规定哪些动作必须 ask;
- 要求 agent 在高风险动作前明确说明授权依据和停止条件。
但这三件事必须进入项目机制,而不是只留在一次聊天里。
核心判断
agent 越能执行,权限就越不能只在任务开始时判断。
真正可靠的自治不是“让 agent 一路跑到底”。可靠自治是:低风险动作快速执行,高风险动作自动减速,权限不明时主动停下。
