- 配置密钥:
openclaw.json中的任何 SecretRef 字段都可以在运行时通过opCLI 解析,因此 API 密钥绝不会存放在配置文件中。 - 智能体工作流: 内置的
1passwordskill 会指导智能体登录,并使用op为自身任务读取或注入密钥。 - 浏览器登录:
claude-cli后端可以通过 1Password for Claude 使用 Claude Code 的 Chrome 集成,让智能体登录网站,同时密码绝不会传递给模型或 OpenClaw。
要求
- Gateway 网关主机上已安装 1Password CLI(
op)(在 macOS 上为brew install 1password-cli)。 - 为
op配置一种身份验证模式:- 服务账户(推荐用于无头 Gateway 网关):在 Gateway 网关服务环境中导出
OP_SERVICE_ACCOUNT_TOKEN。无需桌面应用,也无需交互式登录。 - 桌面应用集成:1Password 应用在同一台计算机上运行,并已启用 CLI 集成。首次调用可能会触发 Touch ID 或系统身份验证。
- 独立登录:
op signin会在每个会话中提示登录。智能体可以通过 skill 使用这种方式,但它不适合在无头 Gateway 网关上解析配置密钥。
- 服务账户(推荐用于无头 Gateway 网关):在 Gateway 网关服务环境中导出
使用 op 解析配置密钥
声明一个运行op read 并使用 op://vault/item/field 引用的 exec 密钥提供商,然后让任何支持 SecretRef 的字段指向它:
command必须是绝对路径;trustedDirs将其目录标记为受信任,而allowSymlinkCommand是必需的,因为 Homebrew 会将op安装为符号链接。args会原样传递op://vault/item/field引用。OpenClaw 本身不会解析op://方案;由op二进制文件负责解析。passEnv会从 Gateway 网关环境中转发列出的变量。桌面应用集成需要HOME;服务账户还需要 Gateway 网关服务环境中存在OP_SERVICE_ACCOUNT_TOKEN(将其添加到passEnv,或者仅在你接受令牌可从配置文件中读取时,才通过env设置)。- 对于单值输出,请保留
id: "value"。使用jsonOnly: true和 JSON 载荷时,请改用 JSON 指针 ID 定位字段。 - 每个密钥使用一个提供商条目,可以让引用易于审计;请根据使用方命名提供商(
onepassword_openai、onepassword_telegram)。
无头 Gateway 网关的服务账户设置
- 在你的 1Password 账户中创建服务账户,并仅授予其读取 Gateway 网关所需保管库项目的权限。
- 将
OP_SERVICE_ACCOUNT_TOKEN提供给 Gateway 网关服务(launchd plist、systemd 单元或容器环境)。 - 将
"OP_SERVICE_ACCOUNT_TOKEN"添加到提供商的passEnv列表。 - 在 Gateway 网关主机环境中验证:
op whoami应直接输出服务账户,而不会提示登录。
op:// 引用中明确指定保管库名称。应严格限制账户权限范围;它是一种持有者凭据。
面向智能体的 1password skill
OpenClaw 内置了一个1password skill,可让智能体熟练操作 op:它会检测可用的身份验证模式(服务账户、桌面应用集成或独立登录),在读取任何内容前使用 op whoami 验证访问权限,并优先使用 op run / op inject,而不是将密钥值写入磁盘。该 skill 需要 op 二进制文件;缺失时会提供 Homebrew 安装选项。
智能体会将其用于自身工作流,例如在任务执行期间读取部署令牌,或将环境变量注入命令。它独立于配置密钥解析;Gateway 网关解析 SecretRef 时不涉及任何 skill。
使用 1Password for Claude 进行浏览器登录
1Password for Claude 允许 Claude 请求登录,并由 1Password 浏览器扩展通过加密通道将凭据直接填入页面。密钥绝不会进入模型上下文、对话记录或 OpenClaw。当 OpenClaw 在启用 Claude Code Chrome 集成的情况下运行claude-cli 后端时,智能体任务可以使用该流程访问需要真实登录会话的网站。
除了后端本身,此功能还需要:
- 一台安装了 Chrome 的 macOS Gateway 网关主机、已连接的 Claude in Chrome extension、1Password 桌面应用以及 1Password 浏览器扩展(后两者均须为 8.12.28 或更高版本)。
- Claude Code 已登录直接订阅的 Anthropic 方案(Pro、Max、Team 或 Enterprise)。通过 Amazon Bedrock、Google Cloud 或其他第三方提供商使用时,Chrome 集成不可用。
- 在 Anthropic 端完成一次性 1Password 连接:通过 Claude 桌面应用或 1Password 指南中所述的扩展流程设置 1Password for Claude;它目前是 macOS 测试版。在 1Password Business 中,管理员必须先在 Policies 下启用 “Allow AI agents to autofill for users”;Anthropic Team/Enterprise 方案默认也会关闭此集成,直到 Owner 将其启用。
- 一个将
--chrome添加到 Claude 启动参数的 CLI 后端插件;内置后端不会启用 Chrome。 - Gateway 网关主机旁需要有人操作:每次使用凭据时,1Password 都会显示确认提示,并须在该主机上确认(例如使用 Touch ID)。在限制严格的 exec 策略下,浏览器工具调用本身也会先作为 OpenClaw 审批转发到你的渠道。
claude --chrome,确认扩展已连接,并检查 claude-in-chrome 工具中是否包含凭据工具。如果它们未在此处出现,也不会通过 OpenClaw 出现。
一次性密码由 1Password 在同一页面中填写;绝不要通过聊天转发验证码或密码。目前无头或远程 Gateway 网关无法使用此流程,因为审批操作和浏览器都位于 Gateway 网关主机上。
安全注意事项
- 通过 exec 提供商解析的密钥值会保留在 Gateway 网关内存中;配置快照和
config.get响应会对 SecretRef 字段进行脱敏。 - 绝不要将密钥值放入
openclaw.json、日志或聊天中。配置中只保留项目名称,值则存放在 1Password 中。 - 1Password 审计记录会显示每次服务账户读取操作,便于执行密钥轮换和事件审查。
故障排查
command not found或生成进程错误:使用op的绝对路径,并将其目录加入trustedDirs。op可以解析,但读取因符号链接错误而失败:对于 Homebrew 安装,请设置allowSymlinkCommand: true。account is not signed in:对于服务账户,请确认OP_SERVICE_ACCOUNT_TOKEN能传递至 Gateway 网关服务,并已列入passEnv;对于桌面集成,请确认应用正在运行且已解锁。- 首次读取缓慢:提高提供商上的
timeoutMs;在繁忙主机上,op冷启动可能超过严格的超时时间。