Scheduled workflow (schedule: cron) consistently delayed 8-14 hours, one day dropped entirely — delay persists even after changing the cron minute. Related to new account/repo? #201738
Replies: 4 comments
-
|
💬 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. ⭐ |
Beta Was this translation helpful? Give feedback.
-
|
First off, exceptional job on the troubleshooting—ruling out the default branch, fork status, activity window, and hitting the REST API directly means you’ve already eliminated 95% of the usual footguns. To answer your core question directly: Yes, this is an un-documented but very real behavior pattern for brand-new accounts and low-traffic public repos on the Free tier. Here is exactly what is happening under the hood, why changing your minute didn't work, and how you can actually solve it. 1. The Architectural Reality: It's Not Per-Minute CongestionWhile the official docs give the standard "avoid the top of the hour" advice, GitHub's Actions scheduling infrastructure ( To prevent massive crypto-mining abuse and spam vectors (which heavily target new free public repos), GitHub doesn't just evaluate your cron at
2. Will it improve?Slightly, but don't expect miracles. As your account ages past the 30-to-90-day mark and accumulates diverse activity (stars, PRs, multi-contributor interactions), your internal trust telemetry adjusts. However, even on established Free-tier accounts, 3. The Workaround: External Dispatch (The Only Reliable Way)Since you already have Here is the exact curl payload your external runner needs to hit: curl -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_PERSONAL_ACCESS_TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
[https://api.github.com/repos/YOUR_USERNAME/YOUR_REPO/actions/workflows/daily.yml/dispatches](https://api.github.com/repos/YOUR_USERNAME/YOUR_REPO/actions/workflows/daily.yml/dispatches) \
-d '{"ref":"main"}' |
Beta Was this translation helpful? Give feedback.
-
|
Hey there! 👋 Thanks for posting in the GitHub Community, @mirae-cloud ! You are more likely to get a useful response if you are posting in the applicable category. I've gone ahead and moved this to the correct category for you. Good luck! |
Beta Was this translation helpful? Give feedback.
-
|
This is a documented GitHub Actions limitation affecting all schedule-triggered workflows. Here is a full explanation and workaround: Why scheduled workflows are delayedGitHub'''s scheduled workflow runner is shared infrastructure across all public repositories. During high-load periods (typically UTC 00:00–08:00 and around the top of each hour), there can be significant queue delays — 8–14 hours is not unusual for new repos with low priority. From the GitHub docs:
Why new repos/accounts are hit hardestGitHub prioritizes schedule execution based on repository activity and age. Brand new repos and new accounts get the lowest priority in the queue, explaining the extreme delays. WorkaroundsOption 1: Trigger from external cron (most reliable)Use a free external cron service (cron-job.org, EasyCron) to hit your repo'''s webhook: curl -X POST \
-H "Authorization: token YOUR_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/OWNER/REPO/dispatches \
-d "{\"event_type\":\"daily-trigger\"}"Workflow trigger: on:
repository_dispatch:
types: [daily-trigger]Option 2: Add workflow_dispatch as manual fallbackon:
schedule:
- cron: "0 6 * * *"
workflow_dispatch: {}Option 3: Wait for the repo to matureAfter a few weeks of activity and successful runs, scheduling reliability significantly improves. The dropped run is also a known occurrence — GitHub does not guarantee exactly-once execution for schedule triggers, only best-effort delivery. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
🏷️ Discussion Type
Bug
Body
A daily
schedule-triggered workflow on a new public repo (created 2026-07-05, on a new personal account created 2026-07-04) has been firing 8-14 hours late almost every day for the past week, with one day (2026-07-08) dropped entirely. Moving the cron minute away from:00(the documented "avoid the top of the hour" advice) made no measurable difference — actual fire times keep landing in nearly the same ~2-hour window (10:30-12:30 UTC) regardless of what the cron field says. I've ruled out the usual suspects (default branch, fork status, YAML syntax, secrets, spending limits) and I'm trying to figure out whether this is expected for brand-new accounts/repos, or something else.Setup:
.github/workflows/daily.yml, triggers:schedule(single cron entry) + 'workflow_dispatch' as a manual fallback.What actually happened (all times UTC):
| Date | Cron at the time | Expected fire time | Actual fire time | Delay |
| 07-06 |
0 22 * * *| 07-05 22:00 | 07-06 12:27:48 | ~14.5h || 07-07 |
0 22 * * *| 07-06 22:00 | 07-07 10:33:50 | ~12.5h || 07-08 |
0 22 * * *| 07-07 22:00 | no run at all | dropped || 07-09 |
7 22 * * *(changed to avoid:00) | 07-08 22:07 | 07-09 10:33:23 | ~12.4h || 07-10 |
7 22 * * *| 07-09 22:07 | 07-10 10:30:32 | ~12.4h || 07-11 |
7 22 * * *| 07-10 22:07 | 07-11 06:27:20 | ~8.3h || 07-12 |
7 22 * * *| 07-11 22:07 | 07-12 07:35:59 | ~9.5h || 07-13 |
7 22 * * *| 07-12 22:07 | noschedulerun recorded (only manualworkflow_dispatchruns) | still pending/dropped |(All confirmed via the Actions REST API —
event,created_at,run_started_atfields — not just eyeballing the UI.)The part that doesn't fit the usual explanation:
The standard advice ("avoid
:00, it's the most congested minute, offset your cron") is exactly what I did on 07-08 (0 22 * * *→7 22 * * *). But the actual fire times before and after that change land in almost the same clock-time window (10:30-12:30 UTC), regardless of whether the cron says:00or:07. If this were purely per-minute congestion, I'd expect the offset to at least shift the distribution somewhat.Instead it looks more like the trigger is being queued/deprioritized as a batch and released around the same time of day, independent of the configured minute.
What I've already ruled out:
main, which is confirmed as the repo's default branch (checked via API)."fork": false, no parent/source).workflow_dispatchruns on the same file succeed immediately and consistently.Question:
Has anyone else seen a "consistent 8-14 hour delay" (not just the documented "a few minutes to an hour" congestion) for 'schedule' triggers on a brand-new account/repo specifically? I'm trying to figure out:
Can share the repo/workflow name if anyone from GitHub staff wants to look at the actual run IDs.
Guidelines
Beta Was this translation helpful? Give feedback.
All reactions