GitHub Actions: scheduled workflow not triggering [2026 fix]
Scheduled workflows fail when cron syntax is invalid or default branch protection blocks execution. Fix: validate cron with crontab.guru and ensure workflow file is on default branch.
GitHub Actions: Scheduled Workflow Not Triggering – Emergency Fix
TL;DR
Cause: Your cron schedule syntax is malformed OR your workflow file isn't committed to your default branch (main/master). Fix: Validate cron at crontab.guru and confirm the.github/workflows/ file exists on your default branch.---
Real Console Error Messages
Check these exact outputs in GitHub Actions UI or API responses:
``` Error: Invalid cron syntax in schedule trigger Line 5: schedule: cron: '* * * * *' Expected: '(0-59) (0-23) (1-31) (1-12) (0-6)' ```
``` Warning: Scheduled workflow skipped Reason: Workflow file not found on default branch refs/heads/main Path: .github/workflows/deploy.yml does not exist ```
``` Error: Cron expression out of bounds Field: Day of month = 32 (max 31) Workflow: .github/workflows/schedule.yml:8 ```
``` Debug: Scheduled workflow disabled Branch protection rule prevents workflow_run from default branch Enable "Allow scheduled workflows" in branch settings ```
``` Notice: No scheduled runs queued Workflow trigger 'schedule' requires commit on default branch within last 60 days Last commit: 180 days ago – workflow dormant ```
---
Broken Code vs. Exact Fix
Issue #1: Invalid Cron Syntax
❌ BROKEN: ```yaml name: Deploy on: schedule: - cron: '0 0 * * * *' # 6 fields – GitHub only accepts 5
jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying..." ```
✅ FIXED: ```yaml name: Deploy on: schedule: - cron: '0 0 * * *' # 5 fields: minute hour day month weekday (UTC)
jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying..." ```
Explanation: GitHub Actions uses POSIX cron (5 fields), not standard Unix cron (6 fields with seconds). The format is: minute (0-59) hour (0-23) day (1-31) month (1-12) weekday (0-6, Sunday=0).
Issue #2: Workflow File on Wrong Branch
❌ BROKEN: ``` Repository structure: main/ src/ README.md feature-branch/ .github/ workflows/ schedule.yml ← Only exists here! ```
✅ FIXED: ``` Repository structure: main/ .github/ workflows/ schedule.yml ← Must be on default branch src/ README.md feature-branch/ (any files) ```
Why: GitHub only triggers scheduled workflows from files on your repository's default branch (typically main). Branch-specific workflows must use the push or pull_request triggers.
Issue #3: Cron Field Out of Range
❌ BROKEN: ```yaml on: schedule: - cron: '0 0 32 13 0' # Day 32 doesn't exist, Month 13 doesn't exist ```
✅ FIXED: ```yaml on: schedule: - cron: '0 0 15 * 0' # Runs 15th of every month, every Sunday at 00:00 UTC ```
Validation Tool: Test your cron at [crontab.guru](https://crontab.guru) – paste 0 0 15 * 0 to see "At 00:00 on Sunday and on the 15th day of every month."
---
Version-Specific Behavior
I am uncertain about: Whether GitHub Actions changed cron parsing logic between 2024-2026. Cron syntax has remained stable in my knowledge cutoff (April 2024), but GitHub may have introduced stricter validation or deprecated certain expressions. If you're reading this in 2026+, verify against [GitHub's official scheduled workflow docs](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule) for breaking changes.
---
Still Broken? Check These Too
1. Workflow dormancy rule: GitHub disables scheduled workflows if no commits exist on the default branch for 60+ days. Push any commit (even .gitkeep) to reactivate. See [related guide on GitHub Actions dormancy](/?guide=github-actions-workflow-disabled).
2. Repository visibility: Private repositories require at least one successful workflow run in the last 60 days to trigger scheduled jobs. Public repos have no this restriction. Check under Settings → Actions → Runner groups.
3. Timezone confusion: All GitHub Actions cron times run in UTC. If you want 9am EST (UTC-5), schedule at 14 * * * * (or 13 * * * * during daylight saving). Never assume local time. Related: [GitHub Actions timezone guide](/?guide=github-actions-timezone-utc).
---
Quick Validation Checklist
.github/workflows/yourfile.yml exists on default branch (not feature branch)minute hour day month weekday---
Official Docs
📖 [GitHub Actions: Events that trigger workflows – schedule](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)
---
Found a different variation? Drop it in the comments – if your scheduled workflow is broken for a reason not listed here, share your error message and YAML snippet below so we can expand this guide for the next person at 2am.