Skip to content
Latchkey

How to Handle Scheduled Run Delays in GitHub Actions

GitHub schedules are best-effort and can be delayed or dropped during high load, so never rely on an exact minute.

Move off :00 to the least-congested minutes, keep jobs idempotent so a late run is harmless, and add workflow_dispatch for a manual re-trigger when a run is skipped.

Steps

  • Schedule at an odd minute rather than the top of the hour.
  • Make the job idempotent so a delayed run does no harm.
  • Add workflow_dispatch to rerun manually if a schedule is missed.

Workflow

.github/workflows/ci.yml
on:
  schedule:
    - cron: '23 4 * * *'   # off-peak minute reduces queueing
  workflow_dispatch:        # manual rerun if a scheduled run is dropped
jobs:
  task:
    runs-on: ubuntu-latest
    steps:
      - run: ./idempotent-task.sh

Gotchas

  • A high-demand schedule can be dropped entirely, not just delayed.
  • Latchkey managed runners keep spare capacity and auto-retry transient failures, so scheduled jobs start sooner.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →