Scheduled workflows that run on time.
GitHub's schedule trigger can start late, or skip a run, when Actions is busy. cron.surf will start your workflow at the exact minute, in your time zone, and email you when a run fails or never starts.
Get an email when it launches
on:- schedule:- - cron: "0 17 * * *" # 9am PST, 10am PDT+ workflow_dispatch:+ # cron.surf: 0 9 * * * America/Los_Angeles jobs: # unchanged
Why a scheduled run starts late
Delayed under load
“The schedule event can be delayed during periods of high loads of GitHub Actions workflow runs.” The top of every hour is the busiest.
GitHub DocsSometimes dropped
“If the load is sufficiently high enough, some queued jobs may be dropped.” Nothing tells you a run was skipped.
GitHub DocsSwitched off after 60 days
In a public repository, scheduled workflows are disabled when there has been no activity for 60 days.
GitHub DocsA workflow_dispatch call starts a run right away. cron.surf will make that call for you at the minute you wrote, then watch the run to the end.
How it will work
Install the app
Pick an account and the repositories to cover. One repository is fine. You can change the list any time in GitHub settings.
Swap one line and push
Replace schedule with a # cron.surf: comment and add workflow_dispatch:. A check on your commit shows the next run time.
Or hand step 2 to your agent
At launch you can paste this into Claude Code, Codex or Cursor. It finds every scheduled workflow, converts the time to your zone, and opens a pull request.
Read https://cron.surf/github/agent.md and move this repo's scheduled workflows to cron.surf.What you get
On the minute
Runs start at the time you wrote, in any IANA time zone, with daylight saving handled.
Every run checked
Each run is followed to its result. A failed run, or one that never starts, sends you an email.
Checks on every push
Each commit that touches a workflow gets a check with the next run time, or the exact mistake in the line.
A badge for your README
Show the on-time rate of a workflow, updated after every run.
Planned pricing
Questions
When does it launch?
We are building it now. Leave your email above and you will get one message on launch day.
What will the app access?
It reads workflow files (Contents: read), starts workflows (Actions: write) and posts checks (Checks: write). It only starts workflows that carry a # cron.surf: line, and it never writes to your code.
Do runs cost extra Actions minutes?
No more than before. Each run is the same workflow run you had; only the trigger changes.
How do I go back?
Put the schedule block back and remove the comment, or uninstall the app.
Which cron syntax can I use?
Standard five-field cron, the same as GitHub, plus an optional time zone. You can check any expression with the cron.surf tool today.