The native scan is Vigolium’s deterministic, Go-based scanning pipeline, fast, modular, and AI-free. This page is a hands-on tour of running native scans from the CLI, with a focus on stateless scanning.
Use this file to discover all available pages before exploring further.
Use stateless scanning for CI/CD pipelines, scripting, AI-agent integration, and quick ad-hoc checks. For the conceptual deep-dive see Scanning Modes Overview; for the full strategy reference see Strategies.
scan-url and scan-request never touch a database. scan --stateless creates a temporary SQLite database, runs every requested phase, exports results, and deletes the database on exit.
Pass -o/--output (with --format) when using --stateless, otherwise results are discarded along with the temporary database. Vigolium prints a warning if you forget. --stateless and --db are mutually exclusive.
# Only injection-class modules (fuzzy match on ID/name)vigolium scan-url -m sqli -m xss "https://example.com/search?q=test"# Filter by tagvigolium scan-url --module-tag injection https://example.com/api/data# Skip passive analysis and insertion-point fuzzing for the fastest resultvigolium scan-url --no-passive --no-insertion-points https://example.com/api/data
Run a discovery/spider phase before the scan (these promote scan-url to the full pipeline and require a database, pass --db):
# From a file containing a raw HTTP requestvigolium scan-request -i request.txt# From stdinprintf 'GET /api/users?id=1 HTTP/1.1\r\nHost: example.com\r\n\r\n' \ | vigolium scan-request# From a curl command (auto-detected)echo "curl -X POST -d 'user=admin' https://example.com/login" \ | vigolium scan-request
Override the host when the request file has only a path:
Run discovery, spidering, and dynamic-assessment with no persistent state. --stateless works on both scan and run:
# Full pipeline, JSONL out, nothing left behindvigolium scan --stateless -t https://example.com --format jsonl -o results# Add content discovery, write both JSONL and HTMLvigolium scan --stateless -t https://example.com \ --discover --format jsonl,html -o scan-output# A single phase, statelesslyvigolium run dynamic-assessment --stateless -t https://example.com \ --format jsonl -o results
Multiple targets from a file, each target gets an isolated temporary database, and the output filename is suffixed per host so results don’t overwrite:
For stateless runs, -o is the base path, Vigolium appends the correct extension per format and materializes every requested format from the temporary database before tearing it down.