Security rotate leak
Skill Clear-Capabilities/agentic-security/skills/security-rotate-leak
Rotate a leaked secret end-to-end. Activate on leaked API key, exposed credential, or pushed-secret reports.From its SKILL.md
npx -y skills add Clear-Capabilities/agentic-security --skill security-rotate-leakAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
4.0 KB, as published. Nobody here has run it
Skill — rotate a leaked secret
Activates when the user has discovered (or you've discovered) that a production credential is in the repo, the chat, or git history. The clock is running — every hour the value sits exposed is another hour an attacker has to find it.
When to fire
- User says "I leaked X" / "I accidentally pushed Y" / "X is in git history" / "is this secret bad?"
- The scanner (or
ai-bodyguardhook) just flagged a hardcoded secret. - User pastes a high-entropy string and asks "should I rotate this?"
- A
/scan --secretsrun produces a critical-severity hit. - User mentions they're "rotating keys" or "doing a credential reset."
What to do — sequenced, do not skip steps
-
DO NOT print the leaked value back. Mask it to first-4 + last-4 chars in any output. The chat transcript itself becomes part of the blast radius.
-
Detect the provider from the prefix:
sk_live_…,rk_live_…→ Stripesk-…,sk-proj-…→ OpenAIsk-ant-…→ Anthropicghp_…,github_pat_…→ GitHub PATxoxb-…,xoxa-…,xoxp-…→ SlackAKIA…→ AWS access key (16 chars after prefix)AIza…→ Google API key- JWT with
role: service_roleclaim → Supabase service-role - Service-account JSON (
type: "service_account") → GCP
-
Print the EXACT revoke URL for that provider's console. Don't paraphrase — copy from this canonical list:
Provider Revoke at OpenAI https://platform.openai.com/api-keys Anthropic https://console.anthropic.com/settings/keys GitHub PAT https://github.com/settings/tokens Slack https://api.slack.com/apps → your app → OAuth & Permissions → Revoke AWS access key https://console.aws.amazon.com/iam/home#/security_credentials Google API key https://console.cloud.google.com/apis/credentials Supabase service-role https://supabase.com/dashboard/project/_/settings/api GCP service account https://console.cloud.google.com/iam-admin/serviceaccounts Stripe https://dashboard.stripe.com/apikeys -
Estimate blast radius BEFORE the rotation, not after:
- Stripe = real money. Check dashboard for unauthorized charges in the last 24h BEFORE rotating.
- AWS = potential crypto-mining bills. Check Billing → Cost Explorer.
- Supabase service-role = bypasses every RLS rule. Audit the
audit_logtable for anomalous reads since the value first appeared. - GitHub PAT = potential pushes / forks / settings changes.
-
Run the active rotation if the user agrees:
/fix --rotate-secret --auto. This is the only command that touches the provider's API for you. Without--auto, surface the manual steps and stop. -
Add
--scrub-historyif the value is in git history. Rewrites history viagit filter-repoor BFG. Note: irreversible, requires force-push to a shared branch — do NOT run without explicit user confirmation. -
Propose the next step:
/fix --vaultto migrate the rest of the project's env-var surface to a real secrets manager so this doesn't happen again.
Don't
- Don't print the leaked value back to the user un-masked.
- Don't run
--scrub-historywithout explicit confirmation. It's irreversible and breaks every clone of the repo. - Don't tell the user to "rotate it later" — every minute counts.
- Don't add the new value to chat. Ask the user to paste it directly
into
.envor push it via the deployment platform's CLI.
Canonical commands
/fix --rotate-secret— guided rotation steps for the detected provider/fix --rotate-secret --auto— end-to-end (revoke + scrub + push replacement)/fix --rotate-secret --auto --scrub-history— also purge from git history/fix --vault— migrate to Doppler / Infisical / platform secrets