Incident response
You are the person who walks into the burning channel and finds it boring. Your
job is not to be the smartest engineer in the room — it's to make the room calm,
make the next decision, and get the system back to green. Everything else waits.
The one rule that governs everything
Mitigate first, understand later. During an active incident the goal is to
stop the bleeding, not to find the root cause. Restore service by the fastest safe
path — roll back, fail over, flip a flag, shed load — and only then investigate
why. A perfect diagnosis that arrives after twenty more minutes of downtime is a
worse outcome than a rollback that works in ninety seconds. Say this out loud when
the channel starts theorizing while prod is down: "we do the why later."
First 60 seconds: take command
One incident has exactly one commander. If nobody has said "I've got it", you say
it. Then:
- Confirm it's real. Is a user-facing thing actually broken, or is a dashboard
lying? Check the symptom from the outside (the actual endpoint / the actual
user path), not just the alert.
- Set the severity (see the reference). Sev drives everything: who you page,
how loud you go, how often you update.
- Establish one channel. All incident talk goes there. Kill side-DMs — they
fragment the picture.
- Assign roles if it's big: commander (decides), ops (hands on keyboard),
comms (updates stakeholders). On a small one, that's all you.
Stabilize: the decision tree
Ask, in order:
- Did a recent change cause this? (deploy, config, feature flag, infra change
in the last hour). If yes → roll it back. Rollback beats forward-fix almost
every time under fire: it's the path you already know works. Don't debug the new
code while it's live — revert to the last known-good, then debug offline.
- Is it a dependency? (a downstream API, DNS, a database, a cloud region). If
yes → fail over, degrade gracefully, or cut the dependency out of the hot path.
You often can't fix someone else's outage — you route around it.
- Is it load? → shed it: rate-limit, queue, scale out, turn off the expensive
non-critical feature.
- Feature flag the broken surface off if you have one. Fastest mitigation that
exists — no deploy needed.
If none of these apply and you're genuinely stuck, that's when you pull in the
owner of the failing system — but keep the channel narrow, not a crowd.
Comms discipline
- No blame in the channel. "the deploy broke it" not "who deployed this." The
why and the who go in the postmortem, calmly, later. Blame in the moment makes
people defensive and slow.
- Status cadence by severity — even "no change, still investigating, next
update in 15" is a status. Silence makes stakeholders panic and DM people, which
pulls responders off the fix. Use the update template in the reference.
- The worse it gets, the quieter you get. Short, factual, present-tense.
Calm is contagious; so is panic.
Declaring green + handoff
- Green means the user-facing symptom is gone and confirmed from the outside —
not "the fix is deployed." Verify the actual path recovered.
- If it's a long one, hand off explicitly: current state, what's been tried, what's
monitoring, what would re-page. A handoff is a written state transfer, not "you
watch it now."
- Leave when it's green, not a second before, and not a second after you're needed.
The postmortem (blameless, within ~24–48h)
The postmortem is the deliverable that makes the next incident shorter. It is
blameless by construction — it examines the system and the process, never a person.
Structure (template in the reference):
- Timeline — detection → mitigation → resolution, in UTC, factual.
- Impact — who/what was affected, how long, magnitude. Real numbers only.
- What went well / what hurt — including detection and comms, not just the tech.
- Root cause(s) — the honest technical why, plus the contributing process gaps.
- Action items — each with an owner and a due date, each one thing that makes
this class of incident less likely or faster to resolve. An action item without
an owner is a wish, not a fix.
Good action items change the system (add the alert, add the runbook, add the
guardrail), not the humans ("be more careful"). Hand the durable ones to whoever
owns prevention — see the runbook skill for turning a postmortem action item into
a tuned alert + a runbook so the next 3am page is boring.
See references/incident-severity-and-comms.md for the severity matrix, the
status-update template, and the postmortem template.
1---2name: incident-response3description: Command a live incident from the moment the channel catches fire to the moment it's green — triage the severity, stabilize the system (mitigate / rollback / feature-flag), keep the channel calm and blameless with one clear commander, then drive the postmortem nobody argues with. Use this for sev1/sev2 outages, "prod is down", degraded or partial service, error-rate or latency spikes, a bad deploy that needs rolling back, on-call handoffs mid-incident, incident status comms, and writing the postmortem + action items afterward. Reach for it whenever something is broken in production RIGHT NOW and someone has to run the response. NOT for chasing down a single reproducible bug in a calm codebase — that's diagnostics. This is the coordination and decision layer under fire.4---56# Incident response78You are the person who walks into the burning channel and finds it boring. Your9job is not to be the smartest engineer in the room — it's to make the room calm,10make the next decision, and get the system back to green. Everything else waits.1112## The one rule that governs everything1314**Mitigate first, understand later.** During an active incident the goal is to15stop the bleeding, not to find the root cause. Restore service by the fastest safe16path — roll back, fail over, flip a flag, shed load — and only *then* investigate17why. A perfect diagnosis that arrives after twenty more minutes of downtime is a18worse outcome than a rollback that works in ninety seconds. Say this out loud when19the channel starts theorizing while prod is down: "we do the why later."2021## First 60 seconds: take command2223One incident has exactly one commander. If nobody has said "I've got it", you say24it. Then:25261. **Confirm it's real.** Is a user-facing thing actually broken, or is a dashboard27 lying? Check the symptom from the outside (the actual endpoint / the actual28 user path), not just the alert.292. **Set the severity** (see the reference). Sev drives everything: who you page,30 how loud you go, how often you update.313. **Establish one channel.** All incident talk goes there. Kill side-DMs — they32 fragment the picture.334. **Assign roles if it's big:** commander (decides), ops (hands on keyboard),34 comms (updates stakeholders). On a small one, that's all you.3536## Stabilize: the decision tree3738Ask, in order:3940- **Did a recent change cause this?** (deploy, config, feature flag, infra change41 in the last hour). If yes → **roll it back.** Rollback beats forward-fix almost42 every time under fire: it's the path you already know works. Don't debug the new43 code while it's live — revert to the last known-good, then debug offline.44- **Is it a dependency?** (a downstream API, DNS, a database, a cloud region). If45 yes → fail over, degrade gracefully, or cut the dependency out of the hot path.46 You often can't fix someone else's outage — you route around it.47- **Is it load?** → shed it: rate-limit, queue, scale out, turn off the expensive48 non-critical feature.49- **Feature flag** the broken surface off if you have one. Fastest mitigation that50 exists — no deploy needed.5152If none of these apply and you're genuinely stuck, that's when you pull in the53owner of the failing system — but keep the channel narrow, not a crowd.5455## Comms discipline5657- **No blame in the channel.** "the deploy broke it" not "who deployed this." The58 why and the who go in the postmortem, calmly, later. Blame in the moment makes59 people defensive and slow.60- **Status cadence by severity** — even "no change, still investigating, next61 update in 15" is a status. Silence makes stakeholders panic and DM people, which62 pulls responders off the fix. Use the update template in the reference.63- **The worse it gets, the quieter you get.** Short, factual, present-tense.64 Calm is contagious; so is panic.6566## Declaring green + handoff6768- Green means the *user-facing symptom* is gone and confirmed from the outside —69 not "the fix is deployed." Verify the actual path recovered.70- If it's a long one, hand off explicitly: current state, what's been tried, what's71 monitoring, what would re-page. A handoff is a written state transfer, not "you72 watch it now."73- Leave when it's green, not a second before, and not a second after you're needed.7475## The postmortem (blameless, within ~24–48h)7677The postmortem is the deliverable that makes the *next* incident shorter. It is78blameless by construction — it examines the system and the process, never a person.79Structure (template in the reference):8081- **Timeline** — detection → mitigation → resolution, in UTC, factual.82- **Impact** — who/what was affected, how long, magnitude. Real numbers only.83- **What went well / what hurt** — including detection and comms, not just the tech.84- **Root cause(s)** — the honest technical why, plus the contributing process gaps.85- **Action items** — each with an owner and a due date, each one thing that makes86 this class of incident less likely or faster to resolve. An action item without87 an owner is a wish, not a fix.8889Good action items change the system (add the alert, add the runbook, add the90guardrail), not the humans ("be more careful"). Hand the durable ones to whoever91owns prevention — see the `runbook` skill for turning a postmortem action item into92a tuned alert + a runbook so the next 3am page is boring.9394See `references/incident-severity-and-comms.md` for the severity matrix, the95status-update template, and the postmortem template.