关于 1password
此技能指导 Agent 使用官方 1Password CLI,从检查认证方式到验证访问权限。内容涵盖服务账户、桌面应用集成和独立登录,并说明凭据保护规则。
主要功能
- 01识别 CLI 认证方式
- 02使用 op whoami 验证访问
- 03按认证方式执行命令
- 04防止密钥进入日志或聊天
- 05通过凭据工具引导浏览器登录
适用场景
- 01在无头环境配置 CLI 访问
- 02通过桌面应用集成运行 CLI
- 03使用独立登录进行认证
- 04避免网站登录密码暴露
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ openclaw/ openclaw --skill 1password安装后在 Claude Code 中输入/1password确认已加载。
附带文件references/get-started.mdreferences/cli-examples.md
详细介绍
1Password CLI
请按照官方 CLI 入门步骤操作。不要猜测安装命令。
参考
references/get-started.md(安装 + 应用集成 + 登录流程)references/cli-examples.md(真实的op示例)
工作流
- 检查操作系统和 Shell。
- 确认 CLI 是否存在:
op --version。 - 检测用户已配置的认证模式:
- 服务账户: 已设置
OP_SERVICE_ACCOUNT_TOKEN(通常用于无头环境、CI 和网关)。 - 桌面应用集成: 1Password 桌面应用正在运行,且已启用 CLI 集成(通常用于 macOS / Windows / Linux 桌面环境)。
- 独立登录: 以上均不是——
op signin每个会话都会提示输入账户密码。
- 服务账户: 已设置
- 根据认证模式运行
op(见下文)。 - 验证访问权限:读取任何机密信息之前,
op whoami都应成功执行。 - 如果有多个账户:使用
--account或OP_ACCOUNT。
按认证模式运行 op
服务账户(适用于无头 / 网关场景的首选方案)
直接执行。不使用 tmux,也无需登录步骤。
export OP_SERVICE_ACCOUNT_TOKEN="ops_..."
op vault list
op read op://app-prod/db/password
桌面应用集成
直接执行。不要在 tmux 中运行——桌面应用集成使用按用户划分的 IPC 通道,该通道会在网关的执行环境中建立;但 tmux 子 Shell 使用不同的环境上下文,因此从这些子 Shell 访问该通道并不总是可靠。传输机制因平台而异(macOS 上通过 1Password Browser Helper 使用 XPC,Linux 上使用 Unix 域套接字,Windows 上使用命名管道);Agent 在三个平台上遵循的实际规则相同:直接运行 op。在 macOS 上,一个实用的症状判断依据是位于 ~/Library/Group Containers/2BUA8C4S2C.com.1password/t/ 的 1Password 集成组容器。
op vault list # may trigger Touch ID / Windows Hello / system auth on first call
op whoami
如果调用返回 1Password CLI couldn't connect to the 1Password desktop app,不要改用 tmux。确认桌面应用正在运行且已解锁,然后重试直接执行。
独立登录(无应用,交互式密码)
这是唯一能借助 tmux 的模式。op signin 会输出一条 eval 风格的导出语句,为 POSIX Shell 设置 OP_SESSION_* 令牌;同一 Shell 中的后续命令将使用该环境变量进行认证。网关为每条命令启动的 Shell 会在多次调用之间丢失此状态,因此持久化 tmux 窗格可让会话令牌保持有效——但只有在 POSIX Shell 中实际使用 eval 应用该导出语句才行。如果仅将 op signin 作为普通命令发送,其标准输出只会打印到窗格中,而 op whoami 将失败。
只有在提供 tmux 技能的 macOS/Linux 主机上,才能采用此 tmux 流程。示例特意打开 /bin/sh,使 POSIX eval "$(op signin ...)" 的输出即使在用户日常使用 fish Shell 时也有效。在 Windows 上,优先使用桌面应用集成或服务账户认证。如果用户只能使用 Windows 独立交互式登录,请停止操作并要求他们提供持久化 PowerShell 会话机制,或改用桌面集成/服务账户认证;不要直接转换这些 tmux 命令。
SOCKET_DIR="${OPENCLAW_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
chmod 700 "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/openclaw-op.sock"
SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"
tmux -S "$SOCKET" new -d -s "$SESSION" -n shell /bin/sh
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'eval "$(op signin --account my.1password.com)"' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -40
登录提示期间,不要将后续命令加入队列。使用 capture-pane
轮询窗格,直到登录已完成且 Shell 提示符已返回,或者登录显然正在等待
人工输入。如果提示需要密码、MFA 或账户选择,请暂停并要求用户
在自己的终端中完成登录;将套接字和会话值提供给他们,以便其在本地
连接。Agent 不应通过 exec 运行 tmux attach,因为连接会占用当前 TTY,并
阻止脚本控制 send-keys / capture-pane。
Shell 提示符重新出现后,将检查命令发送到同一窗格中进行验证:
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op whoami' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op vault list' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -80
让 tmux 会话保持运行,使后续 op read / op run 命令复用同一个已认证的 Shell。
在此独立登录流程中,所有后续命令都应使用相同的 SOCKET 和 SESSION 值。-S "$SOCKET" 参数用于选择 tmux 服务器套接字;请将其放在用户拥有的 0700 目录中,不要在不同用户之间共享该套接字,并为每次新的登录尝试选择新的会话名称。
浏览器登录(用于 Claude 的 1Password)
如果会话在 Chrome 凭据工具(request_credentials、autofill_credential、enter_verification_code)中提供 Claude,登录网站时应优先使用这些工具,而不是 op:1Password 会直接填写页面,机密信息不会进入上下文。规则:
- 在导航前,通过一次
request_credentials调用请求任务所需的每项凭据。 - 批准操作通过网关主机上的 1Password 提示完成。如果仍在等待中,请告知用户需要解锁哪台主机(“1Password 正在等待此 Mac 上的批准”),而不是重试。
- 绝不能让用户通过聊天发送密码或一次性验证码;验证码只能通过
enter_verification_code输入。 - 不要仅因为浏览器流程需要批准,就退回使用
op read获取网站密码;这会违背不暴露机密信息的设计初衷。请将op用于命令和配置所需的机密信息;当存在浏览器流程时,不要将其用于网站登录。
防护措施
- 绝不将机密信息粘贴到日志、聊天或代码中。
- 优先使用
op run/op inject,避免将机密信息写入磁盘。 - 如果需要在没有应用集成的情况下登录,请先使用
op account add。 - 如果命令返回“account is not signed in”:
- 服务账户:重新导出
OP_SERVICE_ACCOUNT_TOKEN - 桌面应用:确认应用正在运行且已启用集成
- 独立版:在同一个 tmux 会话中重新运行
op signin并进行授权
- 服务账户:重新导出