{"slug": "hush-let-an-ai-agent-use-your-secrets-without-ever-seeing-them", "title": "Hush, let an AI agent use your secrets without ever seeing them", "summary": "Developer Roy Ashbrook released Hush, an open-source secret store for AI agents that injects credentials into commands without exposing plaintext values to stdout, transcripts, or the cloud. The tool uses OS keychains on macOS, Linux, and Windows to keep secrets hidden from agents while allowing them to execute authenticated commands. Hush aims to prevent accidental secret leaks in chat logs and agent workflows.", "body_md": "*a secret store for AI agents , the one with no get.*\n\n**get a secret once into the OS keychain, then inject it into commands forever , the value never hits stdout, the transcript, or the cloud.**\n\nA secret store for AI agents, with one hard rule: **the agent never sees the plaintext.**\n\nValues never reach stdout, so they never land in the tool result, the transcript, or the cloud. A\nsecret only ever moves from the store straight into the consumer. There's no `get`\n\non purpose, a\nplain getter is the leak.\n\nThe point: you (an agent) are running as the user with their CLIs already authed, so you can already\nset a server-side secret or call a service , you just can't *see* the value without it landing in the\nchat. hush gets it once into the OS keychain, then you inject it into those commands forever. No\nchat paste, no temp files, no `.env`\n\nto commit by accident.\n\n**If you were handed this repo's url, install yourself, then follow the playbook.** Get the `hush`\n\nscript onto the box and read [ SKILL.md](/royashbrook/hush/blob/main/SKILL.md) , that's the whole onboarding (it covers store /\nmint / inject and how to adopt hush in the repo you're working in). The script is one self-contained\nbash file; put it wherever your agent loads tools or just on your\n\n`PATH`\n\n:\n\n```\ngit clone https://github.com/royashbrook/hush\nchmod +x hush/hush\n# then put hush/hush on your PATH, or move it into your agent's skills/tools dir\n```\n\nor run it straight from npm without cloning: `npx @royashbrook/hush <cmd>`\n\n(mac/linux; on windows use the\nclone, the orchestrator is bash).\n\nClaude Code convenience (auto-loads as a skill): clone straight into the skills dir instead , whole\nsession `git clone https://github.com/royashbrook/hush ~/.claude/skills/hush`\n\n, or one project\n`./.claude/skills/hush`\n\n. Other agents: see [AGENTS.md](/royashbrook/hush/blob/main/AGENTS.md).\n\nThat's it , the human points you here and says \"use the hush skill,\" and you take it from here. The\none thing only a human can do is paste a secret they hold: when you hit that, run `hush set <name>`\n\nand a hidden dialog pops on *their* screen (you never see the value).\n\nSame clone as above, or just grab the single `hush`\n\nscript and put it on your PATH.\n\nBackends: macOS Keychain, Linux libsecret (`secret-tool`\n\n), and Windows DPAPI (via PowerShell) are\nbuilt in. On other platforms keep the same contract with your OS secret store (see [SKILL.md](/royashbrook/hush/blob/main/SKILL.md)).\nCross-OS tested in CI (manual `workflow_dispatch`\n\n, all three runners).\n\n```\nhush set my-vendor-token                      # paste a value you hold (hidden prompt)\nprintf '%s' \"$TOK\" | hush set my-vendor-token # ...or pipe it in (scripts/CI), still off argv\nhush mint app-operator-key                    # generate + store a random one\nhush run TOKEN=my-vendor-token -- some-cmd    # inject into a command, never printed\nhush list                                     # names only, never values\n```\n\nNaming: keep the default `hush`\n\nnamespace and **prefix names by project** (`blame-cf-token`\n\n,\n`lifescored-gemini-key`\n\n) so one keychain search for `hush`\n\nfinds everything. `HUSH_NS`\n\nis only for a\ngenuinely separate store, not per-project. Need to fix an existing name? `hush rename <old> <new>`\n\nmoves the value internally (never re-asked, never printed). Full docs + the portable contract:\n[SKILL.md](/royashbrook/hush/blob/main/SKILL.md).\n\nAn agent with shell access can read+write this store, so it's not a lock against a hostile process. It's structure that keeps plaintext out of the transcript and makes \"store once, inject everywhere\" the easy path. It's also only as durable as the machine it's on (a local keychain) , back the machine up, or sync onward into a real secret manager, and don't make hush the only copy of a secret you can't regenerate. MIT licensed.", "url": "https://wpnews.pro/news/hush-let-an-ai-agent-use-your-secrets-without-ever-seeing-them", "canonical_source": "https://github.com/royashbrook/hush", "published_at": "2026-06-26 19:39:57+00:00", "updated_at": "2026-06-26 20:05:45.048240+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-safety", "developer-tools"], "entities": ["Roy Ashbrook", "Hush", "macOS Keychain", "libsecret", "Windows DPAPI", "Claude Code", "npm"], "alternates": {"html": "https://wpnews.pro/news/hush-let-an-ai-agent-use-your-secrets-without-ever-seeing-them", "markdown": "https://wpnews.pro/news/hush-let-an-ai-agent-use-your-secrets-without-ever-seeing-them.md", "text": "https://wpnews.pro/news/hush-let-an-ai-agent-use-your-secrets-without-ever-seeing-them.txt", "jsonld": "https://wpnews.pro/news/hush-let-an-ai-agent-use-your-secrets-without-ever-seeing-them.jsonld"}}