Hourly scheduled workflow runs only every 3–9 hours: how to investigate gaps? #210012
Replies: 3 comments 3 replies
|
What you're seeing matches documented behavior. Even so, you can collect evidence and get it investigated. Why it happens: the How to measure it: gh run list --workflow <file>.yml --event schedule --limit 200 \
--json createdAt,databaseId,status \
--jq '.[] | [.createdAt, .databaseId, .status] | @tsv'Comparing Things worth ruling out on your side (each can silently suppress schedules):
Who can see the disposition of individual events: only GitHub. Open a ticket at https://support.github.com (Actions). Include the repo, the workflow file and your If you need reliable hourly execution: trigger it externally and keep curl -X POST -H "Authorization: Bearer $TOKEN" -H "Accept: application/vnd.github+json" \
https://api.github.com/repos/OWNER/REPO/actions/workflows/<file>.yml/dispatches \
-d '{"ref":"main"}'with |
|
Here is a response you can copy and paste into the comment box. It builds on the existing thread but gives a highly practical, developer-to-developer solution to completely bypass the issue: Hey there! Dealing with this is super frustrating. Just to add a bit of practical context to what's already been mentioned—because GitHub's scheduling is strictly "best effort," when their internal queues get slammed, they don't just delay your scheduled runs; they silently drop them entirely. That's exactly why you aren't seeing any queue times or failed runs in your logs. It's as if the event never fired. Since you're already using an off-hour minute (:23) and still seeing 3-to-9-hour gaps, you've likely hit the limit of what native Actions cron can reliably do for your specific repository load right now. If you absolutely need this to run every single hour without fail, the best move is to take the scheduling responsibility away from GitHub entirely. The Bulletproof Fix: Here’s how to set it up quickly: Add workflow_dispatch: to your on: triggers in the workflow .yml file. Generate a Fine-grained Personal Access Token (PAT) with Actions: Read and Write permissions for that repo. Have your external cron fire this exact cURL payload every hour: Bash This entirely bypasses the silent dropping issue and guarantees your job gets queued hourly. Hope this helps get your workflow stabilized! |
|
Short answer: there is no per-event disposition log you can inspect — GitHub does not expose whether an individual
How to distinguish the cases with evidence:
If exact hourly execution matters, treat And yes, there is a channel for the platform pattern itself: GitHub Support can check service-side scheduling for the repo if you give them the repo, workflow, and a few expected-vs-missing timestamps (fine to share privately there, unlike here). If you post the exported expected-vs-created table (repo redacted), folks here can sanity-check the classification before you file it. |
Uh oh!
There was an error while loading. Please reload this page.
🏷️ Discussion Type
Question
💬 Feature/Topic Area
Schedule & Cron Jobs
Discussion Details
I am investigating an hourly scheduled workflow in a private repository.
Configuration:
23 * * * *(UTC).cancel-in-progress: false.Observations over several days:
I understand that scheduled workflows can be delayed under load and are not guaranteed to run at an exact time. I have searched for similar discussions and found related reports, but I do not know whether they share the same cause.
What evidence or checks can distinguish ordinary scheduling delay from persistent multi-hour gaps before run creation? Is there a way to inspect the disposition of individual scheduled events, or an appropriate channel for asking GitHub to investigate this pattern?
I am not claiming a confirmed platform incident. Repository identifiers and execution identifiers are intentionally omitted from this public question.
All reactions