密码
密码团队 对于AI代理,您的代理使用凭据,而从未看到原始值。
免责声明: 这不是passwd.team项目的正式组成部分。一旦经过安全审计,它将被合并。在那之前,使用风险自负。
它能做什么
针对不同范围的四种工具——选择适合您设置的工具。
| 工具 | 可以做 | 不能做 |
|---|---|---|
| 克劳德扩展 | 浏览机密、TOTP、代表您使用凭据(输出掩码) | 原始凭据输出,写入 |
| MCP服务器 | 浏览机密、查看详细信息(已编辑)、提取TOTP代码 | 凭据输出、写入、执行 |
| 代理CLI | 浏览、TOTP、使用凭据运行命令(stdout掩码) | 原始凭据输出,写入 |
| 完整CLI | 一切——原始值、创建、更新、删除、共享 | -- |
设置
选择你的平台。在以下所有示例中,替换 https://your-deployment.passwd.team 使用您的passwd.team部署URL(默认为 https://app.passwd.team).
克劳德
克劳德扩展(.mcpb).适用于Claude macOS应用程序的聊天和协作选项卡。凭据永远不会到达AI——所有输出都被屏蔽。
1.下载 passwd.mcpb 从 最新版本.
2.安装 --双击该文件。
3.配置 --输入部署URL(默认值: https://app.passwd.team).
4.身份验证 --让Claude登录。将打开一个用于Google OAuth的浏览器窗口。
连接到服务 --对于使用MCP服务器的服务,将MCP配置粘贴到密钥中 笔记 现场。代理检测到它并自动连接。
示例——有两条消息效果最好:
- *“在passwd中查找我的Rohlik凭据并阅读详细信息”*
- *“现在给我买香蕉”*
龙虾
passwd有两个OpenClaw集成——根据需要凭据的位置进行选择:
- 上的配置字段 SecretRef支持列表? → 使用 秘密提供者 --网关在启动时解析它,代理永远不会看到它。
- 代理所需的运行时凭据 (数据库登录、部署密钥、自定义API调用)? → 使用 代理技能 --代理通过以下方式将其注入到命令中
exec --inject,而看不到原始价值。
你可以两者结合使用。
| 集成 | 它做什么 | 打包 | 代理看到原始凭据? |
|---|---|---|---|
| 秘密提供者 | 在网关启动时解析SecretRef(API密钥、令牌) | passwd-cli | 否--网关在内部保存它们 |
| 代理技能 | 让代理浏览vault,检查TOTP,将creds注入命令 | passwd-agent-cli | 否--凭据总是被编辑或屏蔽 |
秘密提供者(网关)
解决 秘书 在网关启动时-API密钥、服务令牌和其他凭据进入网关的内部配置,并且永远不会到达代理。
SecretRef的覆盖范围有限。 只有配置字段 支持列表 可以使用SecretRefs。如果在运行时需要凭据(数据库登录、部署密钥、自定义API调用),或者配置字段不在列表中,请使用 代理技能 取而代之的是下面。
1.身份验证 (网关运行 passwd-cli,而非代理人):
PASSWD_ORIGIN=https://your-deployment.passwd.team npx -y @passwd/passwd-cli@1.6.1 login2.添加机密提供者 到 ~/.openclaw/openclaw.json:
{
secrets: {
providers: {
passwd: {
source: "exec",
command: "/usr/local/bin/npx", // absolute path to npx
args: ["-y", "@passwd/passwd-cli@1.6.1", "resolve"],
passEnv: ["PASSWD_ORIGIN", "HOME"],
allowSymlinkCommand: true, // needed if npx is a symlink (Homebrew)
trustedDirs: ["/usr/local", "/opt/homebrew"],
},
},
},
}3.参考机密 在使用SecretRefs的模型提供者中—— id 是 SECRET_ID:field (字段默认为 password):
{
models: {
providers: {
openai: {
baseUrl: "https://api.openai.com/v1",
models: [{ id: "gpt-4o", name: "gpt-4o" }],
apiKey: { source: "exec", provider: "passwd", id: "abc123:password" },
},
},
},
}将API密钥作为机密存储在passwd.team中,然后在 id 现场。跑 npx @passwd/passwd-cli@1.6.1 list 找到他们。
代理技能
让代理浏览您的保管库,检查TOTP代码,并将凭据注入命令中,而不会看到原始凭据值。
passwd存储通过平台密钥链(macOS keychain/Linux libsecret)加密的令牌。OpenClaw必须作为LaunchAgent(macOS)或systemd用户单元(Linux)运行,以便密钥链可用。
1.身份验证 使用代理安全CLI:
PASSWD_ORIGIN=https://your-deployment.passwd.team npx -y @passwd/passwd-agent-cli@1.6.1 login2.添加技能 在 ~/.openclaw/workspace/skills/passwd/SKILL.md:
---
name: passwd
description: "Authenticate, browse credentials, generate TOTP codes, and inject secrets into commands."
metadata:
{
"openclaw":
{
"emoji": "🔑",
"requires": { "env": ["PASSWD_ORIGIN"], "bins": ["npx"] },
},
}
---
# passwd
Browse credentials, generate TOTP codes, and inject secrets into commands — from your team's passwd.team vault. Always use `--json` for structured output.
CMD: `npx -y @passwd/passwd-agent-cli@1.6.1`
## Setup
Before first use, ask the user for their passwd.team deployment URL (e.g. https://company.passwd.team). Do not assume a default — wait for their answer. Then set PASSWD_ORIGIN to that URL for all commands.
## Login
Login is interactive — use the exec tool in process mode to keep the session alive:
1. Start CMD login with exec (process mode, not run-and-wait)
2. Poll output to get the OAuth URL
3. Send the URL to the user
4. When the user provides the redirect URL, write it to the process stdin
## Commands
Search: CMD list -q "search term" --json
Info: CMD get SECRET_ID --json
TOTP code: CMD totp SECRET_ID
Whoami: CMD whoami --json
Envs: CMD envs --json
## Use credentials
Inject a credential into a command without exposing it:
CMD exec --inject DB_PASS=SECRET_ID:password -- psql -h host -U user
Multiple secrets: add more `--inject VAR=ID:field` flags.
## Multi-environment
Use --env NAME with any command to target a specific passwd.team deployment:
CMD list -q "search" --json --env acme
CMD envs --json
## Display
- Never use tables or code blocks
- Bold label, backtick value: **Username:** `value`
- End credential output with 🔐
- One field per line, skip empty fields
- Lists: name and type only
- TOTP: code and remaining seconds only3.重新启动网关 从而发现技能和提供者。
对于多个部署,请分别登录到每个源(PASSWD_ORIGIN=... npx @passwd/passwd-agent-cli@1.6.1 login).然后,代理可以切换到 --env --请参阅上述技能中的“多环境”部分。
具有凭据的MCP服务器
需要身份验证标头(如私有API)的MCP服务器可以使用 mcp-wrap 在启动时解析vault中的凭据。配置文件中没有原始值——它们是在运行时从密钥链支持的vault中获取的。
{
"name": "my-service",
"transport": "stdio",
"command": "npx",
"args": [
"-y", "@passwd/passwd-agent-cli@1.6.1", "mcp-wrap",
"https://mcp.example.com/mcp",
"x-api-email=SECRET_ID:username",
"x-api-key=SECRET_ID:password"
],
"env": {
"PASSWD_ORIGIN": "https://your-deployment.passwd.team"
}
}每 header=SECRET_ID:field 映射解析vault中的机密字段,并将其作为HTTP标头传递给 mcp-remote.Stdout被屏蔽。
MCP服务器
如果您只想从任何兼容MCP的客户端以只读方式访问您的保管库——浏览机密、查看详细信息(已编辑凭据)、提取TOTP代码——独立安装MCP服务器:
{
"mcpServers": {
"passwd": {
"command": "npx",
"args": ["-y", "@passwd/passwd-mcp@1.6.1"],
"env": {
"PASSWD_ORIGIN": "https://your-deployment.passwd.team"
}
}
}
}MCP服务器是只读的(没有创建、更新、删除或共享),凭据字段始终被编辑。要使用凭据运行命令,请将其与代理CLI配对(@passwd/passwd-agent-cli).
代理CLI
代理CLI(@passwd/passwd-agent-cli)是完整CLI的强化子集——没有命令可以输出原始凭据值。它补充道 exec --inject 用于在stdout始终被屏蔽的情况下将机密注入子进程。将其与任何具有shell访问权限的AI代理(Claude Code、Cowork或与MCP服务器配对的任何MCP客户端)一起使用。
export PASSWD_ORIGIN=https://your-deployment.passwd.team
npx @passwd/passwd-agent-cli@1.6.1 login
npx @passwd/passwd-agent-cli@1.6.1 list
npx @passwd/passwd-agent-cli@1.6.1 exec --inject DB_PASS=SECRET_ID:password -- psql -h host -U app凭据作为环境变量注入到子进程中。Stout总是被屏蔽的——如果子流程打印了一个秘密值,它将被替换为 ``原始值从不进入AI上下文。
完整CLI
完整的CLI(@passwd/passwd-cli)可以通过以下方式完全访问您的保管库,包括原始凭据值 --field 通过以下方式实现无屏蔽输出 --no-masking。将其用于控制环境的终端会话、脚本和CI管道。
不要使用完整的CLI进行AI代理集成。 它可以输出原始凭据,这意味着代理可以窃取它们。使用 @passwd/passwd-agent-cli 相反,它具有相同的有用命令,但无法输出原始凭据。唯一的例外是 秘密提供者 (gateway),其中CLI作为网关进程运行,而不是作为代理运行。export PASSWD_ORIGIN=https://your-deployment.passwd.team
npx @passwd/passwd-cli@1.6.1 login
npx @passwd/passwd-cli@1.6.1 list
npx @passwd/passwd-cli@1.6.1 --help对于多个部署,请分别登录每个源,然后使用 --env 切换。或使用每个项目的代币-- passwd login . 在每个项目目录中:
# Global multi-env (tokens in ~/.passwd)
PASSWD_ORIGIN=https://acme.passwd.team npx @passwd/passwd-cli@1.6.1 login
npx @passwd/passwd-cli@1.6.1 list --env acme
# Per-project (tokens in ./project/.passwd, auto-discovered)
cd ~/project && PASSWD_ORIGIN=https://acme.passwd.team npx @passwd/passwd-cli@1.6.1 login .通过stdin传递敏感值
对于 --password, --totp, --credentials, --private-key, --secure-note, --card-number,以及 --cvv-code,通过 - 作为从stdin读取的值,而不是在进程列表中公开该值:
echo "s3cret" | passwd create -t password -n "My secret" --password -每次调用只能从stdin读取一个标志。
从源头构建
git clone https://github.com/pepuscz/passwd.git
cd passwd
npm install && npm run build然后使用 node packages/passwd-mcp/dist/index.js, node packages/passwd-agent-cli/dist/index.js,或 node packages/passwd-cli/dist/index.js 代替 npx 上面的命令。
升级
检查 发布 对于新版本,请更新配置中的版本号——OpenClaw gateway config/SKILL.md或CLI别名——然后重新启动。桌面扩展通过安装新的 .mcpb 文件。
认证
谷歌OAuth2。首次使用时 passwd_login 工具(MCP)或 passwd login (CLI)将指导您完成身份验证。令牌在静止时加密(AES-256-GCM,平台密钥链中的密钥)并自动刷新。需要macOS钥匙链或Linux secret-tool (libsecret)。
每个项目代币 — passwd login 将令牌保存到 /.passwd/ 而不是 ~/.passwd.所有命令自动发现 .passwd/ 从工作目录(如 .git),因此登录后不需要额外的配置。对于每个共享文件夹都可以有自己的密码标识的Cowork项目很有用。
MCP工具参考
MCP服务器(@passwd/passwd-mcp)可以独立安装——请参阅 MCP服务器。它是只读的(无写入),凭据字段始终被编辑。
| 工具 | 说明 |
|---|---|
passwd_login | Google OAuth登录流程 |
list_secrets | 搜索/列出机密(按查询、类型筛选;分页) |
get_secret | 获取机密详细信息(已编辑凭据) |
get_totp_code | 获取当前TOTP代码(短暂的30秒代码) |
get_current_user | 获取经过身份验证的用户配置文件 |
Claude桌面扩展(passwd.mcpb)包括上述所有5个工具以及:
| 工具 | 说明 |
|---|---|
run_with_credentials | 运行一个命令,将secrets作为env变量注入(stdout/stderr掩码) |
connect_mcp_service | 使用密钥中的凭据连接到远程MCP服务(MCP配置从注释字段JSON中提取) |
call_remote_tool | 在连接的远程MCP服务上调用工具(凭据作为HTTP标头注入,响应被屏蔽) |
Agent CLI命令参考
代理CLI(@passwd/passwd-agent-cli,二进制 passwd-agent)是完整CLI的强化子集——没有命令输出原始凭据值。用于Cowork和OpenClaw集成。
| 命令 | 描述 |
|---|---|
passwd-agent login [dir] | 使用Google OAuth进行身份验证(使用 dir:将令牌保存到 /.passwd/) |
passwd-agent whoami | 显示当前用户 |
passwd-agent list | 列出/搜索秘密(-q, -t, --json) |
passwd-agent get | 得到一个秘密(总是被编辑,没有 --field) |
passwd-agent totp | 获取当前TOTP代码 |
passwd-agent exec | 将secrets作为env变量运行命令(--inject VAR=ID:FIELD,stdout始终处于屏蔽状态) |
passwd-agent mcp-wrap | 启动 mcp-remote 将凭据作为HTTP标头(header=ID:FIELD) |
passwd-agent envs | 列出已知环境(--json) |
passwd-agent --env | 全局标志:通过名称子字符串定位特定环境 |
完整CLI命令参考
完整的CLI(@passwd/passwd-cli,二进制 passwd)具有完整的vault访问权限,包括原始凭证输出。对于AI代理集成,请使用上面的代理CLI。
| 命令 | 描述 |
|---|---|
passwd login [dir] | 使用Google OAuth进行身份验证(使用 dir:将令牌保存到 /.passwd/) |
passwd whoami | 显示当前用户 |
passwd list | 列出/搜索秘密(-q, -t, --json) |
passwd get | 获取机密(默认情况下已编辑; --field 原始价值) |
passwd create | 创建一个秘密(-t, -n, --group, --user, --file, --visible-to-all,加上特定类型的标志——请参见 --help) |
passwd update | 更新秘密(与创建标志相同,加上 --remove-file) |
passwd delete | 删除机密(-y 跳过确认) |
passwd totp | 获取当前TOTP代码 |
passwd share | 启用/撤销共享(--revoke) |
passwd groups | 列出工作区组 |
passwd contacts | 列出工作区联系人 |
passwd envs | 列出已知环境(--json) |
passwd resolve | OpenClaw secrets提供程序——从stdin读取JSON,将解析值写入stdout |
passwd exec | 将secrets作为env变量运行命令(--inject VAR=ID:FIELD, --no-masking 禁用stdout屏蔽) |
passwd --env | 全局标志:通过名称子字符串定位特定环境 |
配置
| 变量 | 必填 | 描述 |
|---|---|---|
PASSWD_ORIGIN | 是 | 您的密码团队URL(默认 https://app.passwd.team) |
PASSWD_API_URL | 没有 | API基础URL覆盖 |
PASSWD_CLIENT_ID | 否 | 谷歌OAuth客户端ID覆盖(从部署中自动发现) |
项目结构
packages/
passwd-lib/ Core library (types, auth, API — zero dependencies)
passwd-mcp/ MCP server (depends on passwd-lib)
passwd-mcpb/ Claude extension (.mcpb)
passwd-cli/ Full CLI (depends on passwd-lib)
passwd-agent-cli/ Agent CLI — no command exposes raw credentials (depends on passwd-lib)许可证
麻省理工学院
