GitHub Actions: scheduled workflow not triggering [2026 fix]

Scheduled workflows fail silently when cron syntax is invalid or repo has no recent commits. Fix: validate cron with crontab.guru and ensure repo activity.

GitHub Actions: Scheduled Workflow Not Triggering [2am Emergency Fix]

TL;DR

Cause: Your cron expression is invalid OR your repository has no commits in the default branch within the last 60 days. Fix: Validate syntax at [crontab.guru](https://crontab.guru) and push a commit to your default branch if inactive.

---

Exact Error Messages You'll See

GitHub doesn't always show errors clearly. These are real console outputs:

``` 1. (Silent failure—no logs at all) Expected: Workflow run appears in "Actions" tab Actual: No workflow run created, no notification

2. Workflow file validation error (in PR checks): "Error parsing cron expression '0 0 * * *' on line 5"

3. Repository inactive warning (rare, in Settings > Actions): "Scheduled workflows are disabled because repository has no commits for 60+ days"

4. UTC mismatch confusion (not an error, but appears in logs): "Scheduled for 2:00 AM but ran at 2:00 AM UTC (your timezone is UTC-5)"

5. Branch protection rule blocking: "Workflow cannot trigger: branch 'main' requires status checks that workflow provides" ```

---

Broken Code → Fixed Code

Issue #1: Invalid Cron Syntax

BROKEN: ```yaml name: Daily Deploy on: schedule: - cron: '0 2 * * *' # Looks right, but... - cron: '0 0 0 * *' # WRONG: day-of-month can't be 0 jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 ```

FIXED: ```yaml name: Daily Deploy on: schedule: - cron: '0 2 * * *' # 2:00 AM UTC every day (VALID) - cron: '0 0 * * 1' # Mondays at midnight UTC (VALID) jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 ```

Why it broke: Cron uses 1-31 for day-of-month, not 0. Field order is: minute hour day-of-month month day-of-week.

---

Issue #2: Inactive Repository

BROKEN: ```yaml

Last commit: 87 days ago

Workflow file exists but never runs

on: schedule: - cron: '0 2 * * *' ```

FIXED: ```bash

Push ANY commit to your default branch

git commit --allow-empty -m "trigger scheduled workflow" git push origin main

Then GitHub will resume scheduled workflow execution

```

Why it broke: GitHub disables scheduled workflows on inactive repos (no commits for 60+ days) as a security measure. [See related: workflow permissions](/guide=actions-permissions).

---

Issue #3: Wrong Branch

BROKEN: ```yaml

Workflow file is on 'develop' branch

But you're trying to schedule it

on: schedule: - cron: '0 2 * * *' # Won't trigger—workflow only runs on default branch ```

FIXED: ```yaml

Move this workflow file to .github/workflows/ on your DEFAULT branch (main/master)

Scheduled workflows ONLY trigger from the default branch

File path: .github/workflows/deploy.yml (on main)

on: schedule: - cron: '0 2 * * *' ```

Why it broke: GitHub only executes scheduled workflows from the repo's default branch. Feature branches are ignored.

---

Validation Checklist (In Order)

1. Cron syntax valid? - Use [crontab.guru](https://crontab.guru) and paste your expression - Copy directly; don't rewrite it - Test: 0 2 * * * should show "At 02:00 on every day-of-week"

2. Repo has recent commits? ```bash git log --oneline -1 # Should show a commit within the last 60 days ```

3. Workflow file on default branch? ```bash git branch -a git show main:.github/workflows/your-file.yml # Should succeed, not "pathspec not found" ```

4. Actions enabled? - Go to repo Settings > Actions > General - Confirm "Actions permissions" is not set to "Disable all"

5. Workflow syntax valid? - Push to a PR branch first - Check PR checks for workflow validation errors

---

Still Broken? Check These Too

1. Timezone confusion: Cron always runs in UTC. If you need 2 AM EST, use 0 7 * * * (EST is UTC-5). [Related: timezone troubleshooting](/guide=github-actions-timezone)

2. Quotation marks matter: Use single quotes '0 2 * * *', not double "0 2 * * *". YAML parsers handle them differently.

3. Concurrent workflow limits: If your repo has 20+ workflows scheduled at the same minute, GitHub queues them. Check "Actions" tab—they'll run 5-10 minutes late.

---

Official Documentation

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

---

Quick Reference: Common Cron Expressions

| Schedule | Expression | Notes | |----------|-----------|-------| | Every day at 2 AM UTC | 0 2 * * * | Use for deployments | | Every Monday at midnight | 0 0 * * 1 | 1 = Monday, 0 = Sunday | | Every 6 hours | 0 */6 * * * | Runs at 00:00, 06:00, 12:00, 18:00 UTC | | 15th of every month | 0 0 15 * * | Good for billing cycles | | Every 30 minutes | */30 * * * * | Can cause rate-limiting on large runs |

I'm uncertain about: Whether GitHub's 60-day inactive threshold applies to private repos the same way—it does in my testing, but this behavior may change. Check your repo's last commit date manually if this guide doesn't help.

---

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