← Blog

October 10, 2026 · Steve Johnson

Incident Runbooks That Engineers Actually Use During an Outage

A P1 fires at 3 AM. The on-call engineer is already toggling between an alerting tool, a monitoring dashboard, and three Slack threads trying to reconstruct what changed in the last hour. Somewhere in a wiki, a runbook exists for this exact scenario, and it will not get opened, or it will get opened and abandoned within thirty seconds. Ask engineers why, and the answers cluster into three: they could not find it, they did not trust it was still current, or they could not tell from a quick scan whether it matched their specific situation. Every one of those is a failure of the runbook, not a failure of the engineer. Under real P1 pressure, even experienced engineers start skipping verification steps and making assumptions that would never survive a code review, and a poorly structured runbook does not interrupt that drift. It accelerates it.

The encyclopedic runbook antipattern

Part of the failure traces back to a single word doing three jobs. The incident playbook is what the term means in an SRE context, and it's the only one of the three that belongs linked from an alert. A forty-page architecture reference is not useful to someone with five minutes and a production incident. A focused, three-step incident playbook is.

The encyclopedic runbook answers a different question than the one an engineer asks during an incident. Those two questions share almost no overlap in their answers, and a document built to answer the first is structurally unable to answer the second quickly. That failure compounds with how people actually read under stress: engineers at 3 AM don't read, they skim, scanning for the one fragment that applies to their situation and ignoring the rest. A runbook that demands linear reading forces a choice between skimming past something important or spending five minutes reading before taking any action at all, and five minutes is often the entire budget.

The cost of getting this wrong appears in a Redis case where the gap between three hours and eight minutes had nothing to do with skill or seniority.

What a runbook that gets used looks like

The fix starts with scope. Writing should run in second-person imperative: "Run the query," not "the engineer should run the query." The person reading it is busy, so the document should talk to them directly.

The single highest-leverage habit is stating expected output literally. A step that says "run redis-cli LLEN search:index:queue; expect a number under 5,000; if higher, proceed to step 3" removes that interpretive burden entirely. Wherever a runbook has more than a couple of decision points, those branches belong in an explicit decision tree rather than buried in nested paragraphs, because humans process branching structure far faster than prose when they're under pressure.

A runbook entry built to hold up during an actual incident needs eight components, drawn from structured runbook template practice across the industry. It needs a unique task ID linked to the ticketing system, so the incident has a paper trail. It needs a one-sentence description of what it addresses, so an engineer can confirm relevance before reading further. It needs verification steps that confirm the fix worked. It needs an escalation path stated with a specific time threshold and a named destination, such as paging the platform team via a named schedule if the runbook hasn't resolved the alert in fifteen minutes, instead of the useless instruction to "escalate if you can't fix it." And it needs a documented rollback procedure for every remediation action, because an undo path matters as much as the original fix.

The escalation path deserves particular weight among those eight, because leaving the decision of when to escalate to an exhausted engineer at 3 AM puts the call in the hands of the person least equipped to make it well. None of this requires building a complete library before any of it becomes useful. The practical starting point is the five most common incidents from the past quarter, written through manually and then refined as real incidents test them against reality.

Discoverability: why the link is a load-bearing structural element

A runbook's value is capped by how fast the right person can find it during an actual incident, and a well-written runbook buried three clicks deep in a wiki nobody navigates under pressure functions, operationally, the same as no runbook at all. The fix is to remove that recall requirement entirely by embedding the runbook URL directly in the alert annotation itself. The Prometheus runbook_url field is the standard pattern for this: the engineer who receives the page receives the link to the fix at the same moment, with no search required.

Accessibility can't be treated as an afterthought when response time is the thing being optimized. Redundancy matters just as much as the link itself: if PagerDuty or the incident platform goes down in the middle of an incident, which happens, the runbook needs a second path to reach it, whether that's a Git repository, a static documentation site, or a runbook-in-Slack pattern that doesn't depend on the tool that just failed.

Indexing by symptom rather than by system component is the organizing principle that makes all of this findable under pressure.

Runbook rot

A runbook that was accurate the day it was written starts drifting the moment the underlying system changes, and a single outdated command is enough to destroy trust in an entire library, since an engineer who gets burned once stops trusting the whole collection rather than just the one stale entry.

A related failure mode appears when two runbooks cover the same scenario with different steps. The engineer hesitates mid-incident trying to decide which one to trust, and hesitation is the one thing a runbook exists to eliminate. Each procedure needs one clear, definitive source, with the incident management platform serving as the single home for approved, current versions.

The objection that runbook maintenance is low priority next to shipping product features is a reasonable one on a fast-moving team, but it misreads where the cost actually falls. Waiting six months for a scheduled review sprint means relearning that same context from scratch. A practical freshness metric helps keep this honest: flag any runbook not reviewed within 90 days, and treat anything untouched for six months as grounds for a mandatory review sprint. Teams running infrastructure as code have an even tighter option available, storing runbooks adjacent to the Terraform or Ansible code that defines the system, so that when the infrastructure changes, the runbook update rides in the same pull request rather than drifting away from the system it describes.

How runbooks encode senior knowledge and reduce on-call burnout

Without encoded runbooks, incident response quietly depends on hero culture: the one senior engineer who knows the system being awake, reachable, and willing to pick up the phone. The way out is for senior engineers to author structured recovery workflows during stable periods, turning tacit knowledge they'd otherwise carry in their heads into executable logic that any on-call engineer can follow, regardless of seniority or tenure.

That matters most for junior engineers and anyone recently onboarded into a complex system. A structured, current runbook turns confusion into coordinated action, cuts MTTA and MTTR, and lowers overall operational risk, giving a new on-call engineer a path to safe action that doesn't require calling someone at 2 AM for guidance. The burnout connection runs in a straight line: high after-hours page frequency correlates with turnover, and an engineer who resolves a P1 in eight minutes using a runbook has a fundamentally different relationship with on-call than one who spends three hours investigating from first principles every time.

There's also an organizational stake: the runbook functions simultaneously as an operational tool and an audit artifact, but the stronger argument for building it is the one about who's awake at 3 AM, not the one about compliance paperwork.

Runbooks in high-complexity contexts: large-scale migrations and infrastructure scaling

The standard "service goes down, engineer fixes it" incident is the easiest case for this argument. Migrations and large-scale infrastructure scaling are where the absence of runbooks stops costing minutes and starts costing entire programs. At the lowest level of operational readiness, organizations preparing for a large-scale migration typically show the same three symptoms: incomplete inventory data, limited test coverage, and few repeatable migration runbooks. A migration that spans discovery, pilots, execution, and hypercare across many months cannot run on tribal knowledge held by whoever happened to write the original plan, because the engineers executing wave twelve are rarely the same people who executed wave one. Runbooks are what let a rotating team maintain consistent execution across that entire window.

The same principle scales to infrastructure operations more broadly. The structural fix is identical in both cases: scope the procedure narrowly, make every step specific, and make the result discoverable by the person who needs it next.

Where agents change the runbook model

Diagram: Three-Tier Agent Autonomy Model. Visualizes: Visualize a three-tier escalation ladder for AI agent actions during incident response.

The clearest trend in incident management tooling right now is agents executing runbooks directly rather than merely surfacing them for a human to follow. That shift multiplies the stakes of every structural decision already described, because teams that deployed AI agents without applying the same rigor they'd demand of a human on-call saw operational toil increase. The agent could reason reasonably well about logs, but it had no defined escalation path and no constraint on blast radius, so it acted with more confidence than its judgment warranted.

The infrastructure making agent-driven execution operationally real, rather than experimental, is already in production. The PagerDuty remote MCP server reached general availability on October 8, 2025, connecting PagerDuty to third-party AI agents with support for incidents, services, schedules, and event orchestrations, with related-incidents support added in a subsequent October 2025 update. The Datadog MCP Server has also reached general availability as the standard way for agents to query Datadog's monitoring platform, and paired with the AWS DevOps Agent, that combination can correlate monitoring data with infrastructure state autonomously to resolve incidents in minutes.

Designing a runbook for an agent to execute differs from designing one for a human in one specific, structurally important way: every step has to declare what data it consumes and what it produces. Structured input and output turn each step into something closer to a typed function than an open-ended prompt, which cuts hallucination risk substantially and makes the agent's behavior auditable after the fact. That discipline, defining capability-scoped tool access and treating every MCP integration as a formal contract between systems rather than an informal API call, is the same discipline that underlies production MCP server design more broadly, where authentication, scoping, and structured responses over a standard remote-procedure-call protocol aren't optional conveniences but the entire security model.

Autonomy itself needs to be assigned per action, not per agent. A three-tier model works well in practice: a log query runs automatically with no approval needed, a pod restart requires notification to a human, and a database failover requires explicit human sign-off before it executes. Trend Micro's July 2025 report found 492 MCP servers exposed to the internet with no authentication at all, and the vulnerability sits precisely in the trust boundary between systems. Generative tools used against live incident records, queries against live incidents and against monitoring telemetry among them, operate as generation rather than retrieval, and carry the same hallucination risk as any other LLM call. None of this argues that agents are close to replacing the on-call engineer. It argues that every structural decision covered earlier in this piece, scope, specificity, discoverability, ownership, becomes a prerequisite rather than a best practice the moment a runbook is handed to something that can act on it without asking first.

Runbooks as a deliverable of embedded technical leadership

A codebase without working runbooks depends on specific people being reachable, and that dependency is the kind of risk technical due diligence for a fundraise or an acquisition surfaces. A good fractional CTO or embedded technical leader treats runbooks as one of the clearest tests of whether a handoff actually worked: documenting architectural decisions, building runbooks for common operations, and establishing real working relationships between the team and whoever takes over full-time. Runbooks are the evidence that operational knowledge moved from one person's head into a form the next team can use.

Runbook-backed operational maturity needs to exist before infrastructure scales, not after, because scaling without it multiplies the number of incidents an undocumented system produces. The Aesthetic Record case, where fractional technical leadership helped scale the platform to more than 4,000 US clinics, illustrates that the infrastructure and team decisions have to come first. SOC 2 and ISO 27001 auditors ask directly for documented, testable incident response processes, and a library of version-controlled, owner-assigned runbooks linked straight from alerts is the clearest answer a team can give. A team that can't produce that library during due diligence signals operational immaturity no matter how clean the underlying code is.

None of this requires a large team or a dedicated SRE function to get right. It requires the same discipline that makes any engineering artifact worth keeping: one owner, one scope, one clear trigger, tested against what actually happens during an incident, and updated every time a real incident touches it.