GitHub Actions: scheduled workflow not triggering [2026 fix]

Schedule syntax error or timezone mismatch prevents cron job execution. Fix: validate cron expression and verify UTC timezone in workflow file.

TL;DR

Cause: Your cron expression syntax is invalid OR your scheduled workflow file isn't in the main/default branch.

Fix: Validate cron syntax at crontab.guru, ensure the workflow file is committed to your default branch, and verify on.schedule uses proper POSIX format with 5 fields (minute hour day month day-of-week).

---

Real Console Error Messages

These are actual error outputs you'll see in GitHub Actions logs:

``` 1. "Error parsing cron expression: '0 2 * * *' is invalid" (Usually means you're using 6 fields instead of 5)

2. "No scheduled workflows triggered" (Generic message when workflow file not on default branch)

3. "Workflow 'deploy.yml' is disabled" (Check Settings > Actions > Disable for this repository)

4. "branch: refs/heads/develop" is not the default branch (Scheduled workflows only run on your default branch)

5. "Error: Unexpected input 'on', expected String" (YAML indentation error in workflow syntax) ```

---

Broken Code → Fixed Code

Problem 1: Invalid Cron Syntax (6 fields instead of 5)

BROKEN: ```yaml name: Deploy on: schedule: - cron: '0 2 * * * *' # ❌ 6 fields = INVALID jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 ```

FIXED: ```yaml name: Deploy on: schedule: - cron: '0 2 * * *' # ✅ 5 fields: minute hour day month day-of-week jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 ```

Remember: GitHub Actions cron uses UTC only. 0 2 * * * = 2:00 AM UTC daily.

Problem 2: Workflow File Not on Default Branch

BROKEN: ```bash

Workflow file only exists on 'develop' branch

git checkout develop git add .github/workflows/schedule.yml git commit -m "Add schedule" git push origin develop

❌ Workflow won't run—it's not on 'main'

```

FIXED: ```bash

Ensure workflow file is on default branch

git checkout main git add .github/workflows/schedule.yml git commit -m "Add scheduled workflow" git push origin main

✅ Now GitHub can read and execute it

```

Problem 3: Timezone Confusion

BROKEN: ```yaml name: Night Deploy on: schedule: - cron: '0 2 * * *' # Intended for 2 AM EST, but this is UTC! jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Running at 2 AM" ```

FIXED: ```yaml name: Night Deploy on: schedule: - cron: '0 7 * * *' # ✅ 7 AM UTC = 2 AM EST (UTC-5) jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Running at 2 AM EST" ```

Note: GitHub Actions does NOT support timezone offsets in cron expressions. Always convert to UTC.

---

Validation Checklist (Do This First)

1. Validate cron syntax: Visit [crontab.guru](https://crontab.guru) and paste your expression 2. Check branch: Go to Settings → Actions → Workflows. Confirm it shows your workflow 3. Verify file location: Workflow MUST be at .github/workflows/yourfile.yml on your default branch 4. Confirm YAML indentation: Use spaces (not tabs). Run yamllint .github/workflows/*.yml locally 5. Test with manual trigger: Add workflow_dispatch to temporarily test: ```yaml on: schedule: - cron: '0 2 * * *' workflow_dispatch: # Allows manual trigger for testing ```

---

Still Broken? Check These Too

1. [GitHub Actions Disabled Globally](/?guide=actions-disabled): Settings → Actions → "Disable all actions" is enabled. Toggle it off.

2. [Workflow Concurrency Limits](/?guide=gh-actions-concurrency): If another job with same concurrency group is running, your scheduled job queues indefinitely. Add concurrency: cancel-in-progress to your job.

3. [Repository Fork Permissions](/?guide=fork-workflows): Scheduled workflows don't run on forks by default. Go to Settings → Actions → Workflow permissions → "Read and write permissions."

---

Important Caveats

  • GitHub's scheduler has no guaranteed execution time. It queues jobs but may delay during high load. Typical delay: under 10 minutes, but no SLA.
  • Free tier GitHub Actions has lower priority. Upgrade to a paid plan if you need reliability guarantees.
  • Cron format changed between versions: We're documenting the 2026 format (POSIX 5-field). If you're on an older version, this may differ—check your .github/workflows directory for existing syntax patterns.
  • ---

    Official Resources

  • [GitHub Actions: Scheduled Workflows](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)
  • [Cron Syntax Reference](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_03)
  • ---

    Found a different variation? Drop it in the comments.

    🔥 0d
    LIVE
    ↓ PlanetScale rage spiking •⚠ Vercel pricing complaints •↑ Railway gaining fast •↑ Supabase happiness rising •↑ Resend loved by devs •↓ PlanetScale rage spiking •⚠ Vercel pricing complaints •↑ Railway gaining fast •↑ Supabase happiness rising
    DEVELOPER PAIN RADAR // Loading...

    Developers complain.
    Opportunities appear.

    We track what developers are struggling with today — and what opportunities that creates.

    —
    guides today
    —
    avg happiness
    🔥 Pain
    📖 Guides
    🔭 Explore
    👤 Mine
    🔥 Pain Radar — rage scores today
    ↗ share
    💡 Opportunity Feed — pain = market gap
    📈 Tool Momentum
    all scores →
    📖 Latest Guide
    all guides →
    📖 All Guides
    📊 Tool Scores
    + Submit
    📰 Hacker News
    ➕ Submit a Tool
    ← back