Vigolium CLI
Operator's guide for the Vigolium high-fidelity web vulnerability scanner. Covers every command, flag, workflow pattern, scanning strategy, AI agent modes, and JavaScript extension authoring. Full documentation at docs.vigolium.com.
Role Definition
Vigolium is a CLI-first vulnerability scanner that operates in multiple modes:
- Standalone scanner:
scan,scan-url,scan-request,run - REST API server with traffic ingestion:
server,ingest - AI agent integration (all dispatch flows through the in-process olium engine — no subprocess SDK backends):
agent query— single-shot prompt (template-based or inline) for code review / endpoint discoveryagent autopilot— autonomous AI-driven scanning that drives the vigolium CLIagent swarm— AI-guided targeted or full-scope scanning (add--discoverfor full-scope)agent olium(aliasvigolium olium/ol) — interactive TUI / one-shot olium agentagent audit— unified driver dispatcher driving the embedded vigolium-audit harness and/or piolium (--driver=auto|both|audit|piolium)agent session— list / inspect agent run sessions
- Extension runner:
run extension --ext custom-check.jsfor custom JS scanning logic - JavaScript executor:
jsfor ad-hoc scripting with fullvigolium.*API access - Session log viewer:
log <uuid>streamsruntime.logfor native + agentic sessions (tail / follow / DB fallback) - Data import:
import <path>ingests audit output folders (vigolium-results/) and JSONL exports - Cloud storage:
storage ls/upload/download/rm/presign/resultsmanages per-project objects in the configured bucket - Lifecycle:
initsets up~/.vigolium/,config cleanwipes it back to a fresh state
Olium provider drivers (set via agent.olium.provider or --provider):
openai-compatible(default): any OpenAI Chat-Completions-compatible endpoint viaagent.olium.custom_provider.base_url/model_id(default points at a local Ollama athttp://localhost:11434/v1, modelgemma4:latest)openai-codex-oauth: OpenAI Codex via~/.codex/auth.json(ChatGPT subscription)anthropic-api-key: Anthropic Messages API via$ANTHROPIC_API_KEY/--llm-api-keyanthropic-oauth: Anthropic Claude via Claude Code OAuth bearer token (claude setup-token)openai-api-key: OpenAI Chat Completions via$OPENAI_API_KEY/--llm-api-keyanthropic-cli: Shells out to the localclaudeCLI binary (Claude Max subscribers)anthropic-vertex: Anthropic Claude on GCP Vertex AI via service-account JSON (--oauth-cred/$GOOGLE_APPLICATION_CREDENTIALS); requires aclaude-*model (e.g.claude-opus-4-6)google-vertex: Gemini-native on GCP Vertex AI via service-account JSON; requires agemini-*model (e.g.gemini-3.1-pro)
This skill helps you pick the right command, flags, and workflow for any security testing task.
Command Decision Tree
Use this to find the right command quickly:
| I need to... | Use |
|---|---|
| Scan one or more target URLs | vigolium scan -t <url> |
| Scan a single URL with custom method/headers | vigolium scan-url <url> --method POST --body '...' |
| Scan a raw HTTP request from file/stdin | vigolium scan-request -i request.txt |
| Run only one scan phase | vigolium run <phase> or scan --only <phase> |
| Run a custom JS extension against a target | vigolium run extension -t <url> --ext custom-check.js |
| Import an OpenAPI/Swagger spec and scan | vigolium scan -I openapi -i spec.yaml -t <base-url> |
| Import Burp/HAR/cURL traffic | vigolium scan -I burp -i export.xml |
| Filter modules by tag | vigolium scan -t <url> --module-tag spring --module-tag injection |
| Ingest traffic into database without scanning | vigolium ingest -t <url> -I openapi -i spec.yaml |
| Start the API server | vigolium server |
| Start server and auto-scan new traffic | vigolium server -t <url> -S |
| Run AI code review on source code | vigolium agent query --prompt-template security-code-review --source ./src |
| Run AI agent with inline prompt | vigolium agent query 'review this code for vulnerabilities' |
| Autonomous AI-driven scanning | vigolium agent autopilot -t <url> |
| Autopilot natural-language prompt | vigolium agent autopilot "scan VAmPI at ~/src/VAmPI on localhost:3005" |
| Autopilot with intensity preset | vigolium agent autopilot -t <url> --intensity deep |
| Autopilot scanning a PR diff | vigolium agent autopilot -t <url> --source ./src --diff main...feature-branch |
| Full-scope AI-driven scan (discovery → plan → scan → triage) | vigolium agent swarm -t <url> --discover |
| Deep targeted vulnerability scan on specific endpoint | vigolium agent swarm -t <url> |
| Swarm natural-language prompt | vigolium agent swarm "scan source at ~/src/app on localhost:3005" |
| Swarm with curl command input | vigolium agent swarm --input "curl -X POST <url> -d '...'" |
| Swarm with source code (route discovery + SAST + code audit) | vigolium agent swarm -t <url> --source ./src |
| Swarm with intensity preset | vigolium agent swarm -t <url> --intensity quick |
| Swarm with background vigolium-audit | vigolium agent swarm -t <url> --source ./src --audit lite |
| Swarm with custom instructions | vigolium agent swarm -t <url> --instruction "Focus on GraphQL" |
| Source analysis only (no scan) | vigolium agent swarm -t <url> --source ./src --source-analysis-only |
| Foreground vigolium-audit (lite/balanced/deep) | vigolium agent audit --driver=audit --mode deep --source . |
| Audit a remote repo | vigolium agent audit --driver=audit --mode lite --source https://github.com/org/repo |
| Confirm PoCs for existing findings | vigolium agent audit --driver=audit --mode confirm --source ./audit-tree |
| Drive the audit yourself interactively | vigolium agent audit -i --source ./src |
| Foreground piolium (Pi-native) audit | vigolium agent audit --driver=piolium --mode balanced --source . |
| Piolium hail-mary file-by-file hunt | vigolium agent audit --driver=piolium --mode longshot --source ./src --plm-longshot-langs python,go |
| Piolium with custom Pi provider/model | vigolium agent audit --driver=piolium --pi-provider vertex-anthropic --pi-model claude-opus-4-6 --source . |
| Run vigolium-audit, fall back to piolium only if no claude/codex CLI | vigolium agent audit --source . |
| Run vigolium-audit + piolium back-to-back unconditionally | vigolium agent audit --driver=both --source . |
| Run only one driver under unified audit | vigolium agent audit --driver=audit --source . |
| Audit from a gs:// archive | vigolium agent audit --source gs://my-project/snapshots/app.tar.gz |
| Interactive olium TUI | vigolium olium (alias vigolium ol) |
| One-shot olium prompt to stdout | vigolium olium -p "explain this codebase" |
| Olium via anthropic-vertex (Claude on Vertex) | vigolium olium --provider anthropic-vertex --gcp-project my-gcp --gcp-location us-east5 --model claude-opus-4-6 |
| Olium via google-vertex (Gemini-native) | vigolium olium --provider google-vertex --model gemini-3.1-pro |
| Browse stored HTTP traffic | vigolium traffic or vigolium traffic <search> |
| Browse findings/vulnerabilities | vigolium finding or vigolium db ls --table findings |
| Replay one request with mutations + baseline diff (external-agent confirm step) | vigolium replay --record-uuid <uuid> -m 'name=id,payload=1 OR 1=1' |
| Replay a finding's HTTP evidence with a payload | vigolium replay --finding-id 42 -m 'name=q,payload=<svg/onload=alert(1)>' |
| Replay an arbitrary curl/raw/burp/base64/URL input | vigolium replay -i "curl -X POST <url> -d '...'" |
| Persist cookies across replays (multi-step auth) | vigolium replay --session-id login --record-uuid <uuid> |
| Bulk-replay every matched record through the diff engine (JSONL out) | vigolium replay --all --proxy http://127.0.0.1:8080 -c 5 |
| Bulk-replay a standalone export through Burp (project scoping off) | vigolium replay -S --db scan.sqlite --all --proxy http://127.0.0.1:8080 |
| Filter findings by module type or source | vigolium finding --module-type active --finding-source audit |
| View database statistics | vigolium db stats |
| Export results to JSONL/HTML | vigolium export --format jsonl -o results.jsonl |
| Export a browsable file tree (traffic + findings as files) | vigolium scan -t <url> --format fs -o run |
| Export the run's standalone SQLite DB | vigolium scan -t <url> -S --format sqlite -o run.sqlite |
| Fail CI when a finding at/above a severity is present | vigolium scan -t <url> --fail-on high |
| Split stateless multi-target output into per-host files | vigolium scan -T targets.txt -S --split-by-host --format fs |
| Compact agent-friendly JSON (finding + linked records) | vigolium finding -j --with-records --min-severity high |
| Mirror ingested traffic + findings to a live file tree | vigolium server --mirror-fs ./mirror |
| Clean database records | vigolium db clean --host <hostname> |
| List available scanner modules | vigolium module ls or vigolium scan -M |
| Enable/disable specific modules | vigolium module enable xss / module disable sqli |
| Manage JavaScript extensions | vigolium ext ls / ext docs / ext preset |
| Execute arbitrary JS with vigolium API | vigolium js --code 'vigolium.http.get("https://example.com")' |
| Execute JS from a file | vigolium js --code-file script.js |
| Execute JS from stdin | echo 'vigolium.utils.md5("test")' | vigolium js |
| View/modify configuration | vigolium config ls / config set <key> <value> |
| View scanning strategies | vigolium strategy |
| Manage scope rules | vigolium scope view |
| Link source code repository | vigolium source add --hostname <host> --path ./src |
| Clone and scan with source code | vigolium scan -t <url> --source-url https://github.com/org/repo |
| Manage projects | vigolium project create <name> / project list / project use <name> |
| List cloud-storage objects for current project | vigolium storage ls (add --prefix ugc/ or --tree) |
| Upload a file to project storage | vigolium storage upload ./report.pdf --key reports/q4.pdf |
| Download an object | vigolium storage download ugc/foo.tar.gz -o foo.tar.gz |
| Download a scan's result bundle | vigolium storage results <scan-uuid> |
| Generate a presigned GET/PUT URL | vigolium storage presign --key ugc/foo.tar.gz --method GET --expiry 1h |
| Delete cloud-storage objects | vigolium storage rm ugc/foo.tar.gz (add -F to skip confirm) |
| List agent sessions | vigolium agent session or vigolium agent session <uuid> |
| Seed database with sample data | vigolium db seed |
| Import findings from file | vigolium finding load -i findings.jsonl |
| Import audit output folder or JSONL export | vigolium import <path> |
| View runtime logs for a scan/agent session | vigolium log <uuid> (add -f to follow, --tail N) |
| List all native + agentic sessions with log status | vigolium log ls |
Initialize ~/.vigolium/ with defaults |
vigolium init (add --force to regenerate) |
Wipe ~/.vigolium/ and reinitialize |
vigolium config clean |
| Validate extension files | vigolium ext lint --ext custom-check.js |
| Evaluate JS inline | vigolium ext eval 'vigolium.log.info("hello")' |
| Manage auth (lint, list, load, totp) | vigolium auth lint / auth list / auth load / auth totp |
| Run health check on installation | vigolium doctor |
Reference Guide
Load detailed reference based on what you need:
| Topic | Reference | Load When |
|---|---|---|
| Scanning commands | references/scanning-commands.md |
scan, scan-url, scan-request, run flags and options |
| Server & ingestion | references/server-and-ingestion.md |
server, ingest, traffic command flags |
| Agent commands | references/agent-commands.md |
agent, agent query, agent autopilot, agent swarm, agent olium, agent audit, agent session — flags, intensities, providers, templates |
| Session / auth config | references/session-auth-config.md |
--auth-file/--auth flags, YAML format, extract rules, authenticated scanning setup |
| Data & management | references/data-and-management.md |
db, module, extensions, js, config, scope, source, strategy, export, project, storage |
| Complete flag index | references/flags-reference.md |
Looking up any specific flag by name |
| Writing extensions | references/writing-extensions.md |
Creating custom JS scanner modules, extension API |
Scanning Strategies
Strategies control which phases run during a scan. Use --strategy <name>:
| Strategy | ExtHarvest | Discovery | Spidering | KnownIssueScan | Audit | Source-Aware |
|---|---|---|---|---|---|---|
| lite | no | no | no | no | yes | no |
| balanced | no | yes | yes | yes | yes | no |
| deep | yes | yes | yes | yes | yes | no |
| whitebox | no | yes | no | yes | yes | yes |
- Default strategy is set in config:
scanning_strategy.default_strategy - Balanced is the default when
--strategyis not specified - View all strategies:
vigolium strategy ls - Whitebox requires
--source <path>or--source-url <git-url>to link application source code
Scan Phases
Vigolium runs up to 8 phases. Use --only <phase> to isolate one, or --skip <phase> to skip phases.
| Phase | Aliases | Description |
|---|---|---|
ingestion |
— | Parse and store input (URLs, specs, files) into the database |
discovery |
deparos, discover |
Adaptive content discovery (directories, files, hidden endpoints) |
external-harvest |
— | Aggregate URLs from Wayback Machine, Common Crawl, AlienVault OTX |
spidering |
spitolas |
Headless browser crawling for JS-driven routes and dynamic content |
known-issue-scan |
— | Security posture assessment via Nuclei templates + Kingfisher secrets |
sast |
— | Static analysis on linked source code (requires --source) |
audit |
dynamic-assessment |
Core vulnerability scanning with active and passive modules |
extension |
ext |
Run only JavaScript extension modules (enables extensions, skips built-in modules) |
--onlyand--skipare mutually exclusive- Phase aliases work with both flags:
--only deparosequals--only discovery,--only extequals--only extension - Run a single phase directly:
vigolium run discover -t <url>
Input Formats
Use -I <format> to specify the input type. Auto-detection works for OpenAPI specs.
| Format | Flag | Example |
|---|---|---|
| URLs (default) | -I urls |
-t https://example.com or -T targets.txt |
| OpenAPI 3.x | -I openapi |
-I openapi -i spec.yaml -t https://api.example.com |
| Swagger 2.0 | -I swagger |
-I swagger -i swagger.json |
| Burp XML | -I burp |
-I burp -i burp-export.xml |
| cURL commands | -I curl |
-I curl -i requests.txt |
| Nuclei templates | -I nuclei |
-I nuclei -i templates/ |
| HAR archive | -I har |
-I har -i traffic.har |
| Postman collection | -I postman |
-I postman -i collection.json |
| stdin | — | cat urls.txt | vigolium scan -i - |
OpenAPI flags: --spec-url (use spec servers), --spec-header (auth headers), --spec-var (parameter values), --spec-default (fallback value).
Output and Results
| Format | Flag | Notes |
|---|---|---|
| Console (default) | --format console |
Human-readable tables to stderr |
| JSONL | --format jsonl |
Machine-readable bulk stream, one {"type":...,"data":{...}} envelope per line |
| HTML report | --format html -o report.html |
Interactive ag-grid report, requires -o |
| SQLite | --format sqlite -S -o run.sqlite |
Dumps the run's standalone temp DB via VACUUM INTO. Requires -S/--stateless + -o. Aliases: sqlite3, db. Reopen with vigolium finding/traffic -S --db run.sqlite |
| Filesystem tree | --format fs -o run |
Browsable flat tree: run-traffic/ + run-findings/ with per-host .req / .resp.headers / .resp.body / .md files + index.json. No -o → vigolium-traffic/ + vigolium-findings/. See recipe 16b |
Multiple formats can be combined: --format jsonl,html -o report.html
- Export from database:
vigolium export --format jsonl -o full-export.jsonl - Export specific data:
vigolium export --only findings,http - Export HTML report:
vigolium export --format html -o report.html - Export a browsable filesystem tree:
vigolium export --format fs -o run - DB export with filters:
vigolium db export -f csv -o records.csv --host example.com
-j/--jsonvs--format jsonl. On the read/query commands (finding,traffic,db),-j/--jsonemits a single compact, token-aware object built for driving vigolium from a coding agent (bodies header-kept + preview-capped, binary/static stubbed, findings get a windowed evidence snippet) — different from the bulk--format jsonlstream of full{"type":...,"data":{...}}envelopes. See recipe 14c.
Workflow Recipes
1. Quick Single-URL Scan
vigolium scan -t https://example.com
2. Full Pipeline Scan (Discovery + Spidering + KnownIssueScan + Audit)
vigolium scan -t https://example.com --strategy deep
3. OpenAPI Spec Scan
# With explicit base URL
vigolium scan -I openapi -i api-spec.yaml -t https://api.example.com
# Using servers from spec
vigolium scan -I openapi -i api-spec.yaml --spec-url
# With auth header
vigolium scan -I openapi -i spec.yaml -t https://api.example.com \
--spec-header "Authorization: Bearer <token>"
4. Burp/HAR Import and Scan
vigolium scan -I burp -i burp-export.xml -t https://example.com
vigolium scan -I har -i traffic.har
5. Raw HTTP Request Scan
# From file
vigolium scan-request -i raw-request.txt
# From stdin
echo -e "GET /api/users HTTP/1.1\r\nHost: example.com\r\n" | vigolium scan-request
# With custom method and body
vigolium scan-url https://api.example.com/login \
--method POST --body '{"user":"admin","pass":"test"}' \
-H "Content-Type: application/json"
6. Extensions-Only Phase
# Run only JS extension modules against DB records
vigolium scan -t https://example.com --only extension
# With a specific extension script
vigolium scan -t https://example.com --only ext --ext ./my-scanner.js
# With a custom extensions directory
vigolium scan -t https://example.com --only ext --ext-dir ./extensions/
# Run via the run command (recommended for single extensions)
vigolium run extension -t https://example.com --ext ./custom-check.js
# Run via the run command alias
vigolium run ext -t https://example.com --ext ./custom-check.js
7. Discovery-Only Phase
vigolium run discover -t https://example.com
# or
vigolium scan -t https://example.com --only discovery
8. Targeted Modules
# Run only specific modules by ID
vigolium scan -t https://example.com -m xss-reflected,sqli-error
# Filter modules by tag (OR condition — matches any tag)
vigolium scan -t https://example.com --module-tag spring --module-tag injection
# Combine -m and --module-tag (union of both)
vigolium scan -t https://example.com -m sqli-error --module-tag xss
# List available modules first
vigolium module ls
vigolium module ls xss # filter by keyword
9. Server Mode
# Basic server
vigolium server
# Custom host/port with no auth
vigolium server --host 0.0.0.0 --service-port 8443 -A
# With transparent proxy for recording traffic
vigolium server --ingest-proxy-port 8080
# Mirror every ingested record + finding to a live browsable file tree
# (<dir>/traffic + <dir>/findings, in addition to the DB — readable with ls/grep/jq)
vigolium server --ingest-proxy-port 8080 --mirror-fs ./mirror
--mirror-fs <dir> (config server.mirror_fs_path) mirrors each saved HTTP record and finding to <dir>/traffic/ + <dir>/findings/ as they are persisted — the same per-host .req/.resp.*/.md layout as --format fs, but with an append-only index.jsonl (vs the one-shot export's index.json array). It runs on a background goroutine that never blocks the DB save, resumes per-host id numbering across restarts, and is server-ingestion-only (CLI scans are unaffected).
10. Scan-on-Receive (Ingest + Auto-Scan)
# Server mode: auto-scan every ingested request
vigolium server -t https://example.com --scan-on-receive
# Local ingest + scan
vigolium ingest -t https://example.com -I openapi -i spec.yaml -S
11. AI Agent Code Review (agent query)
# Security code review (SDK protocol by default — full tool access)
vigolium agent query --prompt-template security-code-review --source ./src
# Endpoint discovery from source
vigolium agent query --prompt-template endpoint-discovery --source ./src
# List available templates / backends (parent command helpers)
vigolium agent --list-templates
vigolium agent --list-agents
# Custom prompt with inline text
vigolium agent query 'review this code for vulnerabilities'
# Pipe a prompt from stdin
echo "check for SSRF in the URL-fetching handler" | vigolium agent query --stdin
# Custom prompt file with a specific backend
vigolium agent query --agent claude --prompt-file custom-prompt.md
# With custom instruction appended to the rendered template
vigolium agent query --prompt-template security-code-review --source ./src \
--instruction "Focus on authentication and session management"
# Dry-run to preview the rendered prompt
vigolium agent query --prompt-template security-code-review --source ./src --dry-run
# Save output to a file
vigolium agent query --prompt-template security-code-review --source ./src \
--output review-results.json
12. AI Agent Autopilot (Autonomous Scanning)
Autopilot runs a single autonomous operator session that drives the vigolium CLI (Read/Grep/Glob/Bash/Edit/Write tools via the in-process olium engine). When --source is set, an audit harness runs first and the prepared whitebox context is fed to the operator.
Audit-harness auto-pick: when neither --audit nor --piolium is set, autopilot picks piolium if pi + the piolium extension are installed, otherwise falls back to the embedded vigolium-audit at its lite default. Pass --piolium <mode> to force piolium (auto-disables vigolium-audit for the run); pass --audit <mode> to force vigolium-audit; pass --audit=off to disable both.
Intensity presets (--intensity) bundle the operator command budget, audit mode, browser, and pre-scan strategy into a single flag. Explicit flags always override. The Command Budget is internal — there is no --max-commands flag.
| Preset | Command Budget | Timeout | Audit Mode | Browser |
|---|---|---|---|---|
quick |
150 | 1h | lite |
on |
balanced (default) |
500 | 6h | balanced |
on |
deep |
1500 | 12h | deep |
on |
# Basic autonomous scan (balanced by default)
vigolium agent autopilot -t https://example.com
# Natural-language prompt — target, source, focus are auto-extracted
vigolium agent autopilot "scan VAmPI source at ~/src/VAmPI on localhost:3005"
vigolium agent autopilot "test auth bypass on https://app.example.com"
# With source code context (triggers the audit harness automatically)
vigolium agent autopilot -t https://example.com --source ./src
# Specific files + custom instruction
vigolium agent autopilot -t https://example.com --source ./src \
--files "routes/api.js,controllers/auth.js" \
--instruction "Focus on the new payment endpoint"
# Intensity presets
vigolium agent autopilot -t https://example.com --source ./src --intensity quick # CI/PR
vigolium agent autopilot -t https://example.com --intensity deep # full pentest
# Override a specific setting within a preset
vigolium agent autopilot -t https://example.com --intensity deep --max-duration 4h
# Scan only a PR diff or recent commits
vigolium agent autopilot -t https://example.com --source ./src --diff main...feature-branch
vigolium agent autopilot -t https://example.com --source ./src --last-commits 3
# Cap the wall-clock budget (explicit override)
vigolium agent autopilot -t https://example.com --max-duration 15m
# Pipe a curl command (target auto-derived)
echo "curl -X POST https://example.com/api/login -d '{\"user\":\"admin\"}'" | vigolium agent autopilot
# Browser-based auth preflight
vigolium agent autopilot -t https://example.com --browser --credentials "admin/admin123"
vigolium agent autopilot -t https://example.com --browser --auth-required \
--browser-start-url https://example.com/login
# Disable the audit harness when source is provided
vigolium agent autopilot -t https://example.com --source ./src --audit=off
# Choose a specific vigolium-audit mode
vigolium agent autopilot -t https://example.com --source ./src --audit deep
# Force piolium as the audit harness (auto-disables vigolium-audit for this run)
vigolium agent autopilot -t https://example.com --source ./src --piolium balanced
# Run an AI triage pass over findings after the scan
vigolium agent autopilot -t https://example.com --triage
# Skip the prompt-safety classifier on the natural-language prompt (only when refusing a known-good prompt)
vigolium agent autopilot "scan this internal app at https://app.test" --disable-guardrail
# Upload results to cloud storage after completion
vigolium agent autopilot -t https://example.com --source ./src --upload-results
# Preview rendered system prompt without launching the agent
vigolium agent autopilot -t https://example.com --dry-run
# Override the olium provider for a single run
vigolium agent autopilot -t https://example.com --provider anthropic-api-key
# Drive autopilot through anthropic-vertex (Claude on Vertex; requires a claude-* model)
vigolium agent autopilot -t https://example.com \
--provider anthropic-vertex --gcp-project my-gcp --gcp-location us-east5 --model claude-opus-4-6
13. AI Agent Swarm (Targeted or Full-Scope)
Swarm orchestrates: normalize → source analysis (AI, --source) → code audit (AI) → SAST (native) → SAST review (AI) → discover (native, --discover) → plan (AI) → extension (Go) → native scan → triage (AI, --triage) → rescan (loop).
Intensity presets (--intensity) bundle multiple defaults — explicit flags always override. The preset applies even without --intensity (balanced is the implicit default). Code Audit only takes effect with --source; Auth only with the browser enabled.
| Preset | Discover | Triage | Code Audit | Browser | Auth | Swarm Duration | Max Iterations |
|---|---|---|---|---|---|---|---|
quick |
on | off | off | on | off | 2h | 1 |
balanced (default) |
on | on | on | on | off | 12h | 3 |
deep |
on | on | on | on | on | 24h | 5 |
# Target a URL for deep analysis
vigolium agent swarm -t https://example.com/api/users
# Natural-language prompt — target, source, focus auto-extracted
vigolium agent swarm "scan source at ~/src/app on localhost:3005"
vigolium agent swarm "scan all source code from ~/src/crAPI, ~/src/DVWA"
# Full-scope scan with discovery
vigolium agent swarm -t https://example.com --discover
# Analyze a curl command
vigolium agent swarm --input "curl -X POST https://example.com/api/login -d '{\"user\":\"admin\"}'"
# Pipe raw HTTP request from stdin (auto-detected)
echo -e "POST /api/search HTTP/1.1\r\nHost: example.com\r\n\r\nq=test" | vigolium agent swarm
# Scan a record from the database
vigolium agent swarm --record-uuid 550e8400-e29b-41d4-a716-446655440000
# Focus on a specific vulnerability type
vigolium agent swarm -t https://example.com/api/users --vuln-type sqli
# Source-aware swarm (route extraction + code audit + SAST + scanning)
vigolium agent swarm -t http://localhost:3000 --source ./src
# Full-scope source-aware scan
vigolium agent swarm -t http://localhost:3000 --source ~/projects/express-app --discover
# Source-aware with specific files
vigolium agent swarm -t http://localhost:8080 --source ./backend \
--files src/routes/api.js,src/models/user.js
# Source analysis only (extract routes, no scan)
vigolium agent swarm -t http://localhost:3000 --source ./src --source-analysis-only
# Intensity presets
vigolium agent swarm -t https://example.com/api/users?id=1 --intensity quick
vigolium agent swarm -t https://example.com --source ./src --intensity deep
# Override a specific setting within a preset
vigolium agent swarm -t https://example.com --intensity deep --triage=false
# Run a background vigolium-audit in parallel (requires --source). Bare --audit = lite.
vigolium agent swarm -t http://localhost:3000 --source ./src --audit
vigolium agent swarm -t http://localhost:3000 --source ./src --audit deep
# Or run piolium as the background audit harness (Pi runtime; requires --source)
vigolium agent swarm -t http://localhost:3000 --source ./src --piolium balanced
# Pull HTTP records from the active project as input
vigolium agent swarm --all-records
vigolium agent swarm --records-from "host=example.com,status=200,method=GET,path=/api,since=2026-04-01"
vigolium agent swarm --record-uuid 550e8400-...,7c9b1a2d-... # repeatable / comma-separated
# Force the extension agent to run even when the planner picks built-in modules
vigolium agent swarm -t https://example.com/api --with-extensions
# Tune master-agent batching and probing
vigolium agent swarm --all-records --master-batch-size 10 --batch-concurrency 4 \
--probe-concurrency 20 --probe-timeout 15s --max-plan-records 25
# Scan only changed code
vigolium agent swarm -t https://example.com --source ./src --diff main...feature-branch
vigolium agent swarm -t https://example.com --source ./src --last-commits 3
# Skip SAST tools during source analysis
vigolium agent swarm -t http://localhost:3000 --source ./src --skip-sast
# Disable code audit (still runs source analysis + SAST)
vigolium agent swarm -t http://localhost:3000 --source ./src --code-audit=false
# Enable triage and rescan loop
vigolium agent swarm -t https://example.com/api/users --triage --max-iterations 5
# Browser automation + auth capture
vigolium agent swarm -t https://example.com --browser --browser-auth \
--credentials "username=admin,password=secret"
# Upload results to cloud storage
vigolium agent swarm -t https://example.com --source ./src --upload-results
# Custom instructions to guide the agent
vigolium agent swarm -t https://example.com/api/users --instruction "Focus on GraphQL parsing"
# Instructions from a file
vigolium agent swarm -t https://example.com/api/users --instruction-file hints.txt
# Resume from a specific phase
vigolium agent swarm -t https://example.com --start-from plan
# Specify modules explicitly
vigolium agent swarm -t https://example.com/api/search -m xss-reflected,xss-stored
# Control scanning phases
vigolium agent swarm -t https://example.com --only dynamic-assessment
vigolium agent swarm -t https://example.com --skip discovery,spidering
# Custom overall duration
vigolium agent swarm -t https://example.com --max-duration 24h
# Preview master agent prompt (no execution)
vigolium agent swarm -t https://example.com/api/users --dry-run
# Show rendered prompts during execution
vigolium agent swarm -t https://example.com/api/users --show-prompt
13b. AI Agent Audit — vigolium-audit harness (Foreground Whitebox Audit)
Drive the embedded vigolium-audit harness directly with vigolium agent audit --driver=audit (--driver=audit pins the single harness; the dispatcher in §13d covers auto/both).
# Deep audit of a local repo
vigolium agent audit --driver=audit --mode deep --source .
# Fast lite audit of a remote repo (clones automatically)
vigolium agent audit --driver=audit --mode lite --source https://github.com/org/repo
# Balanced audit
vigolium agent audit --driver=audit --mode balanced --source ~/code/myapp
# Second pass on a prior audit tree (revisit with new context)
vigolium agent audit --driver=audit --mode revisit --source ./prior-audit-tree
# PoC construction for previously confirmed findings
vigolium agent audit --driver=audit --mode confirm --source ./audit-with-findings
# Chain modes back-to-back (audit runs them natively as one row)
vigolium agent audit --driver=audit --modes deep,refresh,confirm --source .
# Read-only progress check (no agent launched)
vigolium agent audit --driver=audit --mode status --source ./in-progress-audit
# Pick the coding agent (claude or codex) — provider implies one, --agent overrides
vigolium agent audit --driver=audit --agent codex --source .
# Drive the audit yourself interactively, then import the on-disk results
vigolium agent audit -i --source ./src
vigolium import ./src/vigolium-results --format html -o audit-report.html
# List the audit mode graph (phases, time estimates) and exit
vigolium agent audit --list-modes
Valid --mode values (audit leg): lite, balanced, deep, revisit, confirm, merge (shared) plus reinvest, refresh, mock, diff, status (audit-specific). The audit leg drives the claude or codex CLI directly (selected by --provider/--agent). --no-preflight and --preflight-timeout skip / tune the pre-launch CLI roundtrip; --show-thinking surfaces the agent's thinking blocks; --keep-raw preserves raw scanner output under <source>/vigolium-results/.
13c. AI Agent Piolium (Pi-Native Foreground Audit)
Drives the user's installed piolium Pi extension via pi --mode json -p /piolium-<mode>. Requires pi in PATH and piolium registered (install via pi install git:git@github.com:vigolium/piolium.git). Same on-disk schema as vigolium-audit (audit-state.json + findings-draft/), tagged separately in the DB.
# Balanced 9-phase audit of a local repo
vigolium agent audit --driver=piolium --mode balanced --source .
# Quick lite audit of a remote git URL (auto-clones)
vigolium agent audit --driver=piolium --mode lite --source https://github.com/org/repo
# Hail-mary file-by-file vulnerability hunt over Python+Go files only
vigolium agent audit --driver=piolium --mode longshot --source ./src \
--plm-longshot-langs python,go --plm-longshot-limit 200
# Use a specific Pi provider/model for this run (overrides ~/.pi defaults)
vigolium agent audit --driver=piolium --pi-provider vertex-anthropic --pi-model claude-opus-4-6 --source .
# Full clone history (commit archaeology) via intensity preset
vigolium agent audit --driver=piolium --intensity deep --source https://github.com/org/repo
# Cap commit-history scan to last 60 days
vigolium agent audit --driver=piolium --mode balanced --source . --plm-scan-since "60 days ago"
# Resume / re-audit an existing tree (anti-anchored second pass)
vigolium agent audit --driver=piolium --mode revisit --source ./prior-piolium-tree
# Read-only progress check on an in-progress run
vigolium agent audit --driver=piolium --mode status --source ./in-progress-piolium
# Skip the pre-audit pi roundtrip check (auth + model availability)
vigolium agent audit --driver=piolium --mode balanced --source . --no-preflight
Valid --mode values: lite, balanced, deep, revisit, confirm, merge, diff, longshot, status, smoke. Intensity presets: quick (lite + shallow clone), balanced (default), deep (deep + full clone history). Piolium passthroughs (forwarded as --plm-* to piolium itself): --plm-scan-limit, --plm-scan-since, --plm-phase-retries, --plm-command-retries, --plm-longshot-limit, --plm-longshot-timeout, --plm-longshot-langs.
13d. AI Agent Audit (Unified Driver Dispatcher)
Drives the embedded vigolium-audit harness (driver name audit) and/or piolium against the same source tree under a single parent AgenticScan UUID. Default --driver=auto runs vigolium-audit and only falls back to piolium when the resolved claude/codex CLI is missing from PATH — a clean audit run never consults piolium, and a mid-run audit failure surfaces directly rather than silently retrying. --driver=both runs audit then piolium unconditionally. A project-wide post-pass findings dedup runs after the drivers finish. Per-driver child rows + session subdirs ({session}/audit/, {session}/piolium/) keep them separated on disk and in the DB while still scoring as one logical audit.
# Default: run vigolium-audit, fall back to piolium only if claude/codex CLI is missing
vigolium agent audit --source .
# Run both drivers back-to-back, unconditionally
vigolium agent audit --driver=both --source .
# Force a single driver
vigolium agent audit --driver=audit --source .
vigolium agent audit --driver=piolium --source ./src
# Driver-specific modes are only allowed when --driver is forced to that driver
vigolium agent audit --driver=piolium --source . --mode longshot
vigolium agent audit --driver=audit --source . --mode mock
# Audit from a gs:// archive (downloaded + extracted once, shared by both drivers)
vigolium agent audit --source gs://my-project/snapshots/app.tar.gz
# Skip the post-pass project-wide findings dedup
vigolium agent audit --source . --no-dedup
# Pin the audit leg's agent + provider (anthropic-* → claude, openai-* → codex)
vigolium agent audit --source . --provider anthropic-oauth
vigolium agent audit --source . --agent codex
# BYOK auth for the run (literal, $ENV_NAME, or @path)
vigolium agent audit --source . --oauth-token "$(cat ~/.config/claude-token)"
# Override piolium's Pi defaults
vigolium agent audit --driver=piolium --source . --pi-provider google-vertex --pi-model gemini-3.1-pro
# Pass piolium-only knobs through (ignored on the audit leg)
vigolium agent audit --driver=piolium --source . --plm-scan-since "30 days ago" --plm-longshot-langs python
Under --driver=auto/both, --mode is restricted to the shared set: lite, balanced, deep, revisit, confirm, merge. Driver-specific modes (piolium's longshot/smoke/diff/status, audit's reinvest/refresh/mock/diff/status) require forcing --driver=piolium or --driver=audit. --intensity deep resolves to the chain deep,confirm; --modes a,b,c chains modes back-to-back. Under --driver=both, if one driver fails the other still runs — the parent run reports per-driver status.
14. Results Inspection
# Browse HTTP traffic
vigolium traffic
vigolium traffic login # fuzzy search
vigolium traffic --tree # hierarchical view
vigolium traffic --burp # Burp-style colored output
vigolium traffic --host api.example.com --method POST
# JSONL output for agent / CI consumption (one JSON object per line)
vigolium traffic -j --host api.example.com
vigolium finding -j --severity high,critical
vigolium db ls -j --table findings
vigolium db stats -j
# Browse findings
vigolium finding
vigolium finding --severity high,critical
vigolium finding --module-type active
vigolium finding --finding-source audit
vigolium finding --burp # Burp-style format
vigolium finding --id 42 # specific finding by ID
vigolium finding --columns ID,SEVERITY,MODULE,MATCHED_AT,TAGS
vigolium db ls --table findings --severity critical
# Database stats
vigolium db stats
vigolium db stats --detailed # includes top hosts breakdown
# Watch mode (auto-refresh)
vigolium traffic --watch 5s
vigolium db stats --watch 10
14b. External-Agent Confirm Chain (Claude Code / Cursor / Pi)
External agents driving vigolium externally (Claude Code, Cursor, Pi, CI scripts) follow this discover → confirm → review chain:
- Discover — pull what vigolium already knows in JSONL:
vigolium traffic -j
…(truncated)