GitHub Actions: scheduled workflow not triggering [2026 fix]

Scheduled workflows fail silently when cron syntax is invalid or workflow file has syntax errors. Fix: validate cron with crontab.guru and ensure YAML is properly formatted.

GitHub Actions: Scheduled Workflow Not Triggering at 2AM

TL;DR

Cause: Your schedule: cron expression is malformed OR your workflow YAML has indentation/syntax errors that GitHub silently skips. Fix: Validate cron syntax at [crontab.guru](https://crontab.guru) and re-check YAML indentation in .github/workflows/your-file.yml.

---

Exact Error Messages From Console

GitHub Actions scheduled workflows typically fail *silently* with no error in your logs. However, you may see these indicators:

``` 1. Workflow file parsing error Error: The workflow is not valid. .github/workflows/schedule.yml (Line: 12, Col: 5): mapping values are not allowed here ```

``` 2. Invalid cron syntax (appears in workflow settings UI) Error: The schedule does not meet minimum interval of 5 minutes ```

``` 3. GitHub Actions runner log (if workflow DOES trigger but immediately fails) Run /opt/runner-cron/cron-trigger.sh /opt/runner-cron/cron-trigger.sh: line 1: unexpected EOF while looking for matching `"' Error: Workflow trigger error ```

``` 4. Repository settings > Actions > Workflows shows: ⚠️ This workflow has a parse error and is not active ```

``` 5. Local validation with act tool: Error loading workflow: yaml: line X: mapping values are not allowed here ```

---

Broken Code vs. Exact Fix

Issue #1: Malformed Cron Expression

BROKEN: ```yaml name: Daily Deploy

on: schedule: - cron: '0 0 * * *' # This looks correct but timezone matters jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying" ```

FIXED: ```yaml name: Daily Deploy

on: schedule: - cron: '0 2 * * *' # 2 AM UTC (add comment showing your timezone) # CRON_TZ: America/New_York # Note: env var approach is NOT supported in schedule jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying at 2 AM UTC" ```

Key difference: GitHub Actions schedule: uses UTC only. No timezone override is supported in the schedule: trigger itself. To work around this, add 6 hours to desired time if you need 2 AM EST (use 0 7 * * * instead).

---

Issue #2: YAML Indentation Error (Most Common)

BROKEN: ```yaml name: Scheduled Job on: schedule: # Missing 2-space indent - cron: '0 2 * * *' jobs: check: runs-on: ubuntu-latest steps: - run: echo test ```

FIXED: ```yaml name: Scheduled Job on: schedule: # Proper 2-space indent under 'on:' - cron: '0 2 * * *' jobs: check: # Proper indent under 'jobs:' runs-on: ubuntu-latest steps: - run: echo test ```

---

Issue #3: Cron Field Count Error

BROKEN: ```yaml on: schedule: - cron: '0 2 *' # Only 3 fields; needs 5 ```

FIXED: ```yaml on: schedule: - cron: '0 2 * * *' # Minute Hour Day-of-Month Month Day-of-Week (all 5 required) # Executes at 02:00 UTC every day ```

---

Verification Steps

1. Check GitHub UI: Repository → Actions → All workflows. Look for ⚠️ parse error badge. 2. Validate YAML locally: ```bash npm install -g js-yaml js-yaml .github/workflows/schedule.yml ``` 3. Test cron: Paste your expression at [crontab.guru](https://crontab.guru)—it will show next 5 execution times. 4. Check workflow runs: Actions tab shows "scheduled" trigger only if workflow is valid.

---

Still Broken? Check These Too

1. Repository fork settings: Workflows are disabled by default on forks. Go to Actions tab → "I understand, enable workflows." 2. Branch protection rules: Some orgs require specific branch names for scheduled workflows. Verify workflow file is on default branch (main or master). 3. Workflow file permissions: File must be in .github/workflows/ directory with .yml or .yaml extension. Ensure default branch is not shallow-cloned.

---

Version/Behavior Uncertainty Note

As of 2026, GitHub Actions scheduling behavior is consistent across all regions. However, I cannot verify: if GitHub's internal cron parser was updated to support additional syntax (e.g., day-of-week aliases like MON instead of 1). Check [official GitHub Actions documentation](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule) for latest supported cron format.

---

Related Guides

  • [GitHub Actions matrix job failures explained](/?guide=actions-matrix-debug)
  • [Runner logs not showing: debugging GitHub Actions](/?guide=runner-logs-visibility)
  • ---

    Official Documentation

    [GitHub Actions: Scheduled Workflows – Official Docs](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)

    ---

    Found a different variation? Drop it in the comments—2 AM failures are often environment-specific!

    🔥 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