Skip to content

Schedules

A schedule runs an inspection automatically on a recurring cron expression - for example, every night at 2 AM or every Monday morning. Each scheduled run is identical to a manually triggered one.


Create a schedule

  1. Click Schedules in the sidebar, then New Schedule.
  2. Complete the wizard (same steps as Running an Inspection - targets, scope, output).
  3. On the final step, set the cron expression for when to run.

Cron expression reference

┌─── minute (0–59)
│  ┌─── hour (0–23)
│  │  ┌─── day of month (1–31)
│  │  │  ┌─── month (1–12)
│  │  │  │  ┌─── day of week (0–6, Sunday=0)
│  │  │  │  │
*  *  *  *  *
Expression Meaning
0 2 * * * Every day at 02:00 UTC
0 2 * * 1 Every Monday at 02:00 UTC
0 2 1 * * 1st of every month at 02:00 UTC
0 */6 * * * Every 6 hours
0 9 * * 1-5 Weekdays at 09:00 UTC

All times are UTC

Convert to your local timezone before setting the expression.


Next run time

The Schedule Detail page shows Next Run - the exact time the scheduler will next fire this schedule, computed server-side from the cron expression.


Enable / disable a schedule

Toggle a schedule on or off from the Schedule List without deleting it. Disabled schedules do not fire.


Schedule detail and trend charts

The Schedule Detail page (/schedules/{id}) shows:

  • Compliance trend - how your compliance score for the primary framework has changed across runs
  • WAF trend - how your Well-Architected overall score has trended over time
  • Run history - all runs triggered by this schedule

PR checks per schedule

Each schedule can independently enable or disable PR blocking and configure its own severity threshold. Open the Schedule Detail page and click Edit:

  • Enable PR checks - when on, pull requests targeting repos in this schedule's scope trigger an inspection scan and post a GitHub Check Run or GitLab Commit Status.
  • Block severity ≥ - choose CRITICAL, HIGH, MEDIUM, or NONE. Leave unset to inherit the global threshold from Settings → Integrations.

This lets you enforce strict blocking on production schedules while only notifying on staging or feature-branch schedules.

How threshold inheritance works

When a PR webhook arrives, VirtualSutra looks up the schedule matching that repository. If the schedule has pr_block_severity set, it uses that value. If it is null, it falls back to the global pr_block_severity in the GitHub/GitLab installation config.


Edit or delete a schedule

From the Schedule Detail page, use the Edit or Delete actions. Deleting a schedule does not delete historical run data.


Schedules not visible?

The Schedules nav item requires NEXT_PUBLIC_SCHEDULES_ENABLED=true on the UI container. Contact your administrator if you do not see it.