关于 JFSecure
JFSecure 的 `jfs` 是 CLI 和 MCP 服务,可让 AI Agent 使用保险库中的密钥而不接触其值。每次使用都需在运行中的应用中批准,返回的命令输出会遮蔽密钥值。
主要功能
- 01每次使用密钥前均需批准
- 02遮蔽命令输出中的密钥值
- 03将密钥作为环境变量运行命令
- 04将密钥填入模板
- 05列出密钥和键名
适用场景
- 01让 Agent 调用需要凭据的命令
- 02根据模板填充 `.env` 文件
- 03审核并批准命令对密钥的使用
MCP 相关
MCP 服务提供列出密钥名称、使用密钥运行命令和渲染模板的工具。它不提供读取密钥值的工具;每次使用请求都需在 JFSecure 中批准。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
jfs — 让 AI Agent 使用密钥,但永远看不到密钥
jfs 是 JFSecure 的命令行工具和 MCP 服务。JFSecure 是一款离线密码和片段管理器。它让 Claude Code、Cursor 或任何 MCP Agent 使用密钥,却永远无法获取密钥;每次使用都由你在应用中审批。
此仓库是 jfs 本身的源代码,因此你可以确切了解 Agent 会与什么交互。它是一个轻量级客户端:通过本地管道发送一个 JSON 请求到正在运行且已解锁的 JFSecure 应用,然后打印响应。它绝不会打开密码库文件、查看密码库密码,也不包含任何加密功能。(该应用需另行下载;jfs 随应用一同提供。)

MCP 工具
| 工具 | 功能 | Agent 收到的内容 |
|---|---|---|
list_secrets | 列出密钥和键名称,以及每个键对应的环境变量 | 仅名称 |
run_with_secrets | 使用密钥的键作为环境变量运行命令(全部、部分,或通过 stdin 传入一个) | 退出代码和输出;所有值均屏蔽为 [JFSecure: NAME] |
render_template | 填充模板中的 {{Secret:key}} 并写入文件(例如 .env) | 已填入的名称 |
特意不提供“获取”工具。每次使用都会在 JFSecure 中打开审批窗口,显示程序、确切命令和密钥:允许一次、允许 15 分钟,或拒绝。对于 Claude Code,15 分钟的审批仅适用于该命令和该密钥。
# the agent called run_with_secrets(secret: "github", command: …)
exit code 0
variables set: TOKEN
--- stdout ---
token is [JFSecure: TOKEN]
{"login": "octocat", "plan": {"name": "pro"}}
设置
- 安装 JFSecure 并打开密码库:
brew install theone55/jfsecure/jfsecure(macOS)、scoop bucket add jfsecure https://github.com/theone55/scoop-jfsecure; scoop install jfsecure/jfsecure(Windows),或使用安装程序(Windows、macOS、Linux)。jfs会随应用一同提供:在 Windows 上,应用首次启动时会将其添加到 PATH(之后请打开新终端);在 macOS(.dmg)和 Linux AppImage 上,使用“设置” → 安装 jfs 命令;Homebrew 和 .deb 会自动为你安装。 - 添加 MCP 服务:
claude mcp add --scope user jfsecure -- jfs mcp
Cursor(~/.cursor/mcp.json)、Claude Desktop、Windsurf、VS Code——任何 stdio MCP 客户端均可:
{ "mcpServers": { "jfsecure": { "command": "jfs", "args": ["mcp"] } } }
更多信息:https://secure.jfolio.org/agents
也可在 releases 页面获取 MCP bundle(.mcpb,适用于 Windows / macOS / Linux),并可在官方 MCP Registry 中通过 io.github.theone55/jfs 找到。
命令行
jfs status is the app running and unlocked
jfs ls [secret|folder] names only, no approval needed
jfs get github/token print a value (approved in the app)
jfs copy github/token to the clipboard, nothing printed
jfs run github -- gh api user run with the secret's keys as env vars ($token → TOKEN); output masked when piped
jfs render .env.tpl -o .env fill {{Secret:key}} into a file
git config --global credential.helper "!jfs git-credential"
完整指南:https://secure.jfolio.org/cli
它能保护什么——以及不能保护什么
- 模型永远不会收到密钥值,因此密钥不会出现在对话记录或日志中。
- 被提示词注入的 Agent 只能发起请求;你可以看到确切命令。
- 此管道仅供你的操作系统用户使用,且应用通过操作系统识别调用者,而非依据调用者自述。
- **屏蔽是安全带,不是防护墙:**你批准的命令仍可能泄露密钥值。请仔细检查命令。
构建
cargo build --release # Rust stable; Windows, macOS, Linux
cargo test
此处的副本会随每个 JFSecure 版本更新(Cargo.toml 中的 version = 随附应用的版本)。
欢迎在此提交问题和提问。
MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。