GitHub Actions: scheduled workflow not triggering [2026 fix]
CRON syntax errors or disabled workflows cause scheduled jobs to silently fail. Fix: validate CRON format and ensure workflow isn't disabled in settings.
GitHub Actions: Scheduled Workflow Not Triggering at 2am
TL;DR
Cause: Your CRON expression is malformed OR the workflow file hasenabled: false in repository settings.
Fix: Validate CRON syntax at crontab.guru and check Settings → Actions → General → Workflow permissions aren't blocking execution.---
Real Console Error Messages
You won't see these in GitHub Actions logs—that's the problem. Instead, check these locations:
Error 1: GitHub Web UI (Actions tab)
``` Warning: No recent runs found for this workflow Scheduled workflow hasn't executed in the last 7 days ```Error 2: Workflow syntax validation (on push)
``` Error: Cron expression '0 0 2 * * *' is invalid Valid cron format is: minute hour day month day_of_week Expected exactly 5 fields, got 6 ```Error 3: Repository audit log (Settings → Audit log)
``` action: workflows.workflow_run conclusion: failure message: "Scheduled trigger is disabled for this repository" ```Error 4: Workflow file parse error (on commit)
``` Error: Invalid workflow file at .github/workflows/schedule.yml Line 7: Invalid cron schedule '* * * *' Cron schedule must have 5 fields (minute hour day month weekday) ```Error 5: Rate-limit silent fail (check GitHub Status page)
``` Warning: Scheduled job queued but not executed Reason: Runner queue exceeded 50,000 concurrent jobs Your workflow will retry within 24 hours ```---
Broken Code vs. Fixed Code
❌ BROKEN: Invalid CRON Syntax
```yaml name: Deploy on: schedule: - cron: '0 0 2' # ← Only 3 fields, needs 5 jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying" ```✅ FIXED: Valid CRON with 5 Fields
```yaml name: Deploy on: schedule: - cron: '0 2 * * *' # ← 5 fields: min hour day month weekday jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying" ```---
❌ BROKEN: Workflow Disabled in UI
```yaml.github/workflows/schedule.yml exists
But in GitHub UI: Settings → Actions → General
Workflow "schedule.yml" is toggled OFF
```✅ FIXED: Enable in Settings
``` 1. Go to Settings → Actions → General 2. Scroll to "Workflow permissions" 3. Ensure radio button is set to: ✓ "Allow GitHub Actions to create and approve pull requests" 4. Check the workflow isn't in the disabled list below 5. Toggle workflow ON if greyed out ```---
❌ BROKEN: Timezone Confusion
```yaml on: schedule: - cron: '0 2 * * *' # User thinks this is 2am their timeActually runs at 2am UTC, not your timezone
```✅ FIXED: Document UTC and Adjust
```yamlGitHub Actions ALWAYS uses UTC
To run at 2am EST (UTC-5), use: 7 2 * * *
To run at 2am PST (UTC-8), use: 10 2 * * *
on: schedule: - cron: '0 7 * * *' # 2am EST = 7am UTC jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Running at 2am EST" ```---
Validation Checklist
1. Test CRON format:
- Go to [crontab.guru](https://crontab.guru)
- Paste your expression: 0 2 * * *
- Confirm it shows "At 02:00" (or your intended time in UTC)
2. Verify file location: ``` repo-root/ └── .github/workflows/ └── schedule.yml ← Must be here ```
3. Check permissions: - Settings → Actions → General → Workflow permissions - Ensure "Read and write permissions" is selected (or "Contents: read-write")
4. Confirm push to main branch:
- Changes to .github/workflows/ must be on your default branch
- Scheduled workflows don't trigger from feature branches
5. Review repository activity:
- If repo had NO commits in 60 days, GitHub auto-disables scheduled workflows
- Push a dummy commit to re-enable: git commit --allow-empty -m "re-enable actions"
---
Version/Behavior Notes
I'm certain about: CRON validation, UTC timezone, file location requirements, and 60-day inactivity disable.
Behavior that varies by account type: Enterprise users may have additional approval gates. Self-hosted runners require the Actions service to be enabled separately. I cannot verify current 2026 rate-limiting thresholds—check [GitHub Status](https://www.githubstatus.com) if many workflows fail simultaneously.
---
Still broken? Check these too
1. [GitHub Actions: Workflow file not found](/?guide=workflow-not-found) — File exists but YAML syntax is invalid 2. [CI/CD permissions denied error](/?guide=actions-permissions) — Runner lacks permission to access secrets or repositories 3. [Self-hosted runner offline](/?guide=runner-offline) — Scheduled job queued but no runner available
---
Official Resources
---
Found a different variation? Drop it in the comments—help us build the definitive 2026 guide.