ByteNoteByteNote
用得到却看不见:给 coding agent 配一把 1Password
字

字节笔记本

2026年10月3日 · 约 4 分钟读完

用得到却看不见:给 coding agent 配一把 1Password

API中转
¥120

agent 干活绕不开密钥:调 API 要 key,连数据库要密码,而这些字符串一旦进了对话上下文,就可能被日志留下、被模型记住、被下一次请求带出去。Anomaly 团队的 Kit Langton(OpenCode 现在归属的公司)给出的答案是 2password:一个给 coding agent 用的 1Password 前端,让 agent 用得到密钥却从头到尾看不见密钥。项目刚在 X 上发布就拿下 374 赞和 222 个收藏,MIT 协议。

2password 仓库

项目简介

2password 的定位一句话讲完:1Password for coding agents。它构建在 1Password 官方 CLI 之上,用 Bun 实现,配套一个 Agent Skill 教会各类 agent 正确使用它。核心机制是把「查找」和「使用」拆开:agent 检索密钥时,工具返回的只有 op:// 协议的引用串,真正的值从来不进入 agent 的视野;直到命令真正执行的那一刻,值才被注入到进程环境里。

核心功能

引用代替明文。 agent 想找钥匙时跑一条命令:

bash
2password find openai stripe

返回的是两个 op:// 引用,不是值。接下来无论是启动服务还是跑脚本,都拿引用当参数:

bash
2password run --env "OPENAI_API_KEY=op://Personal/OpenAI API Key/credential" -- bun dev

值在子进程启动时注入环境,对话上下文、工具返回、执行日志里都不会出现明文。模板文件也支持,env run .env.tpl 直接按模板解析整套环境变量。

打断次数压到最低。 agent 用密钥最烦的不是安全是烦人:每查一次弹一次 1Password 授权。2password 把同一命令里的多次查找合并成一次批准,env 文件里引用再多也只批一回。想彻底清净还有 service-account 模式:给 agent 单独建一个权限受限的 Automation 保险库,服务账号令牌存进 macOS 钥匙串,之后零打断,主保险库隔离在外。

写入路径同样设防。 新建密钥只允许从剪贴板或管道进,永远不走命令行参数(argv 会进 shell 历史);每次写入后强制读回校验;写操作失败绝不自动重试,避免半成品凭据堆积。整个工具里只有 read 和 env resolve 两个命令会输出密钥,边界很清楚。

查找返回引用,执行才注入

快速上手

前提是装好 Bun 和 1Password 官方 CLI,然后两行:

bash
bun add -g 2password
bunx skills add kitlangton/2password

第二条把使用说明作为技能装进 agent,Claude Code、Codex、OpenCode 这类支持 skills 的都能认。装完直接对 agent 说「帮我配置好项目的 API 密钥」,它会自己走 find、拿引用、拼 env 的正确流程。

适合谁用

让 agent 碰生产环境的人第一梯队:上下文泄漏路径千千万,把明文从源头拿掉是最便宜的一层防御;做多 agent 系统的团队第二梯队,service-account 加专属保险库正好当权限边界用;顺手党也值得装,它本质上不改变你的 1Password 存法,只是给 agent 发了一张只能看门牌号的门禁卡。

agent 安全这条线上,之前见过 NVIDIA 用 OpenShell 管密钥可见性,现在 2password 从日常工具层把同一件事做轻了,两层可以一起用。仓库地址:kitlangton/2password。

相关文章

分享: