← Recipes

阅读中文版本

Standardize the On-Call Handoff

Run a 15-minute handoff that transfers open incidents, recent changes, and known risks with a written summary in the channel.

~15 minon-calloperationsincident-response

Task

Stop context loss between on-call rotations with a repeatable handoff checklist and a durable written record.

When to use this

On-call rotates every Monday morning. The outgoing engineer verbally mentions one incident, forgets a silenced alert and a scheduled migration, and the incoming engineer spends the first two hours reconstructing state from chat history.

Prerequisites

  • An incident tool such as PagerDuty or Opsgenie
  • A shared on-call channel
  • Access to deploy history and the change calendar

Steps

1. Generate a list of recent production changes from the repository instead of relying on memory.

gh pr list --state merged --limit 20 --json title,mergedAt,url --jq '.[] | "\(.mergedAt) \(.title) \(.url)"' > handoff-changes.txt

Expected output: A dated list of recently merged changes, including the pull request links, saved for the handoff.

2. Post a structured summary covering open incidents, changes, risks, and outstanding actions.

## On-call handoff 2026-10-21
- Open incidents: INC-1042 payments latency, monitoring only
- Recent changes: 3 deploys, one rollback of payments-api
- Silenced alerts: none
- Scheduled risk: migration 0042 at 10:00 UTC
- Action items: confirm DLQ replay finished, renew TLS cert check

Expected output: The channel has a single message that the incoming engineer can act on without asking follow-up questions.

3. Walk through the pager, silenced alerts, and maintenance windows together, then send a test page.

pd incident list --status triggered --since 2026-10-14

Expected output: The incoming engineer receives the test page and confirms the escalation policy points at the right rotation.

4. Both engineers acknowledge the handoff in the channel and link the summary in the rotation notes.

gh issue comment 512 --body 'Handoff 2026-10-21 acknowledged by incoming on-call'

Expected output: The rotation issue records acceptance and links to the handoff message for future reference.

Troubleshooting

Problem

The handoff is skipped during a busy week

Solution

Make it a recurring calendar event with a backup reviewer, and keep the written summary mandatory even if the live call is shortened.

Problem

An incident is missing from the summary

Solution

Build the list from the incident tool, not from memory, and reconcile against pages from the past week.

Limitations

  • A live handoff needs overlap time between rotations; without it, only the written summary survives.
  • Tool exports can lag; confirm any incident opened in the last hour manually.

Handoff is a state transfer

The incoming engineer needs four things: what is broken, what changed, what is risky in the next seven days, and what is unfinished. Memory is a bad medium for all four. A written summary in the channel gives the next person a starting point and gives the team a searchable record when the same problem returns.

Gather before the call

Pull the incident list from the incident tool and the change list from the repository. Check silenced alerts and maintenance windows; these are the most commonly forgotten items because they produce no active signal. Compare the pager rotation with the schedule and send a test page. Fifteen minutes of preparation makes the live call short.

gh pr list --state merged --limit 20 \
  --json title,mergedAt,url \
  --jq '.[] | "\(.mergedAt) \(.title) \(.url)"'

Write the summary

Use a fixed template: open incidents with status, recent changes, silenced alerts, scheduled risks, and action items with owners. Post it before or during the call, not after. Keep it factual and short; link to dashboards and tickets instead of copying details that will go stale.

Close the loop

Both engineers acknowledge in the channel. Link the summary from the rotation issue and mention anything that needs follow-up at the next team meeting. Review a recent handoff monthly and fix the template if a section is always empty or always missing a key fact. Verify a successful handoff when the incoming engineer can explain every open incident, silenced alert, and scheduled risk without opening a search tab.