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 has enabled: 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 time

Actually runs at 2am UTC, not your timezone

```

✅ FIXED: Document UTC and Adjust

```yaml

GitHub 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

  • [GitHub Actions: Scheduled workflows (CRON syntax)](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)
  • [CRON expression validator](https://crontab.guru)
  • [Workflow file format reference](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule)
  • ---

    Found a different variation? Drop it in the comments—help us build the definitive 2026 guide.

    🔥 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