v0.1.0-dev · open source · pre-npm

Agent-first secrets rotation. Local-first. Zero servers.

rotate-cli is the first secrets rotation tool built for the AI-native stack. Your master credentials never leave your machine. They are borrowed from CLIs you already trust. Agents can rotate safely with hard guardrails.

View on GitHub Docs → Quick start →

built after the Vercel breach · april 2026

evidence

1,516 environment variables. One command.

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.

22
adapters
3
consumers
0
servers
MIT
license

quick start

Rotate a breach scope in four lines.

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

22 adapters. Every one hits the public API.

No SDK bloat. Each adapter is a single file implementing create / verify / revoke against the provider's documented REST surface. Dashboard-only providers (Firecrawl, Trigger.dev, Uploadthing, Vercel Blob) use manual-assist mode: the CLI pauses, you paste a new value from the provider UI, and rotate-cli still handles propagation, verification, and grace.

Clerk Logo Clerk Logo
auth

clerk

CLERK_SECRET_KEY, webhook

OpenAI OpenAI
ai

openai

admin keys via /v1/organization

Anthropic Anthropic
ai

anthropic

admin API keys

Resend Resend
email

resend

RESEND_API_KEY

Supabase Logo Supabase Logo
db

supabase

service role, anon, jwt

Neon Neon
db

neon

project API keys

Neon Neon
db

neon-connection

DATABASE_URL / POSTGRES_*

GitHub Invertocat GitHub Invertocat
ci

github-token

installation tokens

Vercel Logo Vercel Logo
infra

vercel-token

VERCEL_TOKEN

Vercel Logo Vercel Logo
ai

ai-gateway

AI_GATEWAY_API_KEY

Upstash Logo Upstash Logo
cache

upstash

Redis / Vector REST tokens

Polar Logo Polar Logo
billing

polar

OAT + webhook secrets

fal fal
ai

fal

FAL_API_KEY

ElevenLabs ElevenLabs
ai

elevenlabs

service-account keys

Turso Turso
db

turso

TURSO_AUTH_TOKEN + DATABASE_URL

Exa Exa
ai

exa

EXA_API_KEY

Uploadthing Icon Uploadthing Icon
manual files

uploadthing

UPLOADTHING_TOKEN

Vercel Logo Vercel Logo
manual files

vercel-blob

BLOB_READ_WRITE_TOKEN

Trigger.dev Logo Trigger.dev Logo
manual jobs

trigger-dev

TRIGGER_SECRET_KEY

Firecrawl Firecrawl
manual scrape

firecrawl

FIRECRAWL_API_KEY

Vercel Logo Vercel Logo
no-check cache

vercel-kv

legacy KV_* (alias)

no-check app

local-random

SESSION / JWT / HMAC

consumers

vercel-env

Vercel project env vars + redeploy

github-actions

repo/org secrets (sealed-box)

local-env

.env files (atomic write)

agent mode

Guardrails designed for Claude Code & Codex.

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

Local-first is not a feature. It's the point.

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.

Read the code before you rotate anything.

rotate-cli is MIT-licensed. 22 adapters covered. 334 unit tests passing. End-to-end smoke tests against real providers in progress before cutting npm.