--urlTarget API base URL
--specOpenAPI/Swagger: local path or https:// URL
--codeSource code directory for white-box analysis
--authAuth header value, e.g. "Bearer token123"
--auth-typeAuth profile: bearer | apikey | apikey-query | basic | cookie (default: auto-detect)
--auth-headerCustom auth header name (default: Authorization). With --auth-type apikey-query, this is the URL query-param name (default: api_key).
--auth-user2Second user auth for IDOR checks
--profileAuth profile from ~/.fendix/profiles/
-o, --outputOutput file path (default: stdout)
-f, --formatOutput format: json | html | sarif | pdf (default: json). pdf requires no Semgrep (pure Go). html accepts --lang ar for Arabic/RTL (v0.13+)
--fail-onExit 1 if findings meet threshold: CRITICAL | HIGH | MEDIUM
--fail-on-scanner-errorExit non-zero (2) if any scanner (govulncheck/pip/npm/secrets/semgrep/textscan) ran and errored — turns a silent coverage gap into a CI failure.
--baselinePrevious findings JSON for diff — show only new issues
--save-baselineSave current findings to path for future diffs
--diffDiff-aware scan: scope the whitebox scanners to files changed vs HEAD (or --diff=‹ref› vs a ref). SCA runs only when a manifest/lockfile changed. Distinct from --baseline (which filters findings, not files) (v0.16+)
--stagedWith --diff, scope to git-staged files only — what a commit is about to introduce. The basis of the pre-commit hook (v0.16+)
--fastSecrets + textscan only, sub-second budget — pairs with --diff --staged for an on-every-commit gate. ~18ms on a 200-file monorepo (v0.16+)
--enable-activeEnable active probes — injection (SQLi, CMDi, CRLF), open-redirect, reflected XSS, in-band SSRF, host-header injection, GraphQL introspection, and HTTP method tampering (v0.18)
--allow-private-targetsAllow scanning private/loopback/link-local and cloud-metadata addresses (disables the SSRF egress guard). Auto-enabled when --url is already private.
--max-probes-per-endpointCap active payloads per endpoint when --enable-active (default: 20)
-w, --workersConcurrent HTTP workers (default: 10)
--timeoutHTTP timeout in seconds (default: 10)
--delayMilliseconds between requests (default: 100)
--ignorePath to .fendix-ignore suppression file
--wordlistCustom brute-force wordlist path; overrides built-in 117-path list
--crawl-depthRecursive HTML link crawl depth — 0 disables, 1 = home-page links (default), 2+ = deeper
--max-endpointsCap discovered endpoints after dedupe (default: 500; 0 = no cap)
--max-requestsSoft cap on total HTTP requests during the scan phase; discovery exempt (v0.5; 0 = no cap)
--max-durationWall-clock deadline as a Go duration string, e.g. 5m, 90s, 2m30s (v0.5)
--respect-robotsTreat robots.txt Disallow rules as a hard restriction across discovery (v0.5; default off)
--debug-bundleWrite a redacted diagnostic .tar.gz at the given path — auth values masked, full DEBUG slog stream + probe audit log included. For attaching to bug reports (v0.6)
--configPath to .fendix.yaml policy file (default: auto-detect .fendix.yaml in cwd; explicit path with missing file is a hard error). Precedence: cobra default < .fendix.yaml < explicit CLI flag (v0.6.1+)
--no-pluginsDisable out-of-tree plugin discovery in .fendix/plugins/ + ~/.fendix/plugins/. Use for sandboxed CI or when isolating engine behavior from third-party plugins (v0.7+)
--allow-repo-local-pluginsOpt into running repo-local plugins under ‹scan-dir›/.fendix/plugins/ (unsafe on untrusted PRs; ~/.fendix/plugins/ is always trusted).
--no-native-depsDisable the in-process native dep-CVE scanners (Go via golang.org/x/vuln, PyPI + npm via OSV.dev). The orchestrator falls back to the Python deps.py path. Useful for offline scans (no vuln-DB network access) or for debugging dedup overlap (v0.8+)
--use-pip-auditUse the pip-audit binary for Python dependency-CVE scanning instead of the native OSV.dev client (falls back to OSV.dev if pip-audit isn't on PATH).
--python-engineSpawn the Python whitebox engine for the auth / injection / deps checks. Default off as of v0.9 — secrets and Semgrep are now native Go (TASK-115/116) and the embedded Python distribution is no longer bundled. Requires a local python/ source tree (or FENDIX_ENGINE pointing at one). Cold-start cost is ~24 ms p50 with the flag set vs ~6 ms without (v0.9+)
--langHTML report language: en (default) | ar (Arabic, right-to-left). Applies to --format html only; JSON/SARIF/PDF stay English (v0.13+)
--classificationClassification banner text rendered at the top-right of every PDF page (default: INTERNAL). Empty string disables the banner. Only applies to --format pdf (v0.13+)
--offlineEnable fully air-gapped scan mode — dep-CVE checks consult the local CVE snapshot instead of api.osv.dev. Requires --offline-db or a snapshot at the default path. Use fendix db update to populate the snapshot (v0.13+)
--offline-dbPath to the local CVE snapshot to use in --offline mode (default: ~/.fendix/osv-snapshot.json). Created by fendix db update (v0.13+)
--ciCI system for fendix init: github (default) | gitlab | circleci. Auto-detects from project root when omitted. github emits .github/workflows/fendix.yml; gitlab emits .gitlab-ci.fendix.yml; circleci emits .circleci/fendix-config.yml (v0.14+)
-v, --verbosePrint all requests and raw findings