你给 agent 加的那步"人工确认",到底拦住了什么?
从这句话能提炼出一个判据:绕过它,要不要一份不在你自己手上的凭据。
一、官方自己把话说死了
先看这次上线的是什么。按 GitHub 官方 changelog(2026 年 7 月 23 日)的说法,Issues 里的 agent 可以自动打标签、设类型、指派、关闭,并展示它这么做的理由;仓库管理员来配置自动化级别——高置信度的改动自动应用,中、低置信度的则挂起,作为建议等人来看。上线时覆盖的范围是标签、字段、类型、关闭和指派这几项。
真正值得把手停下来的,是文档里紧跟着的这句:
这不是外部质疑,是产品方在自己的发布说明里写的。
它的意思很直白:挂起、等待确认、建议——这些状态是流程上的安排,不是权限上的拦截。那个 agent 如果本来就有修改 issue 的权限,它并不需要"通过审批"才能改;审批只是它这条工作流里被安排的一个环节。环节可以按设计走,也可以不走。
二、真边界和假边界,差在哪一层

把这件事从 Issues 里抽出来,它其实是一个到处都成立的区分。
假边界(流程层):它存在于调用方的逻辑里。程序走到这里,按约定停下来问一句。它能防的是"顺手做错",防不了"绕过来做"。UI 上的二次确认、工作流里的挂起待批状态、脚本里的 if confirm(),都属于这一层。
真边界(权限层):它存在于被调用方那边。你没有相应的凭据,请求到了服务端也会被拒。数据库的只读账号、令牌的 scope、仓库的写权限、生产环境的独立密钥,属于这一层。
区别不在于哪个更严格,而在于它由谁执行。流程层的关卡由"要被拦住的那一方"自己执行——这就是它的根本弱点。权限层的关卡由另一方执行,所以才拦得住。
于是就有了那个可复用的判据:
这里要特别说明为什么是"不在你自己手上",而不是"更高级别"。四眼原则、双人复核、受保护分支这类机制,绕过它们需要的往往不是更高的权限,而是另一个人手里的同级权限——但它们是货真价实的边界。如果按"要不要更高权限"去判,反而会把这些真控制误判成摆设,进而被拆掉。判据的关键不在等级高低,在这份凭据是不是由另一方掌握。
两者都有价值,别混着用就行。危险的从来不是"只有流程层",而是把流程层当成权限层来汇报——对上说"我们加了人工审批",听的人理解成"agent 动不了生产数据",这中间的落差,才是真正的风险敞口。
三、你现在就能查的三处
这条判据不需要等你去改架构,今天就能拿它扫一遍手上的东西。
第一处,agent 的令牌到底有多大。 不看它平时干什么,看它能干什么。把它的 token scope、仓库权限、数据库账号权限列出来——那才是它的能力上限。审批流程收窄的是"它通常会做的事",收不窄这个上限。
第二处,"挂起待批"状态存在哪里。 如果挂起状态只是调用方内存里的一个标记、或者一个可以被同一个身份改写的字段,那它和"没挂起"在权限上是同一件事。真正的挂起,应该是执行方那边还没拿到可以执行的凭据。
第三处,你对外怎么描述它。 这一处最容易被忽略,却最容易出事。文档、周报、给客户的安全说明里,如果写的是"所有变更需人工审批",而实现是流程层的,那就把这句话改准确:写成"默认走人工确认流程",而不是"未经审批无法变更"。
顺带说一句,GitHub 这次把范围写得很清楚(上线覆盖标签、字段、类型、关闭、指派),也给了退出的开关和查找挂起待批改动的搜索语法。肯把边界和范围写清楚的产品说明,通常比只报功能亮点的更值得信任——这条判断,放在任何一次产品发布上都成立。
如果你手上正好管着一个有写权限的 agent,今天可以只做一件事:把它的令牌权限列出来,和你对外声称的"需要审批"对一遍。对不上,就先改描述。
参考来源

· GitHub 官方 changelog《Agent automation controls in GitHub Issues in public preview》,2026 年 7 月 23 日。文中"高置信度自动应用、中低置信度挂起为建议供人审阅""上线覆盖标签/字段/类型/关闭/指派""审批是工作流便利而非安全控制"等,均引自该页原文口径。
· ⚠️该官方公告未给出任何置信度数值或比例,本文不做任何量化推测。
· 本文为产品与行业信息报道,文中判据为编辑观点,不构成任何安全方案建议;具体系统请以你自己的权限模型与安全评审为准。
夜雨聆风