GitHub Merge Queue Stale Review Dismissal: Fix Rollback PRs That Lose Approval (2026)

Published February 16, 2026 · 11 min read

Your rollback PR gets approved, enters merge queue, then suddenly requires review again. After re-approval, the same loop repeats. This is a classic stale review dismissal failure mode that can block incident rollback even when tests are healthy.

This guide is a practical incident runbook for teams using GitHub merge queue: identify stale-approval drift quickly, apply safe temporary controls, and restore normal policy after rollback is landed.

⚙ Quick links: Required Check Name Mismatch Guide · Timeout/Cancelled Checks Guide · Flaky Required Checks Guide · Checks Keep Restarting Guide · Emergency Bypass Governance Guide · GitHub Actions CI/CD Guide · Git Commands Cheat Sheet

Table of contents

  1. How to confirm stale-review dismissal quickly
  2. Root causes in merge queue environments
  3. 8-minute triage workflow
  4. Safe mitigation patterns during incidents
  5. Policy templates and review guardrails
  6. Post-incident hardening
  7. FAQ

1. How to confirm stale-review dismissal quickly

Observed signal Likely meaning Immediate action
PR was approved, then "changes requested/approval required" appears without new product code changes Stale review dismissal triggered by queue/context updates Check branch protection setting for dismiss stale approvals and queue update timeline.
Approval disappears after queue rebase/reorder event Queue metadata updates are treated as stale-triggering changes Correlate approval loss timestamp with merge queue requeue events.
Rollback PR keeps cycling between approved and review-required Policy loop: queue updates + stale-review enforcement Apply incident-time temporary approval profile with expiry.
Only CODEOWNERS approvals are removed repeatedly Review policy overlap between code owners and stale dismissal Separate rollback approval path from routine feature path.
Important: repeated re-approval loops are operationally expensive and increase incident MTTR. Treat them as a policy incident, not a reviewer performance issue.

2. Root causes in merge queue environments

In protected branches, three mechanisms often combine into one failure loop:

  1. Dismiss stale pull request approvals is enabled globally.
  2. Merge queue updates introduce context changes while rollback PR is waiting.
  3. Strict approval gate requires fresh approval for every update-like change.

Even if your rollback diff is unchanged, queue orchestration can still invalidate prior approvals depending on your repository rule set.

3. 8-minute triage workflow

  1. Open the rollback PR timeline and record exact timestamps when approval was dismissed.
  2. Open repository branch protection/ruleset and confirm stale-review setting state.
  3. Check merge queue events around the same timestamps (requeue, merge-group refresh, priority reorder).
  4. Verify no new functional commits were pushed to rollback branch during that window.
  5. If no functional diff changed, classify incident as policy-induced approval drift.
  6. Escalate to incident commander and choose a bounded mitigation (next section).
# Useful CLI checkpoints during incident triage
# 1) Confirm no functional commit drift in rollback branch
git fetch origin
git log --oneline --decorate origin/main..origin/rollback-branch

# 2) Inspect approval-relevant metadata changes quickly
gh pr view <PR_NUMBER> --json reviews,latestReviews,updatedAt,mergeStateStatus

# 3) Snapshot branch protection settings for audit
gh api repos/<owner>/<repo>/branches/main/protection > protection-snapshot.json
Fast decision rule: if rollback diff is unchanged and approvals are repeatedly dismissed after queue churn, stop asking for repeated manual approvals and switch to an incident-time policy path with explicit expiry.

4. Safe mitigation patterns during incidents

Mitigation When to use Risk Control
Re-approve once with queue freeze window Low queue churn, single rollback PR Low Temporarily pause unrelated queue traffic.
Temporary rollback review policy Repeated stale dismissal loop Medium Dual approval + explicit expiry + post-incident restore.
Emergency bypass with governance Active prod impact and SLA breach risk High Use bypass governance checklist.
Avoid: permanently disabling stale-review protections during an incident. Always set a restore owner and expiry timestamp before landing rollback.

5. Policy templates and review guardrails

Use two policy profiles instead of one:

# Incident note template (paste into PR + incident timeline)
Incident rollback policy activated
- PR: #<number>
- Reason: approval dismissed repeatedly due to merge queue stale-review loop
- Approved by: incident commander + service owner
- Effective until: 2026-02-16T23:59:00Z
- Compensating controls: green required checks, smoke tests, staged validation
- Restoration owner: @oncall-platform

6. Post-incident hardening

FAQ

Why does GitHub ask for review again when no one pushed new rollback commits?

In merge queue setups, orchestration updates can combine with stale-review rules and invalidate prior approvals even when rollback code did not change.

Is it safe to disable stale reviews permanently?

No. Keep strict defaults for routine development. Use a temporary incident profile for rollback only, then restore baseline rules immediately.

Can CODEOWNERS make stale approval loops worse?

Yes. If code owner review is mandatory and stale dismissal is strict, queue churn can repeatedly remove required approvals. Define a documented incident exception path.

Should we bypass merge queue instead?

Only when production impact and SLA risk justify it. If bypass is required, apply dual-control governance and time-bounded restoration tasks.

What should we monitor after fixing this once?

Track frequency of review dismissal during rollback incidents, time-to-land rollback PRs, and whether temporary policy windows are restored on time.

Related Resources

Related Resources

Required Check Name Mismatch Guide
Fix waiting-for-status rollback deadlocks by aligning required-check context names.
Checks Timed Out or Cancelled Guide
Triage timeout and cancellation loops in required checks during incidents.
Flaky Required Checks Guide
Reduce intermittent failures that stretch rollback recovery windows.
Emergency Bypass Governance Guide
Use dual-control approvals, expiries, and audit notes for incident bypass decisions.
GitHub Actions CI/CD Guide
Workflow patterns for reliable checks across pull_request and merge_group events.
Git Commands Cheat Sheet
Quick reference for rollback, revert, and incident-safe Git operations.