cd /news/developer-tools/finding-which-prs-have-been-taken-ou… · home topics developer-tools article
[ARTICLE · art-92151] src=jvt.me ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Finding which PRs have been taken out of the Merge Queue due to failed status checks

Renovate maintainers can now identify pull requests removed from GitHub's Merge Queue due to failed status checks using a GraphQL query, as demonstrated in a blog post. The query, run via `gh api graphql`, searches for open, approved PRs in the renovatebot/renovate repository and checks for `REMOVED_FROM_MERGE_QUEUE_EVENT` timeline items. In the example output, PR 45223 was flagged as removed due to 'failed_checks' on 2026-08-11, while PRs 45225 and 44971 remained in the queue.

read1 min views1 publishedAug 11, 2026

In the Renovate project, we use the Merge Queue to merge PRs. If a PR fails its status checks, it will be pulled out of the Merge Queue, and a maintainer will need to re-queue it, if it is a transient error.

For those of you unaware, GitHub are having a pretty hard time recently with outages, which means that we're seeing an increase in the number of PRs being pulled out of the Merge Queue due to transient errors due to GitHub's instability (and in rare cases, due to flakiness in our test suite).

For a number of these PRs, they're dependency updates that Renovate raises (:yo_dawg:) which means that a maintainer doesn't necessarily see they're unmerged.

If we want to find out which PRs are approved, but not merged due to the merge queue un-queuing them, we can use the following GraphQL query:

$ gh api graphql -f query='query {
 search(query: "repo:renovatebot/renovate is:pr is:open review:approved", type: ISSUE, first: 50) {
 nodes {
 ... on PullRequest {
 number
 title
 reviewDecision
 timelineItems(itemTypes: [REMOVED_FROM_MERGE_QUEUE_EVENT], first: 5) {
 nodes {
 ... on RemovedFromMergeQueueEvent {
 createdAt
 reason
 }
 }
 }
 }
 }
 }
}'
{
 "data": {
 "search": {
 "nodes": [
 {
 "number": 45225,
 "reviewDecision": "APPROVED",
 "timelineItems": {
 "nodes": []
 },
 "title": "chore(deps): update dependency @biomejs/biome to v2.5.7 (main)"
 },
 {
 "number": 45223,
 "reviewDecision": "APPROVED",
 "timelineItems": {
 "nodes": [
 {
 "createdAt": "2026-08-11T13:26:04Z",
 "reason": "failed_checks"
 }
 ]
 },
 "title": "fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.2 (main)"
 },
 {
 "number": 44971,
 "reviewDecision": "APPROVED",
 "timelineItems": {
 "nodes": []
 },
 "title": "fix(manager/mix): run mix commands from the lock file's directory"
 }
 ]
 }
 }
}

In this case, we can see that PR 45223 was taken off the Merge Queue and needs to be merged.

── more in #developer-tools 4 stories · sorted by recency
── more on @renovate 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/finding-which-prs-ha…] indexed:0 read:1min 2026-08-11 ·