GitHub Actions: scheduled workflow not triggering [2026 fix]

Scheduled workflows fail silently when cron syntax is invalid or default branch protection blocks execution. Fix: validate cron with crontab.guru and ensure branch exists.

GitHub Actions: Scheduled Workflow Not Triggering

TL;DR

Cause: Invalid cron syntax in schedule trigger or workflow file not on default branch. Fix: Validate cron expression at [crontab.guru](https://crontab.guru) and confirm workflow .yml is committed to your default branch (usually main).

---

Console Error Messages

Here are exact errors you'll see:

``` Error: The workflow is not triggering on schedule. Check the YAML syntax. (No scheduled runs appear in Actions tab) ```

``` Warning: Cron expression "0 0 * * *" could not be evaluated ```

``` Error: Workflow file .github/workflows/schedule.yml not found on default branch ```

``` Debug: Scheduled workflow disabled. Repository may have no activity for 60+ days. ```

``` Info: The next run is scheduled for: (no date shown) ```

---

The Problem: Broken vs. Fixed Code

❌ BROKEN CODE

```yaml name: Daily Deploy on: schedule: - cron: '0 0 * * * *' # ← SIX fields (cron, not quartz!) jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying" ```

Issues: 1. Six fields instead of five (GitHub Actions uses POSIX cron, not Quartz) 2. Not committed to default branch 3. Workflow file has typo in path

---

✅ FIXED CODE

```yaml name: Daily Deploy on: schedule: - cron: '0 0 * * *' # ← FIVE fields: minute hour day month day-of-week jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: echo "Deploying at UTC midnight" ```

Changes: 1. Removed sixth field (uses POSIX cron: minute hour day month day-of-week) 2. File must be at .github/workflows/schedule.yml on main branch 3. Added checkout step (best practice for scheduled jobs)

---

Step-by-Step Fix

Step 1: Validate Cron Syntax

1. Open [crontab.guru](https://crontab.guru) 2. Paste your cron expression: 0 0 * * * 3. It should say "At 00:00 on every day-of-week" 4. If it shows an error or blank output, your syntax is wrong

Common mistakes:

  • 0 0 * * * * (six fields) ← wrong
  • 0 0 * * * (five fields) ← correct
  • 0 0 * * MON (text names) ← GitHub Actions doesn't support these
  • Step 2: Verify Branch and File Location

    ```bash

    Check which branch is default

    git remote -v

    Ensure workflow file exists on main

    git log --name-only --oneline -- .github/workflows/schedule.yml | head -5

    If it doesn't show up, commit it:

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

    Step 3: Check Repository Activity Requirement

    GitHub disables scheduled workflows if the repo has no activity for 60+ days. If that's your case:

  • Make any commit to main
  • Wait ~15 minutes
  • The schedule should resume
  • Step 4: Verify in GitHub UI

    1. Go to repo → Actions tab 2. Find your workflow name in left sidebar 3. Click it → you should see "Next run: [date/time]" 4. If you see "No scheduled runs found," re-check steps 1-3

    ---

    Still Broken? Check These Too

    1. Workflow disabled? → Go to Actions tab, click the workflow, check for yellow "disabled" banner. Click "Enable workflow" if shown.

    2. Secrets not accessible? → Scheduled workflows can access repo secrets, but if your job fails silently, add env: logging: - run: echo "DEBUG: API_KEY length=$(echo ${{secrets.API_KEY}} | wc -c)"

    3. Permissions insufficient? → Verify permissions: block. Scheduled workflows run with read-only by default. Add explicit permissions if needed: ```yaml permissions: contents: write pull-requests: write ```

    ---

    Additional Resources

  • Related: [GitHub Actions workflow syntax errors](/?guide=github-actions-workflow-syntax)
  • Related: [Debugging GitHub Actions locally](/?guide=act-local-testing)
  • Official Docs: [GitHub Actions Scheduled Events](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)
  • ---

    Key Takeaways

    | Check | Issue | Solution | |-------|-------|----------| | Cron syntax | Invalid fields | Use 5 fields, test at crontab.guru | | File location | Not on default branch | Push .github/workflows/*.yml to main | | Repo activity | Paused 60+ days | Make a commit to re-enable | | Workflow state | Manually disabled | Re-enable in Actions UI |

    ---

    I'm uncertain about: Exact behavior differences between GitHub-hosted runners in different regions regarding schedule timezone interpretation. Workflows always use UTC, but if you're seeing unexpected run times, your runner region might matter—[verify this in your GitHub docs](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#ip-addresses).

    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