关于 credentials
用于管理 API 密钥、令牌、密码和 URL 等命名凭据的命令行工具。它会加密静态存储的值,并将主密码与钱包系统分开管理。
主要功能
- 01使用 AES-256-GCM 加密密钥
- 02保存每项凭据的元数据
- 03读取并列出凭据
- 04经确认后删除凭据
- 05轮换密码并重新加密条目
适用场景
- 01为本地脚本保存 API 密钥
- 02运行命令时读取机密值
- 03更改已存凭据的主密码
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aibtcdev/ skills --skill credentials安装后在 Claude Code 中输入/credentials确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENT.mdcredentials.tsstore.tstypes.ts详细介绍
凭据技能
管理任意命名的密钥——API 密钥、令牌、密码、URL——使用 AES-256-GCM 加密并静态存储,每个凭据通过 PBKDF2 派生密钥。值以加密数据块的形式存储在 ~/.aibtc/credentials.json 中;仅标识符、标签、类别和时间戳以明文存储。无需钱包——凭据存储使用独立于钱包系统的主密码。
用法
bun run credentials/credentials.ts <subcommand> [options]
子命令
add
添加新凭据或更新现有凭据。值使用 AES-256-GCM 加密,密钥通过 PBKDF2 从主密码派生(100,000 次迭代,每个凭据使用独立盐值)。
bun run credentials/credentials.ts add --id <id> --value <value> --password <pass> [--label <text>] [--category <cat>]
选项:
--id(必填)— 规范化的凭据标识符(例如hiro-api-key、openrouter-token)--value(必填)— 明文密钥值(敏感信息——不会被存储)--password(必填)— 用于加密的主密码(敏感信息)--label(可选)— 易读标签(默认与 id 相同)--category(可选)— 类别标签,例如api-key、token、url或secret(默认:secret)
输出:
{
"success": true,
"id": "hiro-api-key",
"label": "Hiro API Key",
"category": "api-key",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
get
解密并返回凭据值。输出中会显示明文值——请谨慎处理。
bun run credentials/credentials.ts get --id <id> --password <pass>
选项:
--id(必填)— 凭据标识符--password(必填)— 用于解密的主密码(敏感信息)
输出:
{
"id": "hiro-api-key",
"label": "Hiro API Key",
"category": "api-key",
"value": "hiro_api_key_xxxxxxxxxxxxxxxx",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
提示:在脚本中使用
$(bun run credentials/credentials.ts get --id hiro-api-key --password $CRED_PASS | jq -r .value)提取值。
list
列出所有凭据标识符和元数据。不会执行解密,也不会返回密钥值。
bun run credentials/credentials.ts list
输出:
{
"count": 2,
"credentials": [
{
"id": "hiro-api-key",
"label": "Hiro API Key",
"category": "api-key",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}
delete
永久删除凭据。需要提供主密码(用于验证所有权)和明确的确认字符串。
bun run credentials/credentials.ts delete --id <id> --password <pass> --confirm DELETE
选项:
--id(必填)— 要删除的凭据标识符--password(必填)— 用于验证的主密码(敏感信息)--confirm(必填)— 必须与DELETE完全一致
输出:
{
"success": true,
"deleted": "hiro-api-key",
"message": "Credential \"hiro-api-key\" has been permanently deleted."
}
rotate-password
通过原子性地重新加密所有凭据来更改主密码。使用旧密码解密每个凭据,再使用新密码重新加密。如果任何凭据解密失败,则会在写入任何更改前中止操作。
bun run credentials/credentials.ts rotate-password --old-password <pass> --new-password <pass>
选项:
--old-password(必填)— 当前主密码(敏感信息)--new-password(必填,至少 8 个字符)— 新主密码(敏感信息)
输出:
{
"success": true,
"message": "Password rotated. 3 credentials re-encrypted.",
"count": 3
}
安全说明
- 每个凭据都使用独立的盐值和 IV 进行 AES-256-GCM 加密——一个凭据泄露不会削弱其他凭据的安全性
- PBKDF2-SHA256 使用 100,000 次迭代,使暴力破解代价高昂
- 主密码绝不会写入磁盘——请通过
--password标志或环境变量替换传入 ~/.aibtc/credentials.json的写入权限为 0o600(仅所有者可读写)- 凭据存储独立于钱包系统——建议使用单独的主密码
delete和rotate-password会先通过解密验证密码,再修改凭据存储
评论
支持 Markdown