密码与登录
说一句**"登录 GitHub"**,agent 就替你登录。当它第一次遇到一个没有保存登录信息的登录页时,会当场用遮罩提示向你询问。之后它就自己搞定。密码在本机加密后直接注入页面;模型永远看不到它们。
无需任何配置。
它是什么样的
CLI / TUI
🔐 保存 github.com 的登录信息
agent 遇到了一个登录页,但本站没有已保存的登录信息。
输入你用于登录的邮箱 / 用户名(会显示),然后回车。
……
现在输入密码(隐藏)。它会在本机加密,绑定到
https://github.com,并在模型完全看不到的情况下填入页面。
桌面端——一张"保存你的 github.com 登录信息?"卡片,带一个标识符字段和一个遮罩密码字段。保存并登录会存储并继续;不保存则告诉 agent 本次回合不要再问。
此后 agent 会列出你保存的登录信息,自己输入标识符,并通过 Hermes 填入密码。它看到的工具结果是
{filled_fields: 1, origin: "https://github.com"};密码还会登记到脱敏器中,使后续页面读取无法把它回显出来。
两步验证验证码
在密码之后还要输入验证码的网站,处理方式相同:
- 随登录信息保存的验证器密钥(你启用 2FA 时网站给出的"设置密钥"或
otpauth://链接;1Password 和 Bitwarden 中存有 TOTP 种子的条目也算):Hermes 生成当前验证码并输入。无人需要被询问。在设置 → 密码与登录 → 添加或hermes vault add中添加密钥;该条目会带有 2FA 自动徽标。 - 发到你手机或邮箱的验证码:你的界面上会出现一个小提示("github.com 的验证码"),你输入验证码,Hermes 把它填入页面。验证码同样不会进入对话。
- Passkey、硬件密钥、应用审批("在 Duo 中点批准"):无需输入任何内容。agent 会让你在自己的设备上完成,并等待页面继续跳转。
已经在用 1Password 或 Bitwarden?
无需启用任何东西。如果安装并登录了 op 或 bw 命令行工具,Hermes 会自动识别,其网站登录信息可与本地登录信息一起被填入。当 agent 第一次需要其中某个登录信息时,会请你用主密码解锁管理器(遮罩提示;每会话一次,空闲 30 分钟后再次询问)。Hermes 通过非交互通道把主密码交给管理器的 CLI(stdin 上的 op signin,子进程环境中的 bw unlock --passwordenv),内存中只保留会话令牌。agent 永远看不到主密码、令牌或任何登录信息。一个列出多个网站的管理器条目(例如 amazon.co.uk、www.amazon.co.uk 和 eu.account.amazon.com)会在这些确切来源上分别填入;不会根据条目上保存的 URL 推断出任何额外来源。
不想使用检测到的管理器?运行 hermes vault sources --disable bitwarden,或在设置 → 密码与登录中切换。
付款与填写地址
银行卡和地址的工作方式与登录相同:保存一次(设置 → 密码与登录 → 添加,或 hermes vault add),绑定到结账网站,仅在该网站由 agent 填入。每次填卡都会先询问你,提示与危险命令的审批相同;拒绝则不写入任何内容。无头会话(cron、webhook、API 服务器)无法确认,因此会被拒绝——这样,即使一个提示注入到达了结账页,它可以询问,但无法消费。地址填写无需确认。
管理已保存的内容
- 桌面端 → 设置 → 密码与登录:所有已保存内容、检测到的密码管理器(可解锁/锁定)、添加、移除。
- CLI:
hermes vault list、hermes vault add、hermes vault rm <handle>、hermes vault sources。
条目加密存放于 ~/.hermes/vault/ 下(Fernet 密钥 + 保险库文件,均为 0600 权限),作用域为该 profile。标签、网站来源和登录标识符是可见的元数据;密码和银行卡数据除填入页面外绝不出保险库。
无头会话
cron 任务、webhook、API 服务器和 hermes chat -q 没有人来应答提示。保存的本地登录信息在那里继续可用;锁定的密码管理器会报告 unavailable_in_this_session,缺失的登录信息会报告 prompt_unavailable。请先从交互式会话解锁或保存,或给 1Password 提供服务账号令牌(OP_SERVICE_ACCOUNT_TOKEN)。
vault:
onepassword:
enabled: false # 退出使用检测到的管理器(默认:安装后开启)
account: "" # `op --account` 简写;留空 = 默认
service_account_token_env: OP_SERVICE_ACCOUNT_TOKEN
bitwarden:
enabled: false
它保证什么、不保证什么
保证: 密码绝不会经由 Hermes 进入模型上下文——不会出现在工具结果、日志、会话数据库或任何进程的 CLI 参数中。填写通过受监督浏览器会话的直连 CDP 套接字进行,且仅当页面来源与已保存来源精确匹配时才执行匹配,写入前还会在页面内再次校验。
不保证: 无法防御页面本身。一旦密码被输入某个网站,该网站(及其运行的任何脚本)就拥有了它,与你自己输入时完全一样。在云端浏览器后端,供应商的浏览器和其他任何人一样能看到该页面。来源绑定是防止在错误网站填写的守卫,而非防御已被攻破的正确网站。