Docs › GitHub Actions scheduled workflow monitoring with RunVouch
GitHub Actions scheduled workflow monitoring with RunVouch
GitHub Actions scheduled workflow monitoring for the workflow that quietly stopped: on: schedule runs on the default branch, only while the repository is active, and only when GitHub's queue has room. A green check on a run that wrote nothing is still a green check.
How it runs on GitHub Actions schedule
One step in the job, before or around your command: runvouch/vouch-action@v1 (a composite action that installs rv and wraps the command), or pip install runvouch and rv run by hand. Source: github.com/runvouch/vouch-action.
Store the key
Repository secret RUNVOUCH_KEY (Settings, Secrets and variables, Actions). Pass it as key: ${{ secrets.RUNVOUCH_KEY }}; for a reusable workflow, add secrets: inherit.
Wrap the job
# .github/workflows/nightly-report.yml
name: nightly-report
on:
schedule: [{ cron: "17 3 * * *" }] # UTC; avoid :00, GitHub queues are busiest there
workflow_dispatch:
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: runvouch/vouch-action@v1
with:
agent: nightly-report
key: ${{ secrets.RUNVOUCH_KEY }}
cadence: 24h # registers the agent: MISSED after 24h + grace
evidence-file: out/report.html # must exist, be non-empty and be modified by the run
cap-run-cost: 2
run: python report.py --out out/report.html
# without the action
- run: pip install runvouch && rv run nightly-report --evidence-file out/report.html -- python report.py
env: { RUNVOUCH_KEY: ${{ secrets.RUNVOUCH_KEY }} }rv fails open: if RunVouch is unreachable the job still runs and you get one warning line.
Register the cadence and caps
rv agent nightly-report --cadence 24h --grace 30m --max-runtime 1h --evidence --cap-run-cost 2
Register the agent once, from anywhere with the key. Cadence is what turns a schedule that stopped into an alert; --evidence makes a run without evidence a failure; the caps pause the agent when it overspends.
What goes silent on GitHub Actions schedule
- In a public repository, scheduled workflows are automatically disabled when no repository activity has occurred in 60 days. The workflow page shows a banner; no e-mail is sent. MISSED fires the first night.
- The schedule event can be delayed during periods of high load, and the docs say a run may not start at the scheduled minute or at all. Set grace to an hour.
- Schedules run on the default branch only; a workflow edited on a feature branch does not change what runs tonight.
- A job that passes with an empty
out/report.htmlis a green run to GitHub and NO_EVIDENCE to RunVouch.
What GitHub Actions schedule does not tell you
GitHub notifies on failed workflow runs, by e-mail or in the notifications inbox, and only for runs that happened. A schedule that was disabled after 60 days of inactivity, a schedule that GitHub dropped under load, or a workflow file that lost its schedule: block in a merge, produces no run and no notification. The last run's timestamp on the Actions tab is the only record that the job used to exist.
What RunVouch detects
| Alert | What it means here |
|---|---|
| MISSED | cadence plus grace passed and no run started |
| FAILED | non-zero exit or a reported failure, with the stderr excerpt |
| NO_EVIDENCE | the run said ok but the file, URL or assertion you required is missing |
| STALLED | a run started and never ended within max runtime |
| RETRY_STORM | the same tool called with identical input many times in one run |
| BUDGET_RUN / BUDGET_DAY | cost cap crossed; the agent is paused until you resume it |
| DRIFT | duration or output size far off its 7-run baseline |
Set up in two minutes
- Get a free key (3 agents, no card) and store it where this page says.
- wrap the job: copy the snippet above into the scheduled job.
- Register the cadence once:
rv agent nightly-report --cadence 24h --grace 30m --evidence, or let the first run create the agent and set the cadence on the dashboard. - Send one test alert:
curl -X POST https://api.runvouch.com/v1/settings/test-alert -H "X-API-Key: $RUNVOUCH_KEY". The next missed, failed or empty run reaches the same channels.
Need a key? Get a free key · Stuck? contact