# Human Gate (人类闸门)

*只在不可逆、对外或提权的动作之前出现，展示真实的差异。*

> **Human Gate（人类闸门）** 是由策略触发的检查点：在**不可逆、对外或提权**的动作生效之前，由人（或指定的审批主体）批准一个被完整渲染的具体动作。它被设计成稀少、具体、难以橡皮图章。

**AN-05** · 符合性等级: L1 Authority · 概念簇: 权限

## 要解决的问题

今天的“人在回路”要么是无休止的弹窗，要么什么都没有。Anthropic 披露，Claude Code 用户批准了 93%–97% 的权限提示；在它的受控实验里，人只拦住了 13.6% 被植入的危险命令，会话越长越差。这是厂商为推广自动模式做的研究，测的是识别被植入的提示，不是生产事故率，但方向很清楚。

同一份数据里还有另一个数字：用户对“计划”的拒绝率是 39%，对单个权限请求只有 3%。人会认真判断的，是计划和合并，不是每一次工具调用。

## 工作方式

- **只在少数地方出现：** 合并进受保护树、受保护树中的删除、对外共享或发布、出口、租约扩权、标签降级。分支上的写入不需要审批。
- **粒度是计划或合并。** 评审一个 PR，而不是五十个弹窗。
- **Gate Card 由 NAS 渲染：** 真实的差异、读清单摘要、租约、会话污点，绝不使用智能体的自述。选项：批准、收窄后批准、拒绝；超时默认拒绝。
- **批准绑定动作摘要：** 绑定差异哈希与租约，不能重放。
- **交付：** 推送、聊天、邮件或 CLI；可以委派；passkey 作为可选的强认证。
- **只升不降。** 可选的风险分类器（包括 LLM）只能把动作**升级**到闸门，永远不能**批准**。模型只能收紧，不能放宽。
- **疲劳度量：** 批准率与批准耗时；批准率异常高时，提示合并闸门或收紧策略。

## 从小处开始

- 受保护 main 加 PR 审阅（任何 Git 平台都行），再加一条推送通知。
- 或者一个 CLI：`nas gate approve <gate_id>`。
- 先把 Gate Card 做成“真实的差异”，别急着做花哨的界面。

## 接口草图

仅作示意。字段名在规范 v0.3 之前可能调整。

*gate-card.json*

```json
{
  "gate_id": "gt_2Mx4",
  "run": "run_91ab",
  "action": {
    "op": "merge",
    "from": "cleo/run_91ab",
    "into": "main",
    "files_changed": 4,
    "diff_sha256": "7d2a..."
  },
  "why": "Release notes are ready for review",
  "risk": {
    "session_taint": ["external"],
    "sources": ["web:example.com/changelog"],
    "destructive": false,
    "egress": false
  },
  "options": ["approve", "approve_narrowed", "deny"],
  "default": "deny",
  "expires_at": "2026-11-12T12:00:00Z"
}
```

## 规范的要求

- Gate Card **必须**展示由 NAS 计算出的真实差异，而不是智能体对它的描述。
- 批准**必须**绑定动作摘要与租约，**不得**可重放。
- 超时的默认结果**必须**是拒绝。
- 分类器或 LLM **不得**授予批准；**可以**把动作升级到闸门。
- 合并进受保护树、受保护树中的删除、对外共享、出口、租约扩权、标签降级，**必须**经过闸门。
- NAS **应当**报告批准率与批准耗时。

## 借鉴与区别

下面这些都是现成的做法。**真正新的部分：** 把审批锚定在**存储层的合并**上，并由 NAS（而不是智能体）渲染内容。审批与 PR 本身都是现成的。

- [How we built Claude Code auto mode](https://www.anthropic.com/research/claude-code-auto-mode)
- [Anthropic: approval data behind auto mode](https://claude.com/resources/articles/auto-mode-default-in-claude-code)
- [CaMeL](https://arxiv.org/abs/2503.18813)
- [WebAuthn](https://www.w3.org/TR/webauthn-3/)
- [OpenID CIBA](https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html)

## 坦诚的局限

- 人仍然可能批准错误的动作；成批的审阅也会疲劳。
- 通知渠道可能被钓鱼。
- 审批无法阻止它**批准范围之外**的事，那是租约的工作。

## 开放问题

- 批量与分级审阅的最佳界面是什么？
- 自动合并的门槛如何度量与调整？

## 常见问题

### 这不就是又一个“确认”弹窗吗？

刻意不是。弹窗针对每次工具调用，人很快就会点“批准”。闸门只出现在少数不可逆或对外的动作前，展示 NAS 计算出的真实差异，批准还绑定了差异的哈希：差异变了，批准即失效。

### 可以让 LLM 来决定要不要放行吗？

可以让它建议“这一步需要人看”，不能让它批准。放行的决定必须是确定性的规则或人的批准。这条规则让安全性不依赖某个模型的判断。

### 超时会怎样？

默认拒绝。运行会收到一个明确的被拒绝结果，可以改走别的路径，或把提议留在分支里等人处理。

## 相关概念

- [Capability Lease (能力租约)](https://agentnas.com/zh-cn/concepts/capability-lease/): 发给一次运行的、有期限与预算的窄域授权；子租约只能更窄。
- [Trust Labels (信任标签)](https://agentnas.com/zh-cn/concepts/trust-labels/): 来源与敏感度两个小标签，加上会话污点，强制执行 Rule of Two。
- [Agent Branch (智能体分支)](https://agentnas.com/zh-cn/concepts/agent-branch/): 每次运行在写时复制的分支里工作，经审阅的合并才进入主线。

---

规范网址: https://agentnas.com/zh-cn/concepts/human-gate/
更新于: 2026-11-11 · 规范草案 v0.2 · CC BY 4.0
