Scheduling Recurring Scans
Run DAST scans on a cron β daily, weekly, monthly, or a custom expression β without anyone having to click + DAST Scan each time.
Where schedules liveβ
All scheduled scans (DAST and API) are managed from one page:
Scans β Scheduled Scans
The top of the page shows totals: Total Endpoints Tested, Total Scheduled Scans, Total Applications, and the Highest Frequency job. The table below lists each schedule with its job type (API or WebApp), target URL, frequency, next run time, and enable/disable toggle.
Create a scheduleβ
Go to Scans β Scheduled Scans.
Click + New Schedule in the top right, then pick DAST Scan from the dropdown (the other option is API Scan).
The Schedule DAST Scan dialog opens. It has five steps:
- Schedule Configuration β name + frequency (below).
- Select Mode β same as the ad-hoc Create Scan dialog (Crawl vs Scan, target URL, test-run environment).
- Authentication β same four strategies (None / Form / Token / AI-driven) plus Pre-Auth fields. See Authentication.
- Crawling & Discovery β crawl mode, depth, pages, timeouts, domain filters.
- Security Tests β Smart/Thorough depth, test categories, injection points, HTTP methods.
Steps 2β5 are identical to the Create a Scan flow β re-read that page if you need field-level detail.
Click Save. The schedule appears in the list with its next-run time and an enable/disable toggle.
Schedule frequencyβ
Step 1 of the dialog has three top-level modes:
| Mode | Use when |
|---|---|
| Repeat | Standard recurring schedule (daily / weekly / monthly + time-of-day). |
| Once | Fire exactly once at a specific date/time. Useful for release rehearsals. |
| Custom | Any cron expression β power-user option for "every 4 hours MonβFri" and the like. |
Repeat optionsβ
- Daily β one or more times per day at the chosen
HH:MM. - Weekly β pick the days of the week (S Β· M Β· T Β· W Β· T Β· F Β· S buttons) plus the time.
- Monthly β pick day-of-month and time.
The dialog shows a plain-English preview at the bottom, e.g. "This job will execute at 08:00, only on monday, tuesday, wednesday, thursday, and friday." Use it to sanity-check before saving.
Schedule recipesβ
| Scenario | Frequency | Why |
|---|---|---|
| Continuous prod monitoring | Daily @ 02:00 | Catch drift overnight, report before standup. |
| Pre-deploy weekly regression | Weekly, Mon @ 22:00 | Gate Monday-morning releases. |
| Monthly compliance audit | Monthly, day 1 @ 09:00 | Deliverable for SOC2 / ISO reviews. |
| Dev-env multi-daily | Custom: 0 12,20 * * 1-5 | Two passes per workday during active development. |
Manage existing schedulesβ
From the Scheduled Scans page:
- Enable / disable β the toggle on each row. Pauses execution without deleting.
- Edit β the pencil icon. Re-opens the 5-step dialog to change config or frequency.
- Delete β the trash icon. Historical runs stay; only the schedule is removed.
- Filter β tabs for
All Β· One Time Β· Daily Β· Weekly Β· MonthlyandAll Β· API Scan Β· DAST Scan. - Search β find a schedule by name.
If you're pausing a schedule for a release freeze or holiday, disable it. Re-enabling preserves all settings β deleting forces you to re-enter them.
Troubleshootingβ
Schedule didn't runβ
- Disabled toggle β most common. Check the toggle column.
- Start/end window β confirm the schedule's next-run time is in the future.
- Target unreachable β the target URL must resolve from the Levo cloud runner (or the on-prem worker you chose in Step 2).
- Auth broke β rotated password? Edit the schedule and re-enter credentials.
Variable scan durationβ
Scan duration naturally varies with app size and load. If it drifts too far:
- Lower
max_pagesandmax_depthin Crawling & Discovery. - Switch
Scan depthfrom Thorough to Smart in Security Tests. - Stagger schedules so they don't overlap.
Next stepsβ
- Export reports β pair schedules with automated SARIF delivery.
- CI/CD integration β when git push is a better trigger than cron.
levo-dast.ymlβ version-control scan config outside the scheduler.