Skip to content

Running a Scan

The New Scan screen (Administration → Operations → New Scan) is where you configure and launch a posture scan. This guide covers every control.

RequirementDescriptionWhy it’s needed
scans.run permissionYour role can launch scansThe Launch button is gated by it
A connected cloud accountGCP / AWS / Azure / M365 / WorkspaceProvides the scan target and credentials
Valid licensePlan covers the scan you’re runningScanning is blocked while the license is invalid

Select GCP, AWS, Azure, or All Clouds. A quick-scan template selector can pre-fill the provider and profile for common cases.

Pick from Connected Accounts (populated from your saved connections) to auto-fill the target. If you haven’t connected the cloud yet, use Add / Connect Provider to jump to Deployments.

Use the scope tabs:

ScopeTarget
ProjectOne or more project IDs
FolderA folder ID (all projects beneath it)
OrgAn organization ID
CustomA free-form multi-line list (up to 20 entries)

Profiles select which checks run. Common choices:

ProfileUse it for
mvp15A fast 15-check baseline (good first run)
fullComprehensive coverage
iam / networking / storage / compute / gkeDomain-focused scans
cisCIS benchmark compliance
auditThe audit collector
red_team / blue_teamOffensive / defensive emphasis (Red Team needs Simulate mode or higher)
web_security / host_securityWeb app / host-OS hardening
🔥 EVERYTHINGEverything at once — all clouds, host, Web PT, audit, and SARIF
OptionEffect
Mock ModeUse demo data instead of calling the cloud (great for trials/demos)
SARIF OutputAlso emit a SARIF report (for code-scanning pipelines)
Host Security ScanAdd OS/host hardening checks; choose an SSH method (IAP Tunnel / Direct SSH / Metadata Only)
Audit CollectorRun the audit engine alongside the scan (shown for full/EVERYTHING)
Web PTActive HTTP penetration testing against supplied target URLs

Click Pre-scan Permission Check (POST /preflight) to see, per service, exactly which permissions are granted or missing — with a copyable report. Fix any gaps before launching.

Enter a Client / scan name (it appears in reports), then click Launch (POST /scans). The scan starts asynchronously and appears in Scan History.

  • The scan shows Completed in Scan History.
  • Findings appear under Findings & Risk → Issues.
  • The Dashboard updates with the new posture.
Terminal window
curl -X POST "https://<your-host>/scans" \
-H "X-API-Key: cspm_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-unique-key-001" \
-d '{
"projects": ["my-gcp-project-id"],
"profile": "full",
"run_audit": true,
"sarif": true
}'

Returns 202 Accepted with a scan_id; poll GET /scans/{scan_id}. Provider-specific launchers also exist (/scans/gcp, /scans/aws, /scans/azure, /scans/m365, /scans/workspace). The optional Idempotency-Key header prevents duplicate launches. See the API Reference.

IssueCauseResolution
Launch is disabledMissing scans.run or a required fieldCheck your permissions and that scope + profile are set
Preflight shows denied permissionsConnected account lacks read rolesGrant the listed roles, then re-check
Scan errors immediatelyExpired credentialsRe-authenticate the account; see Troubleshooting