Capability should not decide authority

Proposition

A stronger model should make better use of a defined permission set. It should not quietly acquire broader access to the systems around it.

The most dangerous sentence in an agent system is often an innocent one: "This model is reliable enough now."

Reliable enough for what? Reading a repository? Editing a draft? Opening a pull request? Issuing a refund? Changing access controls? Each action has a different consequence. Treating model quality as a general license to grant more power is how capability becomes authority by accident.

The two should be separated.

A model may improve dramatically at planning, code generation, visual inspection, or tool selection. That improvement changes what it can accomplish inside a task. It does not answer who is accountable for a payment, a public statement, a production deployment, or the exposure of customer data. Those are questions of identity, policy, and organizational judgment. They should remain outside the model.

The false ladder of autonomy

Teams often imagine autonomy as a single ladder. At the bottom, an assistant answers questions. A little higher, it edits a file. Higher still, it runs commands, calls external services, and eventually operates without supervision. In this picture, a better model naturally climbs toward unrestricted action.

Real systems do not work that way. An experienced engineer may have broad technical ability but no authority to approve an expense. A finance operator may be authorized to make a payment but not to change production infrastructure. A service account may have exactly one narrow role despite being able to execute it flawlessly.

Agent systems need the same separation. Capability describes what the model can reason about. Authority describes what the runtime permits an identity to do in a particular context. The first may change with a model release. The second should change only through an explicit policy decision.

This distinction is especially important because capable models are good at finding paths around an obstacle. That is useful when the obstacle is a failing build. It is unacceptable when the obstacle is a permission boundary. A system that lets a model reinterpret its own access rules has placed the policy inside the entity it was meant to constrain.

Make authority concrete

Vague permissions are hard to review. "The agent can use GitHub" does not say whether it can read public issues, create a branch, merge a pull request, change repository settings, or revoke another person's access. "The agent can use billing" does not say whether it can inspect invoices, draft a refund, or move money.

Useful policies describe actions at the level at which consequences differ:

  • read customer records;
  • create a draft without sending it;
  • request a deployment but not publish it;
  • write to an isolated branch but not the shared main line;
  • call a connector through a brokered credential;
  • ask a person to approve a destructive or external action.

The goal is not to turn every permission into an enormous role matrix. It is to put meaningful distinctions where the system would otherwise flatten them. Reads, writes, deletes, sends, payments, and administrative changes should not all be represented by one broad tool grant.

An approval is then more intelligible. The runtime can say exactly what the agent is asking to do, why it needs that action, what it will affect, and whether the action can be reversed. The person approving it does not need to infer the real effect from a sentence generated in chat.

Scope should follow the task

Broad credentials are convenient during a demo because they remove friction. They are costly later because they make every failure larger and every audit less clear. A shared token can blur together different people, agents, purposes, and sessions. When something goes wrong, the team can see that an API key was used but not necessarily why.

A task-scoped identity creates a better boundary. The runtime knows which principal initiated the work, which agent is acting, which project owns the task, and which connectors or operations are allowed. Credentials can be resolved outside the agent environment and used only for the permitted request. The agent receives a result, not a reusable secret.

This design also makes revocation practical. If a specific task or agent needs to lose access, the system can remove that grant without rotating a key that every unrelated workflow depends on. A team can change a policy without rewriting the model's instructions or hoping a new prompt has covered every edge case.

More capability, same guardrails

The right test for an AI-native runtime is not whether it can hand a strong model a production token. It is whether a substantially stronger model can enter the same runtime without requiring a new trust model.

Could the model do more useful work with the same repository access, same network rules, same tool grants, same approval gates, and same review path? Good. That is the benefit of better capability.

Would the model gain authority simply because it now seems more likely to succeed? That is a warning sign. Success probability can inform how often an agent is asked to propose work, how much evidence it is expected to gather, or which low-risk tasks are automated. It should not silently change who gets to authorize consequential actions.

This principle has an operational benefit as well as a safety benefit. It makes model replacement easier. If authority is implemented in the control plane rather than in a provider-specific prompt, teams can change models, use different models for different parts of a task, or run a model locally without rebuilding their security assumptions.

The future will bring models that can carry larger plans and operate across more tools. The durable response is not to make them less capable. It is to make authority explicit enough that capability can grow without taking the controls with it.

能力不应决定权限

论点

更强的模型应该更好地使用既定权限,而不是因为能力提升就悄悄获得更广泛的系统访问权。

Agent 系统里最危险的一句话,往往听起来很无害:“这个模型现在已经足够可靠了。”

