Actions REST API: listWorkflowRuns returns stale results (sometimes weeks old) on high-volume repos #206725
🏷️ Discussion TypeBug 💬 Feature/Topic AreaAPI BodyDescribe the bug
This reproduces both with and without the Steps to reproduce
Note: this seems to happen a LOT more frequently when run in GitHub actions, e.g. via github.rest.actions.listWorkflowRuns({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: workflowId,
head_sha: commitSha,
event,
});Actual behaviorObserved both of the following independently:
This occurred both with Expected behaviorThe endpoint should reflect the actual current state of workflow runs. ImpactThis endpoint is a documented, commonly recommended way to find "the last successful run on a branch" Additional context
|
Replies: 23 comments 15 replies
|
💬 Your Product Feedback Has Been Submitted 🎉 Thank you for taking the time to share your insights with us! Your feedback is invaluable as we build a better GitHub experience for all our users. Here's what you can expect moving forward ⏩
Where to look to see what's shipping 👀
What you can do in the meantime 💻
As a member of the GitHub community, your participation is essential. While we can't promise that every suggestion will be implemented, we want to emphasize that your feedback is instrumental in guiding our decisions and priorities. Thank you once again for your contribution to making GitHub even better! We're grateful for your ongoing support and collaboration in shaping the future of our platform. ⭐ |
|
Hi, The behavior you described does look more like an API-side consistency issue than a problem with the One thing I’d try as a diagnostic is to constrain the request with For production tooling, I’d also avoid assuming that the first item from a single broad query is always the definitive latest successful run. If an older run would be dangerous as a comparison base, validating the returned run before using it and retrying when the result is inconsistent would be a safer approach. Given that you have a reproducible example with full request/response logging and a large discrepancy in |
|
We've started encountering this problem as well starting yesterday and twice today. We've relied on this API returning accurate results for years without issue (preventing costly rebuilds and only rebuilding what changed since the previous successful job run). Yesterday (around 2026-09-01T23:59Z) instead of returning a |
This comment was marked as low quality.
This comment was marked as low quality.
|
We are experiencing the same issues since a few days: but every now and then it we get Note how the "latest" run is suddenly over a month ago instead of a few hours. We've notified GitHub Support. |
|
This seems to be related to stale/inconsistent results from the The same request can return different results, sometimes showing workflow runs from weeks ago, and even the Using github.rest.actions.listWorkflowRuns({
owner,
repo,
workflow_id,
head_sha: commitSha,
});However, querying every commit individually is not practical when trying to find the latest workflow run. Is there a recommended way to reliably get the latest workflow run without using |
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as low quality.
This comment was marked as low quality.
This comment was marked as off-topic.
This comment was marked as off-topic.
|
Hi, I am experiencing the same issue via the use of http://github.com/dawidd6/action-download-artifact which clearly assumes the returned workflows are returned the most recent runs first. The parameters of the action are:
Which leads to As one stated above, it seems to happen more frequently when queried from GitHub actions. When the API is invoked with |
|
We independently reproduced this with sequential requests using Node’s built-in HTTPS client, outside GitHub Actions and without CLI pagination or application caching. Identical first-page requests intermittently returned weeks-old history and substantially different |
Actions API returns an old successful-run page while a newer eligible run existsWe independently captured this during a production workflow on September 18, 2026. This corroborates http://github.com/orgs/community/discussions/206725. Request pattern: GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs The request filtered by branch, event=push, and status=success, with the default first page (30 results). We recorded the actual response consumed by the workflow, before candidate validation. At 2026-09-18 19:18:54 UTC, GitHub returned HTTP 200 and total_count=2344. All 30 returned runs were dated September 3–5; the first run was created September 5 at 07:49:48 UTC. An eligible push in the same workflow and branch had already completed successfully on September 18 at 19:09:46 UTC, but was absent. Its individual run record confirmed the matching workflow, branch, event, SHA and successful conclusion. Expected: the first page should contain the recent eligible run rather than omit it in favor of a result set almost two weeks old. Impact: our baseline selector rejected all 30 old candidates and fell back to the previous commit. That previous commit happened to have deployed successfully in this occurrence, so no missing delivery was established. The same fallback can be unsafe when the previous deployment failed. An older incident instead selected an old successful ancestor and widened the deployment range. The response itself establishes the missing recent result; it does not establish GitHub's internal caching or indexing cause. We have the response timestamp, x-github-request-id, candidate metadata and matching newer run details available for GitHub Support privately. Repository identifiers, run IDs and commit SHAs are intentionally omitted from this public summary. Please investigate consistency of the workflow-run listing endpoint and confirm whether this is a known incident. This is not a request to rerun production workloads. |
This comment was marked as off-topic.
This comment was marked as off-topic.
|
this happens every time with manual runs for me |
|
same here, we have to execute our jobs multiple times to get the right data |
|
Same here. The API has worked reliably for years, until now ! During a scheduled run, the API started returning weeks old run today instead of the newest one (with per_page 1), and breaking our workflows. |
|
5 page refreshes just now to get the latest data showing. ffs! |
|
This doesn't seem to be prioritized. It is a problem for us in our NX monorepo. Sometimes it decides to build and deploy all apps even though we just changed one |
|
Still happening as of today. Even in the UI, refreshing for the same workflow name search renders a different count every time |
|
Still happening as of October 6, 2026. This also impacts AL-Go for GitHub (Microsoft's CI/CD templates for Business Central), which uses Identical requests alternate between returning run_number 2002 (correct) and 1964 (weeks old) as the first Reported to AL-Go as microsoft/AL-Go#2394. A response from GitHub on whether this is a known incident |
|
Haven't noticed this happening today and yesterday. Anyone else? |
|
Hey y'all, sorry for being quiet on this one and thank you all for the engagement. As @cottsak highlights this should be pretty much eliminated now. We had some issues with over running throughput resulting in timeouts, which in turn resulted in these incomplete results. The net is that we have enough headroom and these timeouts as far as we can see have been driven effectively to zero now, but load keeps going up and we are still working on changes here so if you see a serious regression please feel free to keep adding in here or start a new issue and vote that up <3 |

Hey y'all, sorry for being quiet on this one and thank you all for the engagement.
As @cottsak highlights this should be pretty much eliminated now. We had some issues with over running throughput resulting in timeouts, which in turn resulted in these incomplete results.
We had been doing a bunch of work to scale up to get headroom around this, and had some other changes like https://github.blog/changelog/2026-09-25-changes-to-query-results-in-the-github-actions-api-and-ui/ which helps us with some other optimizations around elastic search.
The net is that we have enough headroom and these timeouts as far as we can see have been driven effectively to zero now, but load keeps going up and …