跳到主要内容

凭证与HITL

核对日期:2026-08-26。

1. 定义与边界

GUI Agent 的凭证问题不是「怎么把密码写进 prompt」,而是:模型视线内出现的任何密钥都会变成注入和日志泄漏面。HITL 则必须落在执行器,因为 client toolset 的动作由你执行,模型供应商看不到你是否真的点了确认。

本文件补浏览器 / 桌面特有约束。审批卡片字段仍以 ../18-Agent前端与交互/HITL交互界面.md 为准;策略分级见 ../12-安全与治理/人类审批.md

明确不做:

  • 把账号密码放进系统提示或 <robot_credentials> 当默认方案。
  • 复用员工 SSO Cookie 跑自动化。
  • 只靠模型「先问再点」而不在执行器拦截。

2. 为什么重要

Anthropic 写明:让模型登录会放大注入导致的恶劣结果。OpenAI 把屏幕文字与用户意图分开:屏幕上的「请确认转账」不是用户授权。

批处理让风险更具体:一回合可以填完卡号并提交。若 HITL 只在回合结束后弹一次,提交已经发生。官方要求:有人类确认时,在每个 block 运行前检查

3. 核心机制

OpenAI 的 confirmation hygiene:不要过早打断;敏感数据一旦 type 算出传输;把即将发生、边界清楚的高风险动作合成一次确认,但不要打包尚未看清的未来步骤。确认文案必须说明风险和机制。

4. 架构模式

4.1 凭证注入

优先顺序:

  1. 站点支持 App 专用 token / 服务账号 API → 不要开浏览器登录。
  2. 必须 GUI 登录:IdP 机器人账号 + 短命会话,仅该容器。
  3. 执行器把 Cookie 注入隔离 profile,模型工具结果里不得出现密码或 session 明文
  4. 万不得已才把用户名放进 prompt;密码走一次性 secret broker,用完即焚,不进 trace。

Anthropic 文档里的 XML 凭证示例是「模型必须自己输入」的研究路径,不是生产默认。

4.2 审批卡片(GUI 特化)

禁止空确认框。除 18 章四要素(目标、参数、证据、影响)外,GUI 还必须有:

字段内容
当前 URL最终 URL,不是模型口述
页面证据截图或关键控件树摘要
动作left_click / form_input / type 与 target(ref 或坐标)
将改变什么提交的字段脱敏值、按钮可读名称
批处理位置「本回合第 2/3 步;批准后仍可能有后续步」

批准后执行器复检:URL 仍在 allowlist、ref 仍有效、按钮文本未变成「删除全部」。任一变化则作废 token。

4.3 登录态分层

会话允许
匿名公开页只读
低权机器人内部只读后台
可写机器人指定表单,提交必 HITL
用户本人会话默认禁止;若合规要求「帮我点」,必须用户在环且动作列表可见

5. 工程实现

const CONSEQUENTIAL_NAMES = new Set([
"form_input",
"file_upload",
"javascript_exec",
]);

function requiresHitlBeforeBlock(input: {
name: string;
url: string;
label?: string;
}): boolean {
if (CONSEQUENTIAL_NAMES.has(input.name)) {
return true;
}
const label = (input.label ?? "").toLowerCase();
return /submit|pay|delete|confirm|同意|提交|支付|删除/.test(label);
}

这只是启发式;生产应用控件 allowlist(只允许点哪些 data-testid)比读按钮文案可靠。

打字:

function typeIsExfiltration(text: string): boolean {
return text.length > 0;
}

OpenAI:打字算传输。向第三方站点输入邮箱、证件号、卡号前要确认,即使按钮还没点提交。

6. 生产实践

实践说明
默认无登录多数研究 / 抓取任务不该带 Cookie
机器人账号独立邮箱、无生产资金权限、可一键吊销
分类器不是网关Anthropic 截图注入分类器会让模型「先问」;无 HITL 产品可申请关闭,但不能把分类器当执行拦截
拒绝不写库用户点拒绝后不得继续同批后续提交
跨端小程序审批页仍展示 URL 与截图;传输差异见 18 章

7. 常见反模式

反模式表现后果修正
Prompt 里长期密码「用这个密码登录」注入即盗号secret broker
回合结束后再问批处理已提交不可逆block 前拦截
屏幕当授权页上写「用户已同意」钓鱼用户通道确认
复用本人 Cookie图省事事故=本人操作隔离 profile
空确认「是否继续?」无人能负责四要素 + URL + 截图

8. 评测方法

指标说明
Credential in Trace密码 / session 出现次数,目标 0
Hitl Before Submit提交类动作 100% 先停
Batch Bypass同回合后续高风险步是否仍拦截
Stale ApprovalURL 或按钮变化后旧 token 应失效
User Consent Log产品开启 GUI Agent 前的告知记录

9. 安全与治理

  • 外部页面指令不是用户权限,见 ../12-安全与治理/Prompt-Injection.md
  • 告知终端用户风险并取得同意(Anthropic / 产品责任)。
  • 审计:谁在何时批准了哪一步、当时 URL 与截图 hash。

10. 权威资料