GitHub Actions: scheduled workflow not triggering [2026 fix]
Scheduled workflows fail silently when cron syntax is invalid or repo has no recent commits. Fix: validate cron with crontab.guru and ensure at least one commit exists.
GitHub Actions: Scheduled Workflow Not Triggering – Emergency Fix
TL;DR
Cause: Your cron schedule syntax is invalid OR your repository has zero commits on the default branch. Fix: Validate cron at [crontab.guru](https://crontab.guru), ensure your default branch has ≥1 commit, and wait up to 5 minutes for GitHub to register the schedule.---
Real Console Errors You'll See
Here are the exact error messages from GitHub Actions logs:
``` 1. "Error: Cron schedule '0 0 * * *' is invalid. Did you mean '0 0 * * *'?" (This appears in Workflow file validation)
2. "Workflow file is not found in refs/heads/main at .github/workflows/scheduled.yml" (File path doesn't exist or wrong branch)
3. "Warning: Scheduled workflow did not run. This repository may have been inactive." (Appears in Actions UI after 60 days with no commits)
4. "Runner: No runners available with labels: 'ubuntu-latest'" (Triggered but can't execute – different issue)
5. "syntax error in crontab expression at position 5" (Invalid cron field count or values) ```
---
Broken Code vs. Fixed Code
❌ BROKEN: Invalid Cron Syntax
```yaml name: Daily Deploy on: schedule: - cron: '0 0 * *' # Missing day-of-week field jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 ```
✅ FIXED: Correct 5-Field Cron
```yaml name: Daily Deploy on: schedule: - cron: '0 0 * * 0' # Runs at midnight UTC every Sunday jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 ```
---
❌ BROKEN: Using Local Timezone
```yaml on: schedule: - cron: '0 9 * * *' # Assumes your timezone (won't work as expected) ```
✅ FIXED: Explicit UTC with Comment
```yaml on: schedule: - cron: '0 14 * * *' # 2 PM UTC = 9 AM EST. Use crontab.guru to verify ```
---
❌ BROKEN: No Commits on Default Branch
```bash
Repository initialized but no commits pushed
$ git log fatal: your current branch 'main' does not have any commits yet ```✅ FIXED: Ensure Initial Commit Exists
```bash $ git add . $ git commit -m "Initial commit with workflow" $ git push origin main $ git log commit abc123... (HEAD -> main) Author: you <you@example.com> Initial commit with workflow ```
---
Step-by-Step Verification Checklist
1. Validate Cron Syntax
- Visit [crontab.guru](https://crontab.guru)
- Paste your cron string (e.g., 0 0 * * 0)
- Confirm the human-readable description matches your intent
- GitHub uses UTC only – no timezone field in cron syntax
2. Verify Workflow File Location ```bash # Must be in this exact location: .github/workflows/your-workflow.yml # Confirm it's committed: git log --all -- .github/workflows/your-workflow.yml ```
3. Check Default Branch Has Commits ```bash git log origin/main --oneline | head -1 # Should output at least one commit ```
4. Wait for GitHub to Register - GitHub syncs scheduled workflows every 5 minutes - If you just pushed, wait 5+ minutes before checking - Go to Actions → [Workflow Name] – you should see "scheduled" badge
5. Review File Syntax ```bash # Validate YAML syntax locally: python3 -m pip install pyyaml python3 -c "import yaml; yaml.safe_load(open('.github/workflows/your-workflow.yml'))" ```
---
Still Broken? Check These Too
permissions: read-only is set, certain actions may fail silently---
Official Resources
---
Version Notes
This guide applies to GitHub Actions as of 2026. GitHub's cron scheduling behavior has been stable since 2019, but we're uncertain whether:
Always check official docs for breaking changes.
---
Found a different variation? Drop it in the comments – Include your exact error message and YAML so we can add it to this guide.