Hush Secrets
FreeMaintainedhush — keep API keys out of AI agent chats. Vault + redacting runner + harness-agnostic MCP server.
About
hush — keep API keys out of AI agent chats. Vault + redacting runner + harness-agnostic MCP server.
README
He says nothing. He keeps your keys. It still works.
Scope honesty
hush protects the transcript: values never enter chat, tool outputs, or
logs through its own channels. It does not protect against a hostile or
prompt-injected agent with shell access — such an agent can cat the vault,
tee stdin to disk, or transform values (base64/reverse) past literal
redaction. If your adversary is the agent itself, you need OS-level isolation
(keychain, daemon + socket auth), not hush. See SECURITY.md.
npm i -g --allow-scripts=hush-secrets hush-secrets # installs binary + skill
hush set MY_API_KEY # in YOUR terminal, never in chat
hush update # self-update via npm (needs npm on PATH)
Why
Pasting a secret into a harness chat leaves it in the transcript forever.
hush separates the channels: the human loads values via TTY or the harness
native prompt (over MCP), the agent only orchestrates names. No tool ever
returns a value.
MCP (harness-agnostic: claude, opencode, cursor, codex)
hush serve exposes stdio with 4 tools: hush_check, hush_list, hush_need
(asks for the value via elicitation and stores it), hush_run (injects +
redacts). hush setup installs the skill, registers the server, and offers
to add harness permission rules so the agent cannot read ~/.hush with its
file tools (Claude Code, opencode v2) or runs hush without confirmation
(Codex).
CLI
openssl rand -hex 24 | hush set WHATSAPP_VERIFY_TOKEN
hush check WHATSAPP_VERIFY_TOKEN META_APP_SECRET
hush stdin WHATSAPP_VERIFY_TOKEN -- npx wrangler secret put WHATSAPP_VERIFY_TOKEN
hush run --only META_APP_SECRET -- npx wrangler deploy
hush status
check and list print names only. run and stdin inject into the child
process and redact output to [REDACTED].
hush run waits for the command to exit before printing, so redaction sees
the whole output. To wrap a long-lived stdio process such as an MCP server,
add --stream: output is forwarded line by line as it arrives (trade-offs in
SECURITY.md).
"jira": {"type": "local", "command": ["hush", "run", "--stream", "--only", "JIRA_API_TOKEN", "--", "jira-mcp"]}
Where secrets live, and getting them back
Values are stored in ~/.hush/vault (file 0600, dir 0700), one
NAME=value per line. There is intentionally no read-back over MCP and
no get command — anything an agent can call ends up in its context.
To recover a value (rotation, migration, backup), use a real terminal:
hush export # prints all, NAME=value per line
hush export META_APP_SECRET # prints one
export refuses to run unless stdout is a TTY, so a harness cannot capture it
by piping (a pty is not proof of a human — see SECURITY.md). Back up the file itself (cp ~/.hush/vault …) for disaster
recovery; wipe with rm -rf ~/.hush. See SECURITY.md and PRIVACY.md.
Notes
- Linux and macOS only (amd64/arm64). No Windows (TTY model).
hush_runover MCP asks for human confirmation on every call and times out slow commands at 5 minutes, so don't start long-lived processes through it: run them in your terminal, or wrap an MCP server withhush run --streamin your harness config.- Elicitation (native secret prompts) needs an interactive session; headless
runs get the safe fallback (
hush setin your terminal).
Verified harnesses
| Harness | MCP tools | Elicitation UI |
|---|---|---|
| OpenCode | ✅ verified live | interactive sessions |
| Codex | ✅ via exec --approve-for-me (headless denies MCP by policy) |
interactive sessions |
| Pi | ✅ verified headless | interactive sessions |
| Claude Code | registration via claude mcp add (CLI needs login here) |
interactive sessions |
| Cursor | ~/.cursor/mcp.json (agent needs agent login here) |
interactive sessions |
Docs
SECURITY.md (threat model) · PRIVACY.md · CONTRIBUTING.md · CHANGELOG.md
Alternatives
| hush | psst | key-amnesia | akm | 1Password MCP | |
|---|---|---|---|---|---|
| Values hidden from transcript | ✅ | ✅ | ✅ | ✅ | ✅ |
| Hostile-agent isolation | ❌ honest | ❌ | parcial | parcial | ❌ |
| MCP server | ✅ | ❌ | ❌ | ❌ | ✅ (Codex only) |
| Load via native prompt (no chat) | ✅ elicitation | ❌ | ✅ popup | ❌ | ✅ |
| TTY-only export | ✅ | ❌ | ❌ | ❌ | ❌ |
| Vault corruption guard | ✅ | n/a | ❌ | ❌ | n/a |
| Harness-agnostic setup | ✅ | ❌ | parcial | ❌ | ❌ |
| Single binary, no runtime | ✅ Go | ✅ | ❌ Python | ✅ Rust* | ❌ |
| Works offline / local-only | ✅ | ✅ | ✅ | ✅ | ❌ |
*akm is macOS-only (Keychain). hush keeps a plain 0600 file so any dev can
inspect, back up, and recover it with standard tools.
Development
make check # generate + fmt + vet + test + build
make hook # pre-commit (generate + fmt + vet + test)
./scripts/release.sh 0.2.0 # bump + tag (workflow publishes npm + release)
Conventional commits: feat:, fix:, chore:, docs:, refactor:, test:.
SKILL.md is the single source of the skill; internal/setup/skill.md is
regenerated with go generate ./... (a test enforces it).
Install Hush Secrets in Claude Desktop, Claude Code & Cursor
unyly install hush-secretsInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add hush-secrets -- npx -y hush-secretsStep-by-step: how to install Hush Secrets
FAQ
Is Hush Secrets MCP free?
Yes, Hush Secrets MCP is free — one-click install via Unyly at no cost.
Does Hush Secrets need an API key?
No, Hush Secrets runs without API keys or environment variables.
Is Hush Secrets hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Hush Secrets in Claude Desktop, Claude Code or Cursor?
Open Hush Secrets on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Changes
Versions and requested access over time.
- New version published
- New version published
- New version published
- New version published
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Unyly Deploy
Deploy sites and MCP servers to Unyly straight from your AI agent
by UnylyAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiPayMCP
Lightweight payments layer for MCP servers: turn tools into paid endpoints with a two-line decorator. [PyPI](https://pypi.org/project/paymcp/) · [npm](https://w
by blustAIServer For Power BI
Enables exploring Microsoft Fabric / Power BI workspaces and semantic models, and executing ad-hoc DAX queries.
by Mitsubishi-FusoGpt Image 2 Mcp
RunAPI GPT Image 2 MCP server for image generation: create tasks, poll results, and check pricing across 1 model from Claude Code, Codex, Cursor, and VS Code.
by runapi-aiTemplate MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectSupabase
Database, auth and storage
by SupabaseCompare Hush Secrets with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
