Actions scheduled workflow runs are starting hours away from the configured cron times #210111
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. ⭐ |
|
A useful first step is to log the scheduled event's expected cron time and compare it with the actual workflow start time. For scheduled workflows, GitHub Actions does not guarantee execution at the exact cron time, and runs can be delayed or even dropped during periods of high load. However, repeated multi-hour delays are worth investigating. A few checks that may help:
One important limitation: the For better diagnostics, record the workflow's event timestamp, run ID, run number, and actual start time. You can then compare these with the expected schedule. The HTTP 403 responses should also be investigated separately, since they may indicate rate limiting, authentication, or access restrictions at the target website. If the multi-hour delays continue, collecting several run IDs and timestamps would help when reporting the issue to GitHub Support. |
|
The behavior you are experiencing is actually a well-known, documented characteristic of GitHub Actions scheduled workflows.
GitHub Actions does not guarantee that scheduled workflows will run exactly at the configured cron time.
Unfortunately, GitHub does not natively provide a payload property that indicates the exact target slot (e.g., "this was the 02:00 run"). The github.event.schedule context only gives you the exact cron string you configured, not the specific timestamp it was intended for.
To minimize these delays and figure out what is happening, try these steps: |
|
On your second question: there is a way to tie each run to its slot. Give each slot its own cron line: on:
schedule:
- cron: '0 2 * * *'
- cron: '0 6 * * *'
- cron: '0 10 * * *'
- run: echo "slot=${{ github.event.schedule }} started=$(date -u +%FT%TZ)"Your 08:37 run would then show whether it was the 06:00 slot 2h37m late or the 02:00 slot 6h37m late; schedule runs aren't created before their slot, so it can't be the 10:00 one. Over a few days that gives you a delay per slot, and the slots that never appear are the dropped ones: the table GitHub Support will want if you open a ticket. Two notes:
|
Uh oh!
There was an error while loading. Please reload this page.
🏷️ Discussion Type
Bug
💬 Feature/Topic Area
Schedule & Cron Jobs
Discussion Details
🤔 GitHub Actions scheduled runs starting hours later than expected
Hi everyone! 👋
I'm having a strange issue with a GitHub Actions scheduled workflow, and I'd appreciate any suggestions.
⚙️ Setup
Schedule: 0 2,6,10 * * * (UTC)
Expected runs: 02:00, 06:00, and 10:00 UTC daily
Default branch: main
Manual runs using workflow_dispatch work normally.
🐛 Problem
Since October 1, 2026, scheduled runs have frequently started hours away from the expected times. Some expected runs also appear to be missing.
For example, one scheduled run started at 08:37 UTC, even though the configured cron only specifies 02:00, 06:00, and 10:00 UTC.
I added a diagnostic step and confirmed that this run reported:
Event: schedule
Scheduled cron: 0 2,6,10 * * *
Workflow ref: the expected workflow on main
The workflow schedule has not been intentionally changed. Manual runs still work.
I also encountered HTTP 403 responses from the target website on some runs, but I suspect this is a separate issue from the scheduling behavior.
❓ Questions
Has anyone experienced scheduled runs starting several hours away from their configured cron times?
Is there a way to determine which scheduled slot triggered a run?
Are there additional checks I should perform to investigate missing or delayed scheduled runs?
I understand that GitHub Actions schedules are not guaranteed to start exactly on time, but the repeated multi-hour deviations are unusual.
Thanks in advance for any help! 🙏
All reactions