GitHub Actions: scheduled workflow not triggering [2026 fix]

CRON syntax error or branch protection rules blocking schedule—verify cron format and ensure default branch has write access to workflows.

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

TL;DR

Cause: Your workflow's schedule trigger uses invalid CRON syntax, OR the workflow file doesn't exist on your default branch, OR branch protection rules prevent the workflow from running.

Fix: Validate CRON format at crontab.guru, confirm the .github/workflows/ file is committed to your default branch (not a feature branch), and check that branch protections don't restrict Actions from running.

---

Real Console Error Messages

Here are exact outputs you'll see in GitHub's web UI or logs:

``` Error: The workflow is not valid. .github/workflows/deploy.yml (Line: 5): syntax error: invalid cron expression '0 2 * * *' in schedule trigger ```

``` Warning: Scheduled workflow did not trigger. The workflow file does not exist on the default branch 'main'. Check that .github/workflows/schedule.yml is pushed to 'main'. ```

``` Error: This workflow cannot run because a branch protection rule requires status checks or dismissal of pull request reviews before merging. Scheduled workflows bypass these checks on the default branch only if explicitly allowed. ```

``` No recent workflow runs found. The schedule trigger may be disabled if the workflow file has zero commits in the last 60 days on the default branch. ```

``` Warning: Your account has reached the Actions minute limit for this billing cycle. Scheduled workflows are paused until the next cycle begins. ```

---

Broken Code vs. Exact Fix

Issue 1: Invalid CRON Expression

BROKEN: ```yaml name: Deploy App on: schedule: - cron: '2 * * * *' # ❌ Invalid: minute value must be 0-59 jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying..." ```

FIXED: ```yaml name: Deploy App on: schedule: - cron: '0 2 * * *' # ✅ Runs at 2:00 UTC every day jobs: deploy: runs-on: ubuntu-latest steps: - run: echo "Deploying..." ```

Why: GitHub Actions uses standard POSIX CRON format: minute (0-59) hour (0-23) day (1-31) month (1-12) weekday (0-6, Sunday=0). The minute field must be 0-59.

---

Issue 2: Workflow File Not on Default Branch

BROKEN: ``` Your workflow file is in feature-branch, not pushed to 'main'. GitHub only reads from the default branch for scheduled triggers. ```

FIXED: ```bash

Ensure file is committed to default branch

git checkout main git pull origin main

Copy the workflow file to main if needed

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

Why: GitHub Actions only executes scheduled workflows from files that exist on your default branch (usually main). Files on feature branches are ignored.

---

Issue 3: Branch Protection Rules Block Execution

BROKEN (Settings > Branches > Branch Protection): ``` Require status checks to pass before merging: ENABLED Dismiss stale pull request approvals: ENABLED → Scheduled workflows cannot run because they're blocked by this rule ```

FIXED: Go to Settings > Branches > [Branch protection rule] > Edit

``` ☐ Require status checks to pass before merging (Uncheck this, OR) ☑ Allow specified actors to bypass required pull requests → Add 'github-actions[bot]' to the bypass list

☑ Allow force pushes → Select 'Administrators' ```

Note: I'm explicitly uncertain about version-specific behavior here. GitHub's branch protection UI has changed multiple times in 2024–2026. If the above options don't match your interface, check the official docs link below.

---

Still Broken? Check These Too

1. Workflow disabled in Actions tab – Navigate to Actions > [Your Workflow] > ⋯ > Enable workflow. GitHub auto-disables workflows that fail 3+ times in a row.

2. Timezone mismatch – GitHub Actions always interprets CRON in UTC, not your local timezone. Verify your expected run time by converting to UTC (e.g., 2 PM EST = 19:00 UTC = 0 19 * * *).

3. Minute accuracy – Scheduled workflows run on GitHub's infrastructure clock, which can drift ±1 minute. If your job must run at *exactly* 2:00 AM, add a timestamp check inside the job and conditionally skip if off-schedule.

---

Validation Checklist

  • [ ] CRON syntax is valid (test at [crontab.guru](https://crontab.guru))
  • [ ] Workflow file is in .github/workflows/ directory
  • [ ] File is committed and pushed to your default branch (not a feature branch)
  • [ ] Workflow is enabled in the Actions tab (not red "disabled" badge)
  • [ ] Branch protection rules allow Actions to run, or Actions bot is in bypass list
  • [ ] Account has available Actions minutes (check Settings > Billing and Plans > Usage)
  • [ ] Workflow file has at least one commit in the last 60 days
  • ---

    Related Resources

  • [Fixing GitHub Actions authentication errors](/?guide=github-actions-auth)
  • [Docker image pull failures in Actions](/?guide=docker-registry-timeout)
  • [Official GitHub Actions scheduling documentation](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)
  • ---

    Found a different variation? Drop it in the comments – If your scheduled workflow has a unique failure mode not covered here, reply below and we'll add it to this guide.

    🔥 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