clerk
authCLERK_SECRET_KEY, webhook
v0.1.0 · open source · pre-npm
rotate-cli is the first secrets rotation tool
built for the AI-native stack. Your master credentials never leave your machine —
borrowed from CLIs you already trust. Agents can rotate safely with hard guardrails.
built after the Vercel breach · april 2026
evidence
The April 2026 Vercel incident left one of us staring at 1,516 env vars flagged
Need to Rotate across 467 projects. rotate-cli
exists because rotating them by hand was a bad afternoon that nobody should repeat.
quick start
Describe what you rotate, point rotate
at an incident file, and let the grace period keep production alive while consumers
redeploy.
# 1. describe the secrets and their consumers
$ rotate init
# 2. see the plan — no mutation
$ rotate plan --tag production
# 3. respond to an incident
$ rotate incident .rotate/incidents/vercel-apr-2026.yaml \
--yes --reason "vendor breach response"
# 4. close the rotation once deploys are healthy
$ rotate revoke rot_abc123
no dashboard · no lock-in · one config file in your repo
providers · v0.1
No SDK bloat. Each adapter is a single file implementing
create / verify / revoke against the
provider's documented REST surface. Providers without a rotation API land in v0.2
via human-in-the-loop adapters.
CLERK_SECRET_KEY, webhook
admin keys via /v1/organization
admin API keys
RESEND_API_KEY
service role, anon, jwt
project API keys
DATABASE_URL / POSTGRES_*
installation tokens
VERCEL_TOKEN
AI_GATEWAY_API_KEY
Redis / Vector REST tokens
legacy KV_* (alias)
OAT + webhook secrets
FAL_API_KEY
service-account keys
TURSO_AUTH_TOKEN + DATABASE_URL
SESSION / JWT / HMAC
consumers
Vercel project env vars + redeploy
repo/org secrets (sealed-box)
.env files (atomic write)
agent mode
Set ROTATE_CLI_AGENT_MODE=1.
The CLI refuses to rotate without a --reason
that lands in the audit log, a hard cap on blast radius, and an append-only JSONL
trail. Revoking the old secret always takes an explicit
--force-revoke — agents can rotate
eagerly and revoke conservatively.
$ ROTATE_CLI_AGENT_MODE=1 rotate apply openai-prod \
--reason "vercel breach response 2026-04-19" \
--max-rotations 1 \
--audit-log ~/.kai/audit/rotate-$(date +%F).jsonl \
--yes
design
rotate-cli has no servers. No SaaS dashboard. It does not phone home. It borrows
auth tokens from CLIs you already have installed (vercel,
gh, clerk)
or from env vars you provide.
A centralized rotation service is itself a breach target — the exact pattern that caused the Vercel incident. rotate-cli holds no keys between runs, only the plan. When you are done rotating, there is nothing for an attacker to steal except your own machine.
rotate keys, not trust.
rotate-cli is MIT-licensed. 17 adapters in v0.1. Tested with 136 unit tests but not yet battle-tested against live rotations — we are smoke-testing through April 2026 before cutting npm.