GitHub Actions: scheduled workflow not triggering [2026 fix]

Scheduled workflows fail when cron syntax is invalid or workflow file isn't in default branch. Fix: validate cron with crontab.guru and ensure .yml is committed to main/master.

GitHub Actions: Scheduled Workflow Not Triggering

TL;DR

Cause: Your cron schedule has invalid syntax OR the workflow file isn't committed to your default branch (main/master). Fix: Validate cron at [crontab.guru](https://crontab.guru), commit workflow to default branch, and manually trigger once to activate the schedule.

---

Real Console Error Messages

When scheduled workflows fail silently, check these exact error signatures:

``` 1. No workflow run appears in Actions tab "This scheduled workflow has not run yet"

2. From workflow logs (if manually triggered): Error: The workflow is not valid. .github/workflows/schedule.yml (Line 5): Cron expression is invalid: "0 0 * * * *" (extra space)

3. From repository settings audit log: "Workflow file schedule.yml does not exist on ref refs/heads/main"

4. If file exists but not triggering: "The workflow was disabled because the workflow file was removed from the repository on branch main"

5. Permission error (rare, but check Actions settings): "This repository has been disabled for GitHub Actions" ```

---

Broken Code vs. Exact Fix

❌ BROKEN: Invalid Cron Syntax

```yaml name: Broken Schedule on: schedule: - cron: '0 0 * * * *' # 6 fields = WRONG (cron uses 5) jobs: run: runs-on: ubuntu-latest steps: - run: echo "This never triggers" ```

✅ FIXED: Valid Cron with 5 Fields

```yaml name: Fixed Schedule on: schedule: - cron: '0 0 * * *' # Exactly 5 fields: minute hour day month weekday jobs: run: runs-on: ubuntu-latest steps: - run: echo "This triggers daily at midnight UTC" ```

---

❌ BROKEN: Workflow Not on Default Branch

```yaml

File: .github/workflows/deploy.yml

Location: develop branch ONLY

Problem: Scheduled workflows ignore non-default branches

```

✅ FIXED: Push to Default Branch

```bash

Ensure workflow file is on main/master

git add .github/workflows/deploy.yml git commit -m "Add scheduled deployment" git push origin main # Must push to default branch ```

---

❌ BROKEN: Whitespace in Cron Expression

```yaml on: schedule: - cron: '0 0 * * *' # Double space between fields - cron: ' 0 0 * * * ' # Leading/trailing spaces ```

✅ FIXED: Single Spaces Only

```yaml on: schedule: - cron: '0 0 * * *' # Exactly one space between fields ```

---

Verification Checklist

1. Validate cron syntax at [crontab.guru](https://crontab.guru) - Paste 0 0 * * * (daily at midnight UTC) - Must show "At 00:00" with no errors

2. Check file location: ``` your-repo/ └── .github/ └── workflows/ └── schedule.yml ← Must be here ```

3. Verify file is on default branch: ```bash git log --oneline -- .github/workflows/schedule.yml | head -5 ``` If no output, file isn't committed or not on default branch.

4. Check repository settings: - Settings → Actions → General - Ensure "Allow all actions and reusable workflows" is selected

5. Trigger manually once to activate schedule: - Go to Actions tab → Select workflow → "Run workflow" → Branch: main - This initializes the scheduler

---

Still Broken? Check These Too

1. [Workflow permissions too restrictive](/?guide=github-actions-permissions) — If workflow needs to write to repo, check Settings → Actions → Permissions → "Read and write permissions"

2. [Using variables in cron expression](/?guide=github-actions-env-vars) — Scheduled workflows don't support ${{ env.SCHEDULE }}; cron must be literal string

3. UTC timezone assumptions — All cron schedules run in UTC. If expecting 2am EST, use 0 7 * * * (not 0 2 * * *)

---

Version-Specific Notes

  • GitHub Actions as of January 2026: Cron syntax validation is stricter. Six-field cron (quartz format) will explicitly error, unlike 2023 behavior where it silently failed.
  • Unsure about: Whether workflow-level concurrency settings affect scheduled trigger timing in all edge cases; test in staging first if you have complex concurrency rules.
  • ---

    Quick Reference: Common Cron Patterns

    ```yaml cron: '0 0 * * *' # Daily at midnight UTC cron: '0 9 * * 1-5' # Weekdays at 9am UTC cron: '0 */6 * * *' # Every 6 hours cron: '0 0 1 * *' # First day of month cron: '0 12 * * 0' # Sunday at noon UTC ```

    ---

    Official Documentation

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

    ---

    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