对什么来说足够可靠?读取仓库?编辑草稿?创建 Pull Request?发起退款?修改访问控制?每个动作的后果都不同。把模型质量当成扩大权限的通行证,正是能力意外变成权限的开始。

两者应该被分开。

模型可能在规划、代码生成、视觉检查或工具选择上快速进步。这种进步改变了它在任务中能够完成什么,却没有回答谁应该为付款、公开声明、生产部署或客户数据暴露负责。这些属于身份、政策和组织判断,不应该交给模型决定。

虚假的自治阶梯

团队经常把自治想象成一架单独的梯子。最底层是回答问题的助手,再高一点是编辑文件,然后是运行命令、调用外部服务,最终变成不受监督的系统。在这种想象里,更好的模型自然会逐步走向不受限制的行动。

真实系统并不是这样。经验丰富的工程师可能拥有很强的技术能力,却没有批准费用的权限。财务人员可能有权付款,却不能修改生产基础设施。服务账号即使能够完美执行一个动作,也可能只被允许承担一个极窄的角色。

Agent 系统也需要这种分离。能力描述模型能够理解和推理什么;权限描述运行时允许某个身份在特定上下文中做什么。前者可能随着模型版本变化,后者则应该只通过明确的政策决定改变。

这种区别尤其重要,因为能力强的模型很擅长绕过障碍。面对失败的构建,这种能力很有用;面对权限边界,就完全不同了。如果系统允许模型重新解释自己的访问规则,那么约束它的政策实际上已经被放进了被约束的对象里。

让权限变得具体

模糊的权限很难审查。“Agent 可以使用 GitHub”并不能说明它能否读取公开 Issue、创建分支、合并 Pull Request、修改仓库设置或撤销他人的访问权。“Agent 可以使用账单系统”也没有说明它能否查看发票、起草退款或移动资金。

有用的政策应该在后果不同的层级描述动作:

  • 读取客户记录;
  • 创建草稿但不能发送;
  • 请求部署但不能发布;
  • 写入隔离分支但不能写入共享主线;
  • 通过受控凭证调用外部工具;
  • 请求人员批准破坏性或外部动作。

目标不是把每项权限都变成庞大的角色矩阵,而是在系统原本会把它们压平的地方保留有意义的区别。读取、写入、删除、发送、付款和管理变更,不应该都被表示成一个宽泛的工具授权。

这样,审批才真正可理解。运行时可以明确说明 Agent 要做什么、为什么需要这个动作、会影响什么,以及动作是否可逆。批准者不需要从一段聊天生成的句子里猜测真实影响。

权限范围应该跟随任务

在 Demo 阶段,宽泛凭证很方便,因为它减少了摩擦。之后它会变得昂贵,因为每次失败的影响更大,审计也更不清楚。共享 Token 会把不同的人、Agent、目的和 session 混在一起。出问题时,团队能看到某个 API Key 被使用,却未必知道为什么被使用。

按任务划分的身份提供了更好的边界。运行时知道是谁发起任务、哪个 Agent 正在行动、哪个项目拥有任务,以及允许使用哪些操作。凭证可以在 Agent 环境之外解析,只用于被允许的请求。Agent 获得的是结果,而不是可重复使用的秘密。

这种设计也让撤销变得实际。如果某个任务或 Agent 需要失去访问权,系统可以移除该授权,而不必轮换所有无关工作流共用的密钥。团队也可以修改政策,而不必重写模型指令,或希望一条新 Prompt 覆盖所有边界情况。

能力更强,护栏不变

AI-native runtime 的正确测试,不是它能否把生产 Token 交给一个强模型,而是一个显著更强的模型能否在不改变信任模型的情况下进入同一个运行时。

在相同的仓库访问、网络规则、工具授权、审批门槛和 review 路径下,模型能否完成更多有用工作?这就是能力提升的价值。

模型是否只是因为更可能成功,就自动获得了更多权限?这是一个警告信号。成功概率可以影响 Agent 被要求提出工作的频率、需要收集多少证据,或哪些低风险任务可以自动执行;它不应该悄悄改变谁能够授权有后果的动作。

这个原则也会让模型替换更容易。如果权限在控制平面中实现,而不是藏在特定供应商的 Prompt 中,团队就可以切换模型、为任务的不同部分使用不同模型,或在本地运行模型,而不必重新建立安全假设。

未来的模型会承载更大的计划、操作更多工具。持久的应对方式不是让它们变得不那么强,而是让权限足够明确,使能力能够增长,却不会把控制边界一起带走。