Skip to content
Scout 0.3.0: new checks for reachable Go CVEs, IDOR, version disclosure, directory listing, SRI and mixed content.See the catalog

Safety model

Scout is built to be run by developers against their own systems, including in CI. Several layers keep it from doing damage or testing something you do not own.

The --env you name caps the maximum mode. prod tops out at safe; raising it to active needs an explicit per-target --allow-active. You cannot accidentally run an intrusive scan against production. See Modes & environments.

For any non-local target, active mode also requires a published ownership token — a DNS TXT record or a well-known file that proves the host is yours. Localhost and private IPs are exempt. This is what stops Scout from being pointed at a stranger’s site in aggressive mode.

Scout ships no destructive or exploit payloads. Active checks inject a benign marker and read the response to confirm a weakness; they do not delete data, run attacker code, or complete real transactions. The remaining offensive classes (SSTI, XXE, upload, business-logic, mass-assignment) are scaffolds — registered but inert until their logic is written.

Outbound requests are capped per target (rate_limit, default 10/sec) and checks run with bounded concurrency, so a scan stays polite and will not overwhelm the target.

Scout never widens scope implicitly. A scan touches the target’s own host unless you explicitly add hosts to the scope allowlist.

A window in the config restricts when scans may run, so a scheduled or triggered scan never fires outside an allowed time.

Every request Scout makes carries a signed X-Scout-Scan header, so your own app and logs can recognize scan traffic and distinguish it from a real attacker.

8. Self-hosted, nothing leaves your machine

Section titled “8. Self-hosted, nothing leaves your machine”

Scout is a single binary. Scan history lives in a local SQLite file; the dashboard is embedded. There is no account, no telemetry, and no third-party service in the loop.

Terminal window
scout scan --target https://example.com --mode active --env prod --allow-active --dry-run

--dry-run prints every check that would run, and every one it would skip and why, without sending a single request.