GitHub Actions: scheduled workflow not triggering [2026 fix]
Scheduled workflows fail silently when cron syntax is invalid or pushed to non-default branches; fix: validate cron with cronitor and ensure workflow file is on main/master.
GitHub Actions: Scheduled Workflow Not Triggering – 2am Production Fix
TL;DR
Cause: Your cron syntax is invalid OR your workflow file isn't on your default branch (main/master). Fix: Validate cron expression at [cronitor.io](https://cronitor.io/cron-schedule-expression-editor) and confirm.github/workflows/ is committed to your default branch, not a feature branch.---
Real Console Error Messages
GitHub Actions won't show these in your UI—you'll find them in the workflow run logs or not see a run at all:
``` 1. "Cron job is invalid" (Silent failure—no workflow run appears)
2. "Request failed: 422 Unprocessable Entity" (When pushing invalid schedule syntax to main)
3. "Scheduled workflow did not run" (Workflow exists but cron never fires—check branch)
4. "fatal: pathspec '.github/workflows/schedule.yml' did not match any files" (Workflow file not on default branch)
5. "Error: no matching manifest for linux/arm64" (Unrelated container issue, but sometimes conflated with scheduling problems) ```
---
Broken Code → Fixed Side-by-Side
Problem 1: Invalid Cron Syntax
❌ BROKEN: ```yaml name: Deploy on: schedule: - cron: '0 0 * * * *' # 6 fields (Unix cron) – GitHub expects 5
jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploy!" ```
✅ FIXED: ```yaml name: Deploy on: schedule: - cron: '0 0 * * *' # Correct: 5 fields (minute hour day month weekday)
jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploy!" ```
Why: GitHub Actions uses POSIX cron (5 fields), not standard Unix cron (6 fields with seconds).
---
Problem 2: Workflow on Feature Branch Instead of Default
❌ BROKEN: ```bash
You committed to 'feature/scheduled-task' branch
git checkout -b feature/scheduled-task echo 'schedule: cron: "0 2 * * *"' >> .github/workflows/nightly.yml git push origin feature/scheduled-task❌ Workflow never runs—it's not on main
```✅ FIXED: ```bash
Commit to default branch (main/master)
git checkout main echo 'schedule: cron: "0 2 * * *"' >> .github/workflows/nightly.yml git add .github/workflows/nightly.yml git commit -m "Add nightly scheduled workflow" git push origin main✅ Now scheduled workflow will trigger
```Why: GitHub only triggers scheduled workflows from files on your repository's default branch (set in Settings > Branches > Default branch).
---
Problem 3: Using UTC Timezone Without Awareness
❌ BROKEN: ```yaml name: Morning Report on: schedule: - cron: '0 8 * * MON' # "8am Monday" jobs: report: runs-on: ubuntu-latest steps: - run: date # Runs at 8:00 UTC, not 8:00 your local time ```
✅ FIXED: ```yaml name: Morning Report on: schedule: - cron: '0 13 * * MON' # 8am EST = 1pm UTC (during winter) jobs: report: runs-on: ubuntu-latest steps: - run: date - run: echo "UTC is the only supported timezone for GitHub Actions cron" ```
Why: All GitHub Actions cron schedules are in UTC. Convert your desired time to UTC (or add a comment for future you).
---
Still Broken? Check These Too
1. Workflow file syntax error elsewhere – Even one invalid YAML character stops the entire workflow from registering. Run yamllint .github/workflows/*.yml locally before pushing.
2. PAT token or GITHUB_TOKEN permissions – If your workflow writes back to the repo, check that your token has contents: write and workflows: write permissions. [See GitHub token scopes](/?guide=github-token-permissions).
3. Repository archived or disabled – Scheduled workflows don't run on archived repos. Check Settings > Danger Zone to confirm your repo is active. Also verify Actions aren't disabled in Settings > Actions > General.
---
Verification Checklist
.yml file is committed to main or your default branch (not a PR)yamllint passes).github/workflows/ directory---
Related Guides
---
Official Documentation
[GitHub Actions: Scheduled events](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)
---
Notes on Version/Behavior
As of 2026, GitHub Actions cron behavior has not changed significantly since 2021, but I'm flagging potential areas where your specific setup might differ:
If you see different behavior, drop a note in the comments below.
---
Found a different variation? Drop it in the comments.