Claude Duet
Claude Duet 是 Anthropic 的云端个人 Agent,可在用户连接的应用与服务之间读取收件箱、起草回复、预订事项和执行例行任务。根据 2026 年 10 月 23 日发布的《Claude Duet Safety, Privacy, and Security》,它当时处于 research preview:关闭客户端后仍能持续工作,但审批频率、登录方式与隐私分类器仍在迭代。
它不是 Claude in Chrome 扩展的另一个名字:后者复用用户浏览器已有登录态,Duet 则使用独立的云端浏览器与工作计算机,并沿用 Claude Managed Agents 的凭证隔离设计。它把后台自动化扩展到跨个人账户的代办场景,安全边界同时涉及动作授权、信息流向、持久记忆与浏览器隔离。
动作审批与意图检查是两道控制
在发送可能敏感的消息、付款或删除内容前,Duet 展示动作、目的地和实际内容,列出所有收件人,等待用户批准。同时,一个独立自动检查在执行模型之外运行,基于 Claude Code Auto Mode 的分类器扩展而来,核对动作是否符合用户意图。
审批流程图强调:审批卡与独立检查位于执行模型之外;网页、邮件和文档中读到的文字不能替用户回答审批卡。独立检查与审批并行存在,不应理解成模型自行宣布“用户已经同意”。这是一种护栏架构,不是分类器永不误判的证明。
flowchart LR
W["网页 / 邮件 / 文档"] --> M["执行模型提出动作"]
M --> C["模型外审批卡
动作 / 目的地 / 内容 / 收件人"]
C --> U["用户批准或拒绝"]
M --> I["独立意图检查
对照用户请求"]
U --> G{"审批与检查是否放行"}
I --> G
G -->|"是"| E["发送 / 付款 / 删除"]
G -->|"否"| S["不执行 / 修改方案"]
权限还分为不能由批准覆盖的禁区,以及不能由历史批准免除的逐次确认:
| 类别 | 来源列举的动作 | 约束 |
|---|---|---|
| 即使用户批准也禁止 | 证券交易、银行账户间转账等银行操作、访问他人账户 | 用户同意不能覆盖产品禁令 |
| 不能设置“不再询问” | 付款或汇款、删除订单、创建账户 | 批准过很多次也不能自动豁免后续确认 |
| 一般重要动作 | 潜在敏感消息、付款、删除内容 | 展示具体动作与内容,等待批准;后台例行任务同样适用 |
购买使用 Link 等钱包提供的一次性卡,绑定商户与金额;用户在 Link 应用中查看商品及总额并确认,真实卡号不提供给 Duet 或商户。付款确认能力不代表任意资金操作都被允许。
审批过密会造成 approval fatigue,使用户习惯性点通过。文章因此把审批频率作为持续校准的问题,而不是把“每一步都问人”当作安全终点。
信息是否能分享,不能只看有没有读取权限
读取某个应用的权限不等于向任何人转发其中内容的权限。例如团队周报只能包含全体收件人本来就可访问的信息,不应混入私人绩效讨论。
独立于主模型的敏感信息分类器在消息发出前检查内容,浏览器上传文件也经过同类检查。信息流向图把路径分成三种:
| 内容 | 分享条件 | 示例与后续动作 |
|---|---|---|
| 非敏感内容 | 可通过这道隐私检查 | 日常消息;仍须遵守动作审批等其他规则 |
| 需同意的私人信息 | 用户明确同意后才可分享 | 健康、财务信息;“告诉牙医我牙痛”本身通常构成相应同意 |
| 永不分享的信息 | 即使用户要求也不发送 | 登录凭证、完整银行卡号或银行账号、政府证件号码 |
需要同意但尚未获得时,图中允许两条路径:若敏感部分对消息不重要,可删去;否则询问用户并等待批准。正文还说明,被阻断后 Duet 可以改写为不含敏感信息的消息,再交用户审批。
分享同意与动作批准不是同一件事:请求本身可以构成对某项私人信息分享的同意,但不自动豁免付款、删除等动作规则。分类器也可能漏报或误报,所以它与审批机制叠加,而非相互替代。
凭证路径不经过模型
Duet 将密码、浏览器 cookie 和连接服务的登录令牌排除在模型可访问范围之外,也不允许它们进入持久记忆。不同凭证走不同路径:
| 对象 | 路径 | 模型可见范围 |
|---|---|---|
| 密码 | Claude 应用内表单加密传递;仅云端浏览器机器持有本次填充所需的一次性密钥并解密填入网站 | 不经过模型,模型不能保存或复述 |
| 连接应用的令牌 | Agent 工作机器只有占位符;机器外代理在实际请求时注入真实凭证 | 真值不进入 Agent 工作机器 |
| 浏览器 cookie | 保留在独立浏览器机器 | 固定浏览器命令不提供读取 cookie 的能力 |
密码路径图明确把模型画在传输路径之外:客户端表单 → 加密传递 → 持有一次性密钥的浏览器机器 → 目标网站。这不同于把密码交给模型、再要求它保密。
截至文章发布时,1Password 登录仍是即将支持的功能:计划让用户在 1Password 中批准凭证请求,再直接交给浏览器,不经过模型。
这种隔离减少了“诱骗模型吐出密码”的攻击面,但登录表单本身仍可能被仿冒。官方说明合法表单只在用户主动请求登录时出现于 Claude 应用内,不会通过短信、邮件或外部网站链接索取密码;对网页入口还明确限制为 claude.ai。不能把“不向模型泄密”理解成“不再存在钓鱼风险”。
浏览器与工作环境的边界
云端浏览器运行在专用 VM 中,与模型及 Agent 工作计算机分离。Agent 只通过固定的打开页面、点击和输入命令驱动浏览器;网站代码与 cookie 不进入 Agent 的记忆或连接应用。浏览器边界图显示,返回模型的是页面文字,网站运行的代码和内容留在浏览器侧。
flowchart LR
A["Agent / 模型"] -->|"固定命令:打开 / 点击 / 输入"| B["独立云端浏览器 VM"]
B -->|"页面文字:仍是不可信输入"| A
W["网站"] <--> B
B --- C["网站代码与 cookie
留在浏览器侧"]
A --> S["动作与敏感信息检查"]
关于下载,原文存在表述不一致:正文说返回 Agent 的是页面文字和 downloads;图 3 图注却说代码、cookie 和 downloads 留在浏览器机器,图内返回箭头仅标为 Page text only。这不足以判定下载文件是否或如何跨边界,因此不把“下载完全隔离”记作已确认能力。
浏览器隔离阻断的是执行代码与凭证的跨界,不会自动消除页面文字里的提示注入;这正是仍需独立意图检查、敏感信息检查及浏览器使用防护的原因,参见 Agent Sandbox。
Duet 浏览器还用独特的 User-Agent 请求头标明 Agent 身份,官方公布其出站公网 IP,供网站识别和决定是否接纳;一些网站在发布前选择阻止访问。文章没有给出具体 UA 字符串或 IP 列表,不能据此自行补写。
任务可见性与记忆撤销
用户可在任务列表查看已完成和进行中的任务,打开独立任务页,并在执行途中调整方向。任务界面截图给出比正文更具体的状态与审批载荷:
- 列表按
Ready for review、Needs input、Working、Resolved分组,并区分Active与Up next。 - 邮件审批卡展示收件人、主题、正文、附件,提供
Not now和Send;不是只展示“是否发送”的摘要按钮。 - 示例有待批准的
$640卫生许可付款和24 MB演示稿附件;这只是界面示例,不是支付上限或附件大小上限。
连接与记忆有不同的生命周期:
| 用户操作 | 来源明确说明的效果 |
|---|---|
| 在 Claude 或 Duet 中关闭某个连接应用 | 两处同步关闭;从此停止新的访问 |
| 断开应用后不重置记忆 | Duet 先前学到的内容仍保留 |
| 在设置中重置 Duet 记忆 | 清理其保留的记忆;不能以断开应用替代此操作 |
| 删除账户 | 清除 Duet 存储的全部内容 |
Duet 还使用 Claude 账户已有记忆。它说明一个通用治理问题:撤销来源访问权限不等于删除从来源派生的记忆;聊天历史、记忆重置与账户删除也不应被视为同一个控制。
测试覆盖与证据边界
官方披露的验证方法包括:
- 同一例行任务构造正常版、提示注入版和诱导超额行动版,配合真实使用的 shadow traffic 做评估。
- 红队测试针对泄露信息、未审批行动和遵从恶意提示;威胁模型覆盖整个系统的代码仓库与信任边界。
- 外部渗透测试机构获得源码进行测试;截至发布时,覆盖云端浏览器和登录表单的后续测试仍在进行。
- 新凭证功能发布前在隔离测试环境上做红队;产品纳入公开漏洞赏金计划。
文章没有披露攻击成功率、分类器召回率或误报率,也没有宣称已经解决所有风险。这里记录的是厂商披露的设计与验证方法,不是独立审计结论;预览期的功能与边界应随新来源更新。