Skip to main content
skill CX Codex

secrets-rotation — Claude Code skill: what it does, how to install

Turns exposed tokens, passwords, or keys into an urgent tracked task to revoke and reissue them. Runs when credentials leak into chat, logs, or commits.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add avelikiy/great_cto --skill secrets-rotation -a claude-code
Open on GitHub

What secrets-rotation does

Rewriting git history cannot fix an exposure. Transcripts and remote backups already stored the value. The skill treats any exposed secret as spent. It strictly forbids repeating the plain secret in prompt replies, commit notes, or ticket titles.

The workflow logs a bug task with priority 0 or 1, using Beads via bd create. It names only the secret category and location. The agent handles the change directly or writes exact console steps for the operator. That failure provides the required proof: a call with the retired credential must return a 401 or 403 error.

The skill relies on Read, Bash, and Grep. Saving the replacement key into CLAUDE.md will leak it right back into the model context.

What it helps with

  • turn an exposed secret into a tracked revocation task
  • log credential leaks without repeating the secret value
  • verify token retirement through 401 or 403 provider responses
  • escalate open secret rotation tasks older than 48 hours

Example prompts for the agent

  • I accidentally pasted an API key into our chat, rotate it
  • Gitleaks flagged a credential in the latest commit, handle the rotation
  • The operator committed a .env file with secrets, start the incident steps

How to install secrets-rotation

1Skills CLI (Vercel)

npx skills add avelikiy/great_cto --skill secrets-rotation -a claude-code

2Manually: put the files in place

~/.claude/skills/secrets-rotation/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/secrets-rotation/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about secrets-rotation

How to install secrets-rotation in Claude Code?

Run npx skills add avelikiy/great_cto --skill secrets-rotation -a claude-code. The file will be placed at ~/.claude/skills/secrets-rotation/SKILL.md.

What does the secrets-rotation skill do?

It directs the AI agent when a password, key, or token leaks. Instead of repeating reminders across sessions, it creates a priority bug ticket, forces key revocation, and demands evidence that the old credential is fully rejected.

When is a secret rotation task considered finished?

A rotation is complete only after direct verification. The new token must sit in the secret store, all consumers must be updated, and a request using the old credential must return an HTTP 401 or 403.

Source text

SKILL.md · MIT
---
name: secrets-rotation
description: What to do the moment a secret is exposed — pasted into chat, committed, logged, shown in a transcript or a screenshot. The secret is compromised; only revoking and rotating it helps. Turns it into one tracked task with an escalation, not a reminder repeated every session. Use when you see a key, token, password or private key anywhere it should not be ("ключ в чате", "токен в логах", "закоммитил .env"). Loaded by security-officer, l3-support, devops.
when_to_use: |
  Apply when:
  - a key, token, password or private key appears in a message, a commit, a log, a transcript, a screenshot or a context file
  - the operator pastes a credential into the conversation
  - a secret scanner (scripts/hooks/secret-scan.mjs, gitleaks) reports a finding
  - a session log carries "rotate the X key" forward from an earlier session
  Do NOT apply to:
  - test fixtures that are assembled at runtime and match no live account
effort: low
allowed-tools: Read, Bash, Grep
---

# secrets-rotation — an exposed secret is spent

Deleting the message, rewriting git history or redacting the log does not un-expose a
secret: the transcript, the remote, the backup and the provider's own logs already hold
it. The only fix is to make the exposed value worthless — **revoke it and issue a new one**.

What went wrong on real projects is not ignorance of that. It is that the rotation was
**remembered instead of tracked**: "rotate the exchange API keys" was carried forward
through seven session logs; "keys that passed through chat" appeared in seven summaries
of another project; a monitoring token pasted in plain text was never rotated. Each
session wrote the reminder again and nobody owned it.

## The moment you see one

1. **Never repeat the value.** Not in your answer, not in a task title, not in a log, not
   in a commit message. Name its **kind** and **where it is**: "OpenRouter API key, in the
   operator's message of 22.09, 14:10". `scripts/lib/secret-patterns.mjs` names the kind.
2. **Say it plainly, first line:** this key is compromised; revoking it is the only fix.
3. **Open one task, not a note** — in Beads if the project has it:

   ```bash
   bd create "Rotate <kind> exposed in <where> on <date>" -t bug -p 0 \
     -d "Exposed: <where>. Revoke at <provider console>, issue new, store in <secret store>, redeploy <consumers>, prove the old one is rejected."
   ```

   Priority 0 for a production credential or anything that moves money; 1 otherwise.
4. **If you can rotate it, rotate it** — the operator asked you to handle it, or your
   task covers that system. If it needs the operator (a provider console you cannot
   reach, a hardware token), the task's first line says exactly what they must click.

## Done means the old value is refused

A rotation is closed with evidence, not with "rotated":

- the new value is in the secret store the code reads — never in `CLAUDE.md`,
  `preferences.md`, memory files, a README or any file that is loaded into a model's
  context (one key in a preferences file reached 605 transcripts);
- every consumer was redeployed and uses it (`deploy-landed`, config check);
- **a call with the old value fails** — 401/403 from the provider. That is the proof.

## Carrying it forward

An open rotation task older than 48 hours goes to the top of the next session's report
and of `/inbox`, with its age. Do not re-list it in the session log as a fresh item —
link the task. Re-writing a reminder is how the seven-session carry-over happened.

© avelikiy · MIT · avelikiy/great_cto

Similar skills

All skills for Security →

From the same set34

test-strategy A skill for QA engineers that turns "90% coverage" into a defensible plan: what to test, why that set, and a signal that the tests actually catch bugs. CX Codex +1 ★ 107repo stars stack-baseline Pins a standard tech stack for new product builds so AI agents never improvise frameworks, databases, or auth libraries. CX Codex +1 ★ 107repo stars skeptical-triage This skill challenges disputed code review, security, and QA findings across three rounds before an arbiter decides the outcome. It helps prevent weak findings from blocking a release. CX Codex +1 ★ 107repo stars signing-preflight Checks before the first commit that the signing key is loaded and unlocked, and asks the operator to unlock it up front. CX Codex +1 ★ 107repo stars quant-validation This skill lays out checks for financial-ML backtests, features, and labels. Use it to assess whether a reported result survives common validation pitfalls. CX Codex +1 ★ 107repo stars prose-style A writing contract for agent output: conclusion first, evidence over adjectives. Useful when a person reads the report, not a parser. CX Codex +1 ★ 107repo stars product-economics Evaluates unit economics, variable LLM costs, and bottom-up market size before building. Flags every number as measured or assumed. CX Codex +1 ★ 107repo stars pre-mortem This skill works backward from a failed project to find specific causes and add safeguards to the plan. Run it before building high-impact or hard-to-reverse changes. CX Codex +1 ★ 107repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor