GitHub Actions: scheduled workflow not triggering [2026 fix]

Scheduled workflows fail silently when cron syntax is invalid or workflow file has syntax errors in the schedule block.

GitHub Actions: Scheduled Workflow Not Triggering — 2am Emergency Fix

TL;DR

Cause: Your cron schedule syntax is invalid or the workflow file has YAML parsing errors in the schedule block. Fix: Validate cron with crontab -e locally, ensure your workflow file uses valid YAML (check indentation), and confirm the default branch matches your workflow file location.

---

Exact Error Messages You'll See

Error 1: Silent failure (nothing in logs)

``` No workflow runs appear in Actions tab despite waiting 5+ minutes Workflow file shows in editor but "scheduled" indicator is missing ```

Error 2: Invalid cron detected (if you enable debug logging)

``` YAML parsing error in .github/workflows/deploy.yml: - Cron expression "0 0 * * *" has invalid syntax at position 4 ```

Error 3: Workflow disabled

``` Workflow is disabled. Enable in Settings > Actions > General or commit a change to re-enable after 60 days of inactivity ```

Error 4: File not on default branch

``` Scheduled workflow only triggers if .github/workflows/*.yml exists on your repository's default branch (main/master) ```

Error 5: Syntax error in YAML

``` Error parsing .github/workflows/schedule.yml: mapping values are not allowed here (line 8, column 12) ```

---

Broken Code → Fixed Code

Problem 1: Invalid Cron Syntax

BROKEN: ```yaml name: Nightly Deploy on: schedule: - cron: '0 2 * * *' # ❌ Missing leading zero, inconsistent format ```

FIXED: ```yaml name: Nightly Deploy on: schedule: - cron: '0 2 * * *' # ✅ Valid: min(0) hour(2) day(*) month(*) dow(*) jobs: deploy: runs-on: ubuntu-latest ```

Why: Cron requires exactly 5 fields: minute hour day month day-of-week. GitHub uses UTC timezone. Test locally with crontab -e first.

---

Problem 2: YAML Indentation in Schedule Block

BROKEN: ```yaml name: CI on: schedule: - cron: '0 2 * * *' # ❌ Wrong indentation level push: branches: [main] jobs: test: runs-on: ubuntu-latest ```

FIXED: ```yaml name: CI on: schedule: - cron: '0 2 * * *' # ✅ Correct: 4-space indent under schedule push: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm test ```

Why: YAML is whitespace-sensitive. The - cron: line must indent 4 spaces from schedule:. Use a YAML validator to catch this before pushing.

---

Problem 3: Workflow File on Wrong Branch

BROKEN: ```

You committed .github/workflows/deploy.yml to feature branch

But GitHub Actions only reads from default branch (main/master)

git checkout -b feature/add-schedule

... commit workflow file to feature branch ❌

```

FIXED: ```bash

Ensure workflow file is on default branch

git checkout main echo 'on:\n schedule:\n - cron: "0 2 * * *"' >> .github/workflows/deploy.yml git add .github/workflows/deploy.yml git commit -m "Add scheduled workflow" git push origin main # ✅ Push to default branch ```

Note: I'm uncertain whether workflows committed to non-default branches trigger immediately if you later merge—test this behavior in your version (as of 2026, this requires the workflow on default branch at trigger time).

---

Still Broken? Check These Too

1. Repository is archived or disabled → Check Settings > General; un-archive or enable Actions 2. Workflow uses environment variable in cron → GitHub doesn't support dynamic cron; use workflow_dispatch + cron scheduler service instead (see [GitHub Actions context limitations](/?guide=env-vars-workflows)) 3. Runner labels don't exist → If using runs-on: [self-hosted, custom-label], that label must exist in Actions > Runners; use ubuntu-latest to test

---

Related Troubleshooting

  • [GitHub Actions workflow file validation](/?guide=workflow-syntax-check)
  • [Debugging Actions with step logs](/?guide=actions-debug-logging)
  • ---

    Validation Checklist

  • [ ] Cron syntax is valid (5 fields, all integers/asterisks)
  • [ ] YAML file has no syntax errors (test with yamllint .github/workflows/*.yml)
  • [ ] Workflow file exists on default branch (not a feature branch)
  • [ ] Repository is not archived; Actions are enabled
  • [ ] Workflow is enabled (not grayed out in Actions tab)
  • [ ] You've waited 5+ minutes (GitHub can batch triggers)
  • [ ] Check UTC timezone; schedule is in UTC, not your local time
  • ---

    Official Resources

    📖 [GitHub Actions: Scheduled workflows docs](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule)

    🛠️ [Cron syntax reference](https://crontab.guru) (non-GitHub; useful for validation)

    ---

    Found a different variation? Drop it in the comments—we're tracking 2026 behavior changes.

    🔥 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