MCP-native · For Claude Code, Cursor & AI agents

Hand AI the kingdom.
Keep the keys.

No secrets in AI context windows. No .env files. No copy-paste. API keys live in your macOS Keychain — AI agents fetch them through MCP, gated by Touch ID.

Download on the Mac App Store
noboxdev / gitpulse
OAUTH_SECRET api_key sk-pr...
DB_PASSWORD password xK9m2...
shared
CF_API_TOKEN token v1.0-...
GITHUB_PAT ghp_R...
oauth esc
OAUTH_SECRET
noboxdev/gitpulse
Copy
OAUTH_CLIENT_ID api_key
Touch ID ready
// Claude Code asks for a secret
MCP →noxkey_get(account: "noboxdev/gitpulse/OAUTH_SECRET")
# Touch ID prompt appears source '/tmp/noxkey-mcp-xyz/secrets.sh' $OAUTH_SECRET loaded into shell (value not shown)
// Agent stores a new secret
MCP →noxkey_set(account: "noboxdev/gitpulse/NEW_KEY", clipboard: true)
Stored noboxdev/gitpulse/NEW_KEY [api_key]
// No raw values, no .env, no paste

AI changed how you write code. It also changed where your secrets end up.

Half your keys pass through an AI tool's context while the other half sit in plaintext .env files — and the "safer" alternatives gate every fetch behind a subscription and a vendor login. Safe and fast shouldn't be a tradeoff.

AI tools leak every key you paste into them.

Drop a key into Claude or Cursor and it lives in the model's context, the chat log, and the provider's traces. There is no undo.

You can't share a key from a locked vault.

1Password, Bitwarden, Doppler — every vault wants the recipient on the same subscription. Most teams give up and paste into Slack instead.

.env files multiply across projects and drift out of sync.

Thirty projects, thirty .env files. Some are stale, one is in git history, half are in the wrong .gitignore. You chase them every quarter.

Secure by design. Fast by habit.

Everything you need to manage credentials without friction, and without exposing them.

Touch ID protected

Every secret retrieval requires biometric authentication. No master passwords. No unlocked vaults sitting open on your desktop.

MCP server built in

Claude Code, Cursor, and any MCP-aware agent can call noxkey_get, noxkey_set, noxkey_show, noxkey_scan, and noxkey_admin. Values load as env vars — never into the conversation.

Agent guardrails

Every noxkey_get response carries an in-tool instruction telling the model not to echo, cat, printenv, or hardcode the loaded value. The MCP server's system instructions repeat the rule on every connection.

Quick Access

Press Cmd+Shift+1 from any app. A floating panel appears near your cursor. Search, Touch ID, copied. Under 2 seconds.

Organized by project

Name credentials as org/project/KEY and they group automatically. Filter instantly. No more hunting through .env files.

Clipboard auto-clear

Copied secrets are automatically cleared from your clipboard after 30 seconds. No stale credentials in your paste buffer.

macOS Keychain native

No proprietary vault. No sync servers. Everything lives in the macOS Keychain, encrypted by Apple's Secure Enclave.

Zero outbound connections. Your secrets never leave your Mac.

Six layers between an attacker and your secrets.

Defense in depth. If any one layer is bypassed, the others still hold.

01

App Sandbox

The app ships without the network entitlement. The kernel blocks every outbound socket. No telemetry, no sync, no exfiltration path.

02

macOS Keychain

Secrets encrypted at rest by the Secure Enclave. Apple's implementation, not custom crypto. Unreadable without biometric or passcode auth.

03

Touch ID Gate

Every read requires biometric auth. Strict-mode secrets always prompt — even mid-session. Passcode fallback for non-biometric Macs.

04

Session Binding

Sessions are bound to a specific process tree (terminal PID + boot-relative start time). PID recycling is detected. Auto-expire after 4 hours.

05

Encrypted Handoff

MCP noxkey_get returns a ChaChaPoly (AEAD) payload, written to a self-deleting temp script that rms on first source. 120-second hard timeout if it never is.

Match the friction to the secret.

Not every key deserves the same gate. Pick a level per secret — quiet for the dev API you call all afternoon, locked tight for production.

easy

One prompt, then quiet

Touch ID once, then the same secret unlocks silently for the rest of your coding session. No more re-prompting on every call.

Use for: dev-tier API keys you call dozens of times during a coding session.
normal · default

Touch ID per call — or unlock a workspace

By default, every read asks. Want fewer prompts? Pass session: '4h' once and every secret in that workspace unlocks for the same agent.

Use for: the everyday default — most workflows want this.
strict

Always asks, every time

Sessions don't apply. Every read prompts you, full stop. The gate never opens automatically — no matter what's already unlocked nearby.

Use for: production credentials, payment keys, anything with blast radius.
off-limits

Stored, never handed out

Safe in the Keychain so you can find it later — but MCP and the menu bar refuse to hand it over to anyone, including you. Reveal in the app only.

Use for: recovery codes, root tokens, things that should never paste.

One Touch ID covers a whole project

Pass a session window on the first call and the same agent's process tree skips the prompt for every other secret under that prefix — until the window expires or the process exits.

# first call — prompts Touch ID once
noxkey_get(account: "noboxdev/gitpulse/STRIPE_KEY", session: "4h")

# next 4 hours, same agent, no prompts:
noxkey_get(account: "noboxdev/gitpulse/POSTGRES_URL")
noxkey_get(account: "noboxdev/gitpulse/OPENAI_KEY")

Built for AI agents, end-to-end.

NoxKey ships with a Model Context Protocol server. Claude Code, Cursor, and any MCP-aware agent can ask for a secret — and get it — without the value ever touching the conversation.

Five MCP tools

noxkey_get, noxkey_set, noxkey_show, noxkey_scan, noxkey_admin — enough for agents to read, write, and organize secrets without ever shelling out.

Encrypted handoff

The agent sources a short-lived temp file to load the value as an env var. The value is never returned in a tool result, never hits stdout, never lands in the model's context window.

Process-tree detection

The app walks the requesting process tree and knows when the caller is an agent (Claude, Cursor, Codex). Agent-mode locks down raw-value flags and enforces the handoff pattern.

Session unlock per prefix

One Touch ID unlocks a whole org/project prefix for the session. Long-running agent work doesn't need re-auth on every secret.

Claude Code · MCP
// Agent asks for a secret
MCP →noxkey_get(account: "noboxdev/gitpulse/OAUTH_SECRET")
# Touch ID prompt on the Mac
source '/tmp/noxkey-mcp-xyz/secrets.sh'
$OAUTH_SECRET loaded into shell (value not shown)

// Agent stores a new secret
MCP →noxkey_set(account: "noboxdev/gitpulse/NEW_KEY", clipboard: true, field_type: "api_key")
Stored noboxdev/gitpulse/NEW_KEY [api_key] (from clipboard)

// Agent browses what's available (no Touch ID)
MCP →noxkey_show()
noboxdev/ (2)
  gitpulse/ (2)
    DB_PASSWORD  env:production
    OAUTH_SECRET

Plus, the small stuff that adds up.

Quality-of-life tools baked into the menu bar so you never have to leave the keychain.

Quick password generation

Need a fresh password mid-signup? Hit generate in the panel — pick length and character set, copy with one keystroke, auto-cleared from the clipboard 30 seconds later. Save it as a NoxKey entry without retyping a thing.

Email alias generation

Sign up for a service without burning your real address. NoxKey mints a disposable alias, ties it to the entry, and stores both — so a year later you still know which alias went where, and which one to revoke when a vendor starts spamming.

Reusable dev password

Save your go-to local-dev password once. Next time a setup wizard asks for one — Postgres, Redis, your test SMTP — paste it from the menu bar instead of inventing yet another throwaway string.

Frequently asked questions.

Is NoxKey free?

Yes. NoxKey is completely free. No accounts, no subscriptions, no telemetry.

Does NoxKey send my secrets anywhere?

No. The app has zero outbound network connections — enforced by macOS App Sandbox at the kernel level. Updates come from the Mac App Store, so NoxKey itself never phones home. Verify the isolation anytime with codesign -d --entitlements - /Applications/NoxKey.app.

What happens if I uninstall NoxKey?

Your secrets stay in the macOS Keychain. You can access them through Keychain Access or reinstall NoxKey anytime. Nothing is lost.

Does it work without Touch ID?

NoxKey requires macOS 14.0 or later with Touch ID. On Macs without Touch ID, the system falls back to your device passcode.

Can AI agents see my raw secrets?

No. Agents receive an encrypted handoff file that they source in Bash; the value lands in the shell as an env var, never in the model’s context. The file self-deletes on first source and hard-deletes after 120 seconds. Bulk-exfiltration variants (--raw, --copy, load, export, bundle) are hard-blocked for detected AI callers.

How is this different from 1Password or Bitwarden?

NoxKey is built for developers and AI workflows, not browser autofill. No sync servers, no master password, no subscription. Everything stays local in the macOS Keychain.

Latest from NoxKey

View all posts

Stop sharing secrets.
Start managing them.

NoxKey is live on the Mac App Store. Free, AGPL-3.0, zero outbound network.

Requires macOS 14.0 or later with Touch ID.