Command Line Usage
Core commands and flags used by teams to run scans locally and in CI/CD.
Current execution scope
- Runtime
- Prebuilt Go binaries do not require a Go compiler for basic scanning. Building from source requires Go 1.25+. Optional analyzers have their own runtime requirements; inspect coverage to confirm they actually ran.
- DAST
- URL and API probing inspect observable runtime behavior. Intrusive probes require --enable-active. An HTTP 200 response alone does not prove access to sensitive data.
- SAST
- Native static rules cover supported Go, JavaScript, Java and infrastructure patterns. Semgrep and the opt-in Python engine extend applicable checks. Language support does not imply complete framework or path coverage.
- SCA
- Go analysis uses govulncheck. Python and npm dependency scanners use supported manifests and lockfiles, including poetry.lock, Pipfile.lock and package-lock.json. Advisory queries can transmit package names and versions.
- Evidence and policy
- Correlation connects supported matching observations; not every finding has multiple sources. Strong single-source evidence can be sufficient. Severity, confidence, finding disposition and release recommendation are distinct.
- Coverage and human review
- An analyzer failure or missing required evidence can leave the release incomplete. A PASS is a result under the declared policy and coverage, not a guarantee of security or a human approval.
Benchmark tables below are historical, scoped observations. Counts and synthetic regression scores are not production precision/recall. No replacement measurements are claimed here.
Read deployment-specific data handlingCommands
Scan Flags
Report Flags
Re-render a saved findings JSON file to a different format without re-scanning.
Init Flags
fendix init detects the project's stack (Go, Python, Node.js, Ruby, Rust, Java/Kotlin, PHP) and any colocated OpenAPI/Swagger spec, then writes the CI workflow + .fendix.yaml (see schema reference) + .fendix-ignore. Supported CI targets (v0.14+): GitHub Actions, GitLab CI, CircleCI — auto-detected from project root, or override with --ci. Refuses to overwrite by default; pre-flight check is atomic across all three files.
Demo Flags
fendix demo spins up bkimminich/juice-shop:v17.1.1 in Docker on localhost:3000, runs a stock fendix scan against it, and renders an HTML report. Container is always cleaned up on exit (success or failure). Useful for first-time evaluators who want to see a real scan without pointing fendix at production.
Hybrid scan
fendix scan \
--url https://api.example.com \
--spec ./openapi.yaml \
--code ./src \
--format html \
--fail-on HIGHRuns both black-box and white-box analysis and correlates the results.
Active probing
fendix scan \
--url https://api.example.com \
--enable-active \
--fail-on CRITICAL \
--save-baseline ./baseline.jsonEnables active probes — SQLi/CMDi/CRLF injection plus open-redirect, reflected XSS, in-band SSRF, host-header injection, GraphQL introspection, and HTTP method tampering. Requires explicit authorization.
PDF + Jira sync (v0.13+)
fendix scan \
--code ./src --format pdf \
--classification "CONFIDENTIAL" \
--output report.pdf
export FENDIX_JIRA_URL=https://org.atlassian.net
export FENDIX_JIRA_PROJECT_KEY=SEC
export FENDIX_JIRA_EMAIL=you@example.com
export FENDIX_JIRA_API_TOKEN=<token>
fendix scan --format json --output f.json
fendix jira --findings f.jsonPDF executive report with classification banner + idempotent Jira issue sync.
Air-gapped offline scan (v0.13+)
# One-time: populate CVE snapshot (internet-connected machine)
fendix db update --source osv-export.json
# Copy ~/.fendix/osv-snapshot.json to air-gapped host
# Air-gapped scan — no outbound network calls
fendix scan \
--code ./src \
--offline \
--offline-db ./osv-snapshot.jsonFull dep-CVE coverage with no internet access.
CLI behavior reflects backend contract and safety defaults.