mcpField
H
hush

hush

本地服务
github.com/omarei-omoto安全61 周前更新

关于 hush

hush 是面向使用编码 Agent 的个人开发者和小团队的本地密钥管理工具。它将密钥加密后存入代码仓库,并让进程使用密钥而不向 Agent 暴露其值。

主要功能

  1. 01在仓库中加密存储密钥
  2. 02向单个进程注入密钥
  3. 03Agent 工具可用密钥但不能读取
  4. 04增删团队成员并重新加密
  5. 05扫描 Agent 配置和对话记录

适用场景

  1. 01替换项目中的明文 .env 文件
  2. 02运行注入密钥的开发脚本
  3. 03与队友共享加密密钥
  4. 04检查 Agent 配置中的密钥泄露

MCP 相关

README 未说明 MCP 服务接口。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"omarei-omoto-hush": {
"command": "npx",
"args": [
"-y",
"@omarei/hush"
]
}
}
}
启动命令npx -y @omarei/hush

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@omarei/hush0.13.2

工具

10

收录的工具列表 · 更新于 1 周前

参数类型必填说明
envstring否已弃用的 "set" 别名,已在 hush 2.0 中移除。
setstring否要列出的集合(默认:项目的默认集合)。

详细介绍

hush

经过信封加密的团队密钥,AI Agent 可以使用,但绝不会读取。

CI npm node license runtime deps OpenSSF Best Practices

你把 API 密钥放在 .env 文件里。它是明文,启动的每个进程都能读取它;而当你让 AI 编码 Agent 访问代码仓库的那一天,密钥就进入了 Agent 的上下文窗口,进而流向任何存放对话记录的地方。

hush 无需服务端、账号或共享密码即可解决这个问题。你的密钥经过加密,存放在代码仓库本身。hush npm run dev 会将密钥仅提供给那个进程。编码 Agent 可以使用密钥的工具,却永远无法读取密钥。团队成员只需一条命令即可获得访问权限;移除成员时,所有内容都会重新加密。零依赖;只需一次 npm install。

hush init acme                  # a vault in .hush/vault.json — commit it
hush add .env --as "Dev"        # your existing secrets, now encrypted, as a set called dev
hush npm run dev                # injected into the process, never onto disk
hush team add sam hush_pk_1xM…  # commit; sam can decrypt. no invite email.
hush team rm sam                # re-keys the vault, re-seals every value

.env 文件进入 hush 保险库;提交到仓库的是密文;hush run 为程序提供密钥并打印 [redacted:FAL_KEY]

重要

状态:早期阶段。 项目可用且经过大量测试,但尚未达到 1.0 版本,只有一位作者,也尚未经过外部安全审查。加密采用标准方案(基于 age,使用 node:crypto 重新实现),并非自行发明;此外还有一个针对独立实现的差异测试套件——但这不等同于由具备资质的人进行审查。docs/REVIEW-SCOPE.md 说明了所需审查的范围。

开发工作在 macOS 上进行;Linux 由 CI 覆盖。Windows 目前处于 Beta 阶段:密钥通过 DPAPI 保存,审批使用 Windows 原生对话框,hush run npm … 可通过 npm.cmd 工作,密钥文件设置为仅所有者可访问的 ACL,并提供 PowerShell 钩子——Windows CI 任务会检查这些路径,但实际使用还不多。指纹审批(Windows Hello)尚未实现。如果你在特殊环境中尝试后发现问题,请告诉我。

如果你发现了不该读取保险库的方法,请私下报告,不要直接提交问题。

安装

一个文件,无需 Node — 适用于 macOS、Linux(glibc 和 musl)以及 Windows(测试版):

curl -fsSL https://raw.githubusercontent.com/omarei-omoto/hush/main/scripts/install.sh | sh
brew install omarei-omoto/tap/hush
irm https://raw.githubusercontent.com/omarei-omoto/hush/main/scripts/install.ps1 | iex
scoop install https://github.com/omarei-omoto/hush/releases/latest/download/hush.json

安装程序会拒绝 sha256 与发布版 SHA256SUMS 中记录不符的二进制文件;如果已登录 GitHub CLI,还会检查其构建来源证明,并且无需 sudo 即可安装到 ~/.local/bin。手动检查下载文件:

gh attestation verify hush-darwin-arm64 --repo omarei-omoto/hush。

或者通过 npm 安装,需要 Node ≥ 22.6:

npm install -g @omarei/hush

从克隆的仓库运行无需构建 — Node ≥ 22.18 可直接运行 TypeScript(22.6–22.17 版本需先运行 npm run build):

git clone https://github.com/omarei-omoto/hush.git
cd hush && node src/cli.ts --help
为什么发布的包包含编译后的输出

Node 不会剥离 node_modules 下任何文件的 TypeScript 类型,因此安装后的副本无法运行 src/。压缩包包含 dist/ 中的 JavaScript(由 npm run build 构建,并由 prepack 自动运行)。hush 命令根据自身所在位置决定运行内容,而非根据哪些文件存在:位于 node_modules 下时运行 dist/;位于检出目录中时(包括通过 npm link 链接的目录)运行 src/,因此过时的构建产物永远不会覆盖你的修改。运行时仍然零依赖。

快速开始

cd your-project
hush start

就这些。它会查找你的密钥,将它们导入,然后询问是否有 AI 助手会接触这些密钥,并提供运行项目的选项。只需回答几个问题,无需预先了解任何内容。随时可以再次运行:它会接着处理尚未完成的部分,而 hush setup 会显示当前进度。

也可以让你的编码 Agent 帮你完成设置。 将以下内容粘贴到 Claude Code、Codex 或 Cursor 中:

在此项目中设置 hush。运行 hush setup --json 并按其指引操作:按原样运行每个步骤的命令;对于标记为“choice”的内容,在聊天中询问我;对于标记为“person”的内容,运行后等待我操作。绝不要打开 .env 文件,也不要在聊天中向我索要密钥。

如果有任何操作需要你亲自完成,例如添加新密钥或删除 .env,它会在你自己的屏幕上询问你,而不是在聊天中。详见设置。

想亲自查看每个步骤?也可以手动完成相同的操作:

hush init                    # creates your key + a vault, safe to commit
hush add .env --as "Dev"     # what you already have, encrypted, as a set called dev
rm .env                      # you don't need it any more
git add .hush && git commit -m "encrypted secrets"

从现在起,在要运行的任何命令前加上 hush:

hush npm run dev             # anything after hush runs with the secrets injected
hush dev                     # or: find package.json and run its dev script

密钥只存在于该进程的环境中,不会出现在其他任何地方。不会写入磁盘,不会进入你的 shell,也不会留在滚动记录中。

然后快速检查现有配置:

hush scan --agents           # plaintext keys in your agents' config files; --fix moves them into hush
hush scan --transcripts      # your keys in agents' saved conversations (read-only)

其他机器上的 Agent(例如服务器、开发容器)也可以使用保留在你本机上的密钥:在 tailnet 上使用 hush。

为什么要做这个项目

.env 文件悄然成了代码库里最糟糕的产物。它们是明文,任何你启动的进程都能读取,如今还经常被一并塞进大模型的上下文中——研究人员发现,某个编码 Agent 将整个代码库连同未经脱敏的 .env 凭据原样上传。

现有工具各自解决了其中一部分问题:

做得好的地方代价
SOPS / age按接收者加密,可真正撤销访问权限不知道 Agent 的存在;需要处理 YAML 和密钥
secretctl关注 Agent 的使用场景明确只支持单用户
dotenvx / nevr-env将加密文件存入 Git整个团队共用一个密钥,因此无法真正撤销访问权限
1Password CLI + MCP真正的密码库、硬件保护、审计记录和 Agent 访问能力团队中的每个人都需要账号和订阅
Doppler / Infisical + MCP完善的密钥管理和 Agent 访问能力需要运行服务或购买席位

hush 是本地、免费、无需账号的选择,并非后两者的替代品。如果你的团队已经在使用 1Password 或 Doppler,它们的 MCP 服务可以完成 hush 的工作,还提供更好的硬件保护和真正的审计记录——就用它们。hush 面向个人开发者和小团队:他们想要 age 的安全模型,以及一个无法读取密钥值的 Agent,同时不必注册账号或部署任何东西:Git 仓库就是后端。

适用范围的界限在于:一旦你需要动态凭据、租用机制、过期时间,或他人无法修改的审计日志,就说明你已经不该再把密钥放在 Git 文件里。hush 无法满足这些需求,也不会假装可以。完整对比请见RESEARCH.md。

文档

其他内容都在指南中——可在 GitHub 上查看docs/guide,也可访问**tryhush.dev** 网站。

贡献

非常欢迎你参与贡献,尤其是:在我无法使用的环境中运行它(Linux、Windows,或我没有的 YubiKey)、找到一种能取出不该取出的值的方法,或告诉我哪些地方让你感到困惑。

安全问题请勿在 issues 中提出。 请改为提交私密安全公告。

许可证

MIT — 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。