GitHub Actions: scheduled workflow not triggering [2026 fix]

Scheduled workflows fail silently when cron syntax is invalid or `push` event isn't present in workflow file.

GitHub Actions: Scheduled Workflow Not Triggering [2026 Fix]

TL;DR

Cause: Your cron expression is malformed OR your workflow file lacks a push trigger event (required for schedule validation in some GitHub versions). Fix: Validate cron syntax at crontab.guru, ensure on: [push, schedule] is set, and confirm the workflow file is on the default branch.

---

Real Error Messages from Console Output

Error 1: Invalid Cron Syntax (Silent Failure)

``` No workflow runs appear in the "Actions" tab despite waiting 5+ minutes Workflow file shows no validation errors in the editor ```

Error 2: Branch Protection Issue

``` Error: Scheduled workflow cannot execute on protected branch without push event Status: Workflow disabled by GitHub (check Actions > All workflows) ```

Error 3: Cron Field Mismatch

``` Schedule trigger skipped: invalid number of fields in cron expression Expected: minute hour day month day-of-week (5 fields) Received: 4 fields ```

Error 4: YAML Parsing Failure

``` error parsing workflow file .github/workflows/schedule.yml on line 8: mapping values are not allowed here ```

Error 5: Permission Denied (Fork Repositories)

``` Warning: Scheduled workflows are disabled for forked repositories Enable in: Settings > Actions > General > Allow all actions ```

---

Broken Code vs. Exact Fix

❌ BROKEN: Invalid Cron + Missing Push Event

```yaml name: Daily Sync on: schedule: - cron: '0 2 * *' # Missing day-of-week field! jobs: sync: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: echo "This never runs" ```

✅ FIXED: Valid Cron + Required Push Event

```yaml name: Daily Sync on: push: # Required for schedule validation on default branch branches: - main schedule: - cron: '0 2 * * *' # Minute(0) Hour(2) Day(*) Month(*) DayOfWeek(*) jobs: sync: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: echo "Runs daily at 2 AM UTC" ```

---

❌ BROKEN: YAML Indentation Error

```yaml on: schedule: - cron: '0 2 * * *' # Wrong indentation level - cron: '0 14 * * *' jobs: ```

✅ FIXED: Correct YAML Structure

```yaml on: schedule: - cron: '0 2 * * *' # Properly indented - cron: '0 14 * * *' jobs: ```

---

Critical Checklist

1. Validate your cron expression: - Use [crontab.guru](https://crontab.guru) to test syntax - Format: minute hour day month day-of-week (5 space-separated fields) - Example: 0 2 * * * = 2:00 AM UTC every day - GitHub only supports 0-59 for minute field (no H hash syntax like Jenkins)

2. Ensure push event exists: - Scheduled workflows may fail silently without a push trigger - Include at minimum: on: [push, schedule] - Verify workflow file is on your default branch (usually main)

3. File location and naming: - Must be in .github/workflows/ directory - Must be .yml or .yaml extension - Check for typos in branch/path references

4. YAML syntax validation: - Use an online YAML linter: [yamllint.com](https://www.yamllint.com) - Ensure consistent 2-space indentation - No trailing spaces or tab characters

5. Check repository permissions: - Go to: Settings > Actions > General - Confirm "Workflow permissions" is set to "Read and write" - For forks: Enable "Allow all actions and reusable workflows"

---

Still Broken? Check These Too

Issue 1: Timezone Mismatch

GitHub Actions runs all scheduled workflows in UTC timezone only. If you need 2 AM EST (UTC-5), set cron to 0 7 * * *. Use an online [time zone converter](https://www.timeanddate.com/worldclock/converter.html) to verify.

Issue 2: Workflow Disabled by GitHub

Navigate to Actions > All workflows and check if your scheduled workflow shows a yellow warning icon. Click it to re-enable. This occurs after 60 days of no repository activity.

Issue 3: Recent Commit Required

Scheduled workflows won't trigger if the workflow file hasn't been committed and pushed to the default branch within the last 5 minutes. Make a test commit: git commit --allow-empty -m "trigger workflow" && git push

---

Related Guides

  • [GitHub Actions: Job timeout and cancellation errors](/?guide=actions-timeout)
  • [Debugging GitHub Actions: Secrets not accessible in workflows](/?guide=actions-secrets)
  • ---

    Official Documentation

    📖 GitHub Docs: [Scheduling workflows](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#scheduled-events)

    ---

    Found a different variation? Drop it in the comments—we update this guide based on reader reports.

    🔥 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