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