摘要

  • IETF 一份个人草案的 02 版为代理工具授权加入“可省略参数”和未列名参数。省略前者时,工具会自行采用默认值,授权检查点看不到默认值造成的效果。
  • 参数表中的 "*" 可放行将来才加入工具的参数。令牌签名没有变化,实际能做的事却可能随工具更新而扩大。

通行证没改,门却多了一扇

公司给 AI 代理签了一张工具通行证:可以调用哪项工具,哪些参数可用,都写在里面。后来工具多了一个开关,旧通行证能不能打开它?Niki Aimable Niyikiza 的新版草案给出一个叫人皱眉的答案:如果当初写了 "*",新开关也可能已经获准。签名证明是谁发的证,不能证明发证人预见了日后新增的参数。

10 月 27 日的公告和 IETF Datatracker把这份文件列为个人 Internet-Draft。它提出的 AAT 令牌允许持有人离线派生权限相等或更窄的令牌;执行检查的一方先验证签名链,再看具体工具调用是否符合末端令牌的参数表。整个链条算得清楚,但参数表后面的工具并非静止不动。

01 版要求已列名参数必须出现,未列名参数一律拒绝。新版致谢中提到,一项独立实现发现这种封闭规则无法约束真正可选的参数。02 版于是允许在参数约束上写 optional: true,也用 "*" 接纳未列名参数。星号后面只能是不限取值的通配约束;空参数表与这扇敞开的门效果相同。

省略,也是一次授权决定

草案举了读文件工具的例子:令牌把 path 钉死在一份文件上,head 和 tail 的行数设上限,但可省略。代理写出 head 时,检查点能核对行数。代理不写时,工具按自己的默认值执行。草案提醒,省略可选的 head 可能让读文件工具返回整份文件。检查点只知道参数没出现,看不到默认行为最终读了多少。发证人批准“可省略”,其实也批准了工具自己决定省略的后果。

星号则把问题推向未来。工具升级后若增加一个参数,旧令牌的 "*" 可以照样接纳。草案劝发证人不要在会产生外部效果的工具上使用星号,也允许执行检查点拒绝未列入工具公开输入模式的参数。但这些是部署者要作的选择;草案没有强制把工具版本锁进令牌,也没有规定工具一加参数就要重请授权。

所以,“令牌验证通过”只能说明签名和参数匹配规则没出错。它回答不了谁同意了新开关,谁审过当前默认值。要追问这件事,必须知道调用时的工具版本、输入模式,以及是谁决定留下通配符。加密签名不会替机构保存未来的操作手册。

02 版附录还直说,这次有会破坏 01 版实现的规范变化,可省略和未列名参数就是其中一项。兼容真实工具当然有用,重发每张令牌也有成本。但把兼容性写成星号,等于让维护工具的人在不改令牌的情况下改变授权的实际范围。这张通行证的空白处,终究由后来的工具填上。

原始资料