关于 hush
hush 是面向使用编码 Agent 的个人开发者和小团队的本地密钥管理工具。它将密钥加密后存入代码仓库,并让进程使用密钥而不向 Agent 暴露其值。
主要功能
- 01在仓库中加密存储密钥
- 02向单个进程注入密钥
- 03Agent 工具可用密钥但不能读取
- 04增删团队成员并重新加密
- 05扫描 Agent 配置和对话记录
适用场景
- 01替换项目中的明文 .env 文件
- 02运行注入密钥的开发脚本
- 03与队友共享加密密钥
- 04检查 Agent 配置中的密钥泄露
MCP 相关
README 未说明 MCP 服务接口。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| env | string | 否 | 已弃用的 "set" 别名,已在 hush 2.0 中移除。 |
| set | string | 否 | 要列出的集合(默认:项目的默认集合)。 |
详细介绍

经过信封加密的团队密钥,AI Agent 可以使用,但绝不会读取。
你把 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]](https://github.com/omarei-omoto/hush/raw/HEAD/assets/demo.gif)
重要
状态:早期阶段。 项目可用且经过大量测试,但尚未达到 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** 网站。
- 使用方法 — 密钥集 · 从其他工具迁移 · 一个服务使用多个密钥 · 运行程序 · 文件形式的凭据 · 应用 · Shell 钩子(包括 Nushell)
- 检查配置 — 值应是什么样子 · 找出代码库所需的内容
- Agent — 连接你的 Agent · Agent 能获取什么 · 在聊天记录之外添加密钥 · 审批 · 策略
- 团队管理 — 添加成员 · 仅授予部分密钥集 · 移除成员 · 成员变更 · 合并 · CI · 成员离开后
- 强化安全 — 安全阶梯 · Touch ID · 硬件密钥
- 参考 — 命令 · 加密机制 · hush 不会做什么 · 审批中继 · 架构 · 硬件解锁
- 信任与安全 — SECURITY.md(威胁模型、报告问题) · 审查范围 · 红队测试 · 发现的所有缺陷 · RESEARCH.md
贡献
非常欢迎你参与贡献,尤其是:在我无法使用的环境中运行它(Linux、Windows,或我没有的 YubiKey)、找到一种能取出不该取出的值的方法,或告诉我哪些地方让你感到困惑。
- CONTRIBUTING.md — 如何设置,以及变更的要求
- docs/ARCHITECTURE.md — 各部分如何协同工作,以及保障其正常运行的测试
- 开发 — 运行测试套件、模糊测试工具和二进制文件
- CODE_OF_CONDUCT.md — Contributor Covenant 2.1
- SECURITY.md — 威胁模型,以及如何报告漏洞
- docs/AUDIT.md — 迄今发现的所有缺陷,以及相应的变更
安全问题请勿在 issues 中提出。 请改为提交私密安全公告。
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。