Documentation

CLI Reference

Complete reference for all Vulnetix CLI commands, flags, and usage patterns.

Complete reference for all Vulnetix CLI commands, flags, and usage patterns.

Commands

vulnetix (root command)

Run vulnerability management tasks against the Vulnetix backend.

vulnetix

The root command runs an authentication healthcheck.

TaskDescription
info (default)Authentication healthcheck across all credential sources

Global Flags:

FlagTypeDescription
--org-idstringOrganization ID (UUID)
--api-keystringDirect API key (overrides VULNETIX_API_KEY)
--help-Help for any command

vulnetix auth

Manage authentication credentials for the Vulnetix API.

vulnetix auth [login|status|verify|logout] [flags]

auth login

Authenticate with Vulnetix. Interactive by default when run in a terminal.

# Interactive browser device flow (prompts for storage)
vulnetix auth login --store keyring

# Non-interactive login with an ApiKey
vulnetix auth login --api-key <KEY> --org-id <UUID> --store keyring

# Non-interactive login with a SigV4 secret
vulnetix auth login --secret <SECRET> --org-id <UUID> --store keyring

# Non-interactive login with a Bearer token (org resolved server-side)
vulnetix auth login --token <TOKEN> --store keyring

Flags:

FlagTypeDefaultDescription
--org-idstring-Organization ID (UUID). Required by --api-key and --secret; ignored by --token
--api-keystring-ApiKey hex digest
--secretstring-SigV4 HMAC secret — not an alias for --api-key
--tokenstring-Bearer token
--storestringhomeCredential storage location: home, project, keyring
--store-dirstring-Directory for home/keyring metadata instead of $HOME/.vulnetix
--noninteractiveboolfalseRequire an ApiKey from flags or environment; never launch a browser
--methodstring-Deprecated. The credential flag now selects the method

--api-key, --secret, and --token are mutually exclusive. Running vulnetix auth without a subcommand also triggers login.

See Authentication for storage backends, precedence, file permissions, and rotation.

auth status

Show current authentication state, including the credential source, method, masked key, and Package Firewall .netrc status.

vulnetix auth status

auth verify

Verify that stored credentials can authenticate with the Vulnetix API. Does not modify credentials.

# Verify stored credentials
vulnetix auth verify

# Verify with explicit API endpoint
vulnetix auth verify --base-url https://api.vdb.vulnetix.com/v1

auth logout

Remove stored credentials from all file-based stores.

vulnetix auth logout

vulnetix package-firewall

Configure package managers to use the Vulnetix Package Firewall.

vulnetix package-firewall go [flags]

package-firewall go

Configure Go to use https://packages.vulnetix.com with .netrc authentication.

vulnetix package-firewall go
vulnetix package-firewall go --dry-run

This command writes a machine packages.vulnetix.com entry to .netrc, persists GOPROXY and GOAUTH=netrc in your shell configuration, and updates detected project files at the git root (.env, .envrc, Makefile).

Flags:

FlagTypeDefaultDescription
--base-urlstringhttps://api.vdb.vulnetix.comVDB API base URL
--proxy-urlstringhttps://packages.vulnetix.comPackage Firewall Go proxy URL
--dry-runboolfalseShow planned changes without writing files

package-firewall uninstall

Remove the configuration written for one, some, or every ecosystem. Needs no authentication — it operates on local files only. See Uninstall.

vulnetix package-firewall uninstall npm pypi        # named ecosystems
vulnetix package-firewall uninstall --all            # every supported ecosystem
vulnetix package-firewall uninstall --except aur     # all but the named ones
vulnetix package-firewall uninstall --purge          # every ecosystem + the shared netrc credential

Exactly one selector is required: positional ecosystem(s), --all, or --except. The shared ~/.netrc credential is kept unless --remove-credentials or --purge is given.

Flags:

FlagTypeDefaultDescription
--allboolfalseUnconfigure every supported ecosystem
--exceptstringsUnconfigure all supported ecosystems except these
--remove-credentialsboolfalseAlso remove the shared netrc credential (machine packages.vulnetix.com)
--purgeboolfalseRemove the shared netrc credential and every supported ecosystem
--proxy-urlstringhttps://packages.vulnetix.comPackage Firewall proxy URL (host to detect and strip)
--dry-runboolfalseShow planned changes without writing files

vulnetix config

Manage Vulnetix configuration. This manages the Package Firewall per-organization policy and ecosystem mirrors, the org-wide Quality Gate scan-enforcement policy, and the Quality Gate end-of-life severity buckets. The organization is resolved from your authenticated session (vulnetix auth login).

vulnetix config set package-firewall [ecosystem] [url] [flags]
vulnetix config get package-firewall [flags]
vulnetix config set quality-gate [flags]
vulnetix config get quality-gate [flags]
vulnetix config set eol-policy [flags]
vulnetix config get eol-policy [flags]

config set package-firewall

Two forms, distinguished by positional arguments.

Policy form (no positionals) — updates the org-wide policy. Each call is a partial update; only the flags you pass change.

vulnetix config set package-firewall --cvss-threshold 8.0 --block-malware true --cooldown-days 7
FlagTypeValueDescription
--cvss-thresholdfloat010Block when max CVSS ≥ value (0 disables)
--epss-thresholdfloat01Block when EPSS probability ≥ value
--cess-thresholdfloat010Block when Vulnetix CESS ≥ value
--block-malwarebooltrue|falseBlock known-malicious packages
--block-eolbooltrue|falseBlock end-of-life versions
--block-kevbooltrue|falseBlock CISA KEV / VulnCheck KEV CVEs
--block-weaponized-exploitsbooltrue|falseBlock weaponized exploitation
--block-active-exploitsbooltrue|falseBlock active exploitation sightings
--block-poc-exploitsbooltrue|falseBlock public PoC / exploit records
--block-bad-actorsbooltrue|falseBlock CVEs linked to malicious actors
--cooldown-daysint≥ 0Quarantine versions published within the last n days
--version-lagint≥ 0Require n newer versions before a version is allowed

Mirror form (<ecosystem> <url>) — adds, updates, enables, or disables one upstream mirror.

# Add a mirror; priority auto-increments per ecosystem when omitted
vulnetix config set package-firewall npm https://registry.npmjs.org

# Pin a priority, or toggle a mirror by ecosystem + url
vulnetix config set package-firewall npm https://npm.internal.example --priority 0
vulnetix config set package-firewall npm https://registry.npmjs.org --disable
Argument / FlagTypeDescription
<ecosystem>stringEcosystem id (go, npm, pypi, …)
<url>stringAbsolute upstream mirror URL
--priorityintOrder within the ecosystem (auto max+1 if omitted)
--enable / --disableboolToggle isActive on the mirror matched by ecosystem + url

Both forms share --base-url (default https://api.vdb.vulnetix.com) and -o, --output (pretty, json).

config get package-firewall

Print the org-wide policy and every mirror across all ecosystems.

vulnetix config get package-firewall
vulnetix config get package-firewall -o json
FlagTypeDefaultDescription
--base-urlstringhttps://api.vdb.vulnetix.comVDB API base URL
-o, --outputstringprettyOutput format: pretty, json

config set quality-gate

Set the org-wide Quality Gate scan-enforcement policy. When a member runs vulnetix scan (or sca, sast, …) while authenticated, every value you set here overrides the equivalent scan flag — org policy always wins, even over an explicitly-passed flag. Settings you leave unset fall back to the caller’s flag or the builtin default.

Each call is a partial update — only the flags you pass change; everything else keeps its current value. To clear a setting back to “not enforced”, pass null as the flag’s value (e.g. --severity null) — members then fall back to their own scan flag or the builtin default.

vulnetix config set quality-gate --severity high --block-malware true --cooldown 3
FlagValueDescription
--block-eoltrue|false|nullExit 1 when a runtime or package dependency is end-of-life
--block-malwaretrue|false|nullExit 1 when any dependency is a known malicious package
--block-unpinnedtrue|false|nullExit 1 when any direct dependency uses a version range instead of an exact pin
--cooldown≥ 0 | nullExit 1 when any dependency version was published within the last n days (0 disables)
--version-lag≥ 0 | nullExit 1 when any dependency is within the n most recently published versions (0 disables)
--sca-autofix-max-major-bump≥ 0 | nullRefuse autofix targets crossing more than n major versions
--exploitspoc|active|weaponized|nullExit 1 when exploit maturity reaches the threshold
--severitylow|medium|high|critical|nullExit 1 when any vulnerability or SAST finding meets or exceeds this level
--sca-autofix-strategylatest|safest|stable|nullTarget strategy for --sca-autofix

Every flag takes a value (e.g. --block-malware true). Pass null to unset a setting entirely for the org — the value is cleared and members fall back to their own scan flag or the builtin default:

vulnetix config set quality-gate --severity null --cooldown null

Omitting a flag leaves its stored value unchanged. Both this command and config get quality-gate share --base-url (default https://api.vdb.vulnetix.com) and -o, --output (pretty, json).

config get quality-gate

Print the org-wide Quality Gate enforcement policy. Settings the organization never configured render as not set (the caller’s flag or builtin default applies for those).

vulnetix config get quality-gate
vulnetix config get quality-gate -o json
FlagTypeDefaultDescription
--base-urlstringhttps://api.vdb.vulnetix.comVDB API base URL
-o, --outputstringprettyOutput format: pretty, json

config set eol-policy

Set the four end-of-life calendar-quarter severity buckets of the Quality Gate. These map an upcoming or past EOL date to a synthetic finding severity during vulnetix scan (opt-in via the org policy). The buckets are literal calendar quarters (Q1 Jan–Mar, Q2 Apr–Jun, Q3 Jul–Sep, Q4 Oct–Dec); a date is classified by which quarter it lands in. This is not a per-product mapping — it is the four shared time buckets.

Each call is a partial update.

vulnetix config set eol-policy \
  --next-quarter-severity low \
  --this-quarter-severity medium \
  --within-30-days-severity high \
  --retired-severity critical
FlagTypeValueDescription
--next-quarter-severitystringskip|low|medium|high|criticalSeverity for products reaching EOL in the next calendar quarter
--this-quarter-severitystringskip|low|medium|high|criticalSeverity for products reaching EOL in the current calendar quarter
--within-30-days-severitystringskip|low|medium|high|criticalSeverity for products reaching EOL within the next 30 days
--retired-severitystringskip|low|medium|high|criticalSeverity for products already past EOL (retired)

Use skip to suppress findings for a bucket entirely. Both this command and config get eol-policy share --base-url (default https://api.vdb.vulnetix.com) and -o, --output (pretty, json).

config get eol-policy

Print the four EOL calendar-quarter severity buckets.

vulnetix config get eol-policy
vulnetix config get eol-policy -o json
FlagTypeDefaultDescription
--base-urlstringhttps://api.vdb.vulnetix.comVDB API base URL
-o, --outputstringprettyOutput format: pretty, json

vulnetix upload

Upload a security artifact file (SBOM, SARIF, VEX, CSAF) to Vulnetix for processing.

vulnetix upload --file <path> [flags]

The file format is auto-detected from content and extension but can be overridden. Files larger than 10MB are uploaded using chunked transfer. Authentication uses stored credentials or environment variables.

Flags:

FlagTypeDefaultDescription
--filestring-Path to artifact file to upload (required)
--org-idstringstoredOrganization ID (UUID, uses stored credentials if not set)
--base-urlstringhttps://api.vdb.vulnetix.com/v1Base URL for the Vulnetix VDB API
--formatstringautoOverride auto-detected format: cyclonedx, spdx, sarif, openvex, csaf_vex
--jsonboolfalseOutput result as JSON

Examples:

# Upload with stored credentials
vulnetix upload --file sbom.cdx.json

# Upload with explicit org ID
vulnetix upload --file report.sarif --org-id "123e4567-e89b-12d3-a456-426614174000"

# Override format detection
vulnetix upload --file report.json --format sarif

# JSON output for scripting
vulnetix upload --file sbom.cdx.json --json

vulnetix gha

GitHub Actions artifact management. Designed for use within GitHub Actions workflows.

gha upload

Collect and upload all artifacts from the current GitHub Actions workflow run to Vulnetix.

vulnetix gha upload [flags]

This command:

  1. Collects all artifacts from the current workflow run via the GitHub API
  2. Downloads and extracts each artifact
  3. Uploads each file to Vulnetix using the standard upload API
  4. Reports pipeline UUIDs for each uploaded file

Requires: GITHUB_TOKEN, GITHUB_REPOSITORY, GITHUB_RUN_ID environment variables.

Flags:

FlagTypeDefaultDescription
--dry-runboolfalseClassify and validate every file without publishing anything
--fail-on-emptyboolfalseFail when the run produced no publishable artifact
--no-github-apiboolfalseDo not call the GitHub REST API to enrich the CI context
--strictboolfalseTreat skipped files (unrecognised formats) as failures
--jsonboolfalseOutput results as JSON

The API base URL is not a flag on gha; both subcommands go through the shared client, so use VULNETIX_API_URL if you need to point them elsewhere.

gha status

Report on the ingestion snapshots produced by a workflow run, or on a single snapshot by UUID.

vulnetix gha status                    # current run (GITHUB_RUN_ID)
vulnetix gha status --run-id <RUN_ID>
vulnetix gha status --uuid <UUID>

Flags:

FlagTypeDefaultDescription
--run-idstringGITHUB_RUN_IDWorkflow run id to report on
--attemptintGITHUB_RUN_ATTEMPTLimit to one run attempt
--uuidstring-Report on a single ingestion snapshot instead of a whole run
--jsonboolfalseOutput results as JSON

vulnetix license

Analyze package licenses for conflicts, policy compliance, and risk. See the full License Command Reference for details.

vulnetix license [flags]
FlagDefaultDescription
--path.Directory to scan
--depth3Max recursion depth
--exclude-Exclude paths matching glob (repeatable)
--modeinclusiveAnalysis mode: inclusive or individual
--allow-Comma-separated allow list of SPDX IDs
--allow-file-Path to YAML allow list file
--policy-filediscoveredCategory-based licence policy (default .vulnetix/license-policy.yaml)
--exceptions-filediscoveredApproved exceptions (default .vulnetix/license-exceptions.yaml)
-o, --outputprettyOutput format: json (CycloneDX), json-spdx (SPDX 2.3)
--results-onlyfalseOnly show output when there are findings or conflicts
--severity-Exit 1 if any finding meets or exceeds: low, medium, high, critical
--from-memoryfalseReconstruct from .vulnetix/memory.yaml without re-scanning
--dry-runfalseDetect files and parse packages only — no evaluation

Subcommands:

vulnetix license policy init|show|validate      # category-based policy
vulnetix license exceptions add|ls|check        # approved exceptions

A policy classifies licences by category and attaches a severity to each, which stays correct when a dependency introduces a licence nobody enumerated. The built-in default reproduces exactly what the evaluator did before policies existed, so adopting one is deliberate rather than something an upgrade does to your build. Exceptions carry approver, grounds and expiry; an expired one stops applying and says so.

License analysis also runs automatically during vulnetix scan (disable with --no-licenses).


vulnetix aibom

Discover AI coding agents/assistants and AI usage, and emit a CycloneDX AI Bill of Materials. See the full AIBOM Command Reference and the AIBOM overview.

vulnetix aibom [path] [flags]
FlagDefaultDescription
--path.Directory to scan (positional [path] overrides)
--depth25Max recursion depth
-o, --outputcyclonedx-jsonOutput format: cyclonedx-json, json, table
--output-file-Write output to a file instead of stdout
--spec-version1.7CycloneDX spec version: 1.6 or 1.7
--catalog-Catalog file to merge over (or replace) the builtin catalog
--no-builtin-catalogfalseUse only --catalog, not the embedded catalog
--no-envfalseSkip the environment-variable detection pass
--include-homefalseAlso probe the home directory for tool config dirs
--no-sourcefalseSkip the source-code SDK / model detection pass

Detection is catalog-driven (42+ tools, AI SDKs, model-name extraction). The environment pass records variable names only — never their values.


vulnetix cbom

Discover cryptographic usage in code and config and emit a CycloneDX Cryptography Bill of Materials (CBOM) with post-quantum posture. See the full CBOM Command Reference and the CBOM overview.

vulnetix cbom [path] [flags]
FlagDefaultDescription
--path.Directory to scan (positional [path] overrides)
--depth25Max recursion depth
-o, --outputprettyOutput format: pretty, json, cyclonedx-json
--output-file-Path to write the CBOM (default .vulnetix/cbom.cdx.json)
--spec-version1.7CycloneDX spec version: 1.6 or 1.7
--catalog-Catalog file to merge over (or replace) the builtin catalog
--no-builtin-catalogfalseUse only --catalog, not the embedded catalog
--no-sourcefalseSkip the source-code crypto API pass
--no-configfalseSkip the config & protocol pass
--no-certsfalseSkip the certificate / key pass
--no-depsfalseSkip the crypto-library pass
--fail-onnoneExit non-zero when crypto of these PQC statuses is found (e.g. quantum-vulnerable, deprecated)

Detection is catalog-driven across source, config, certificates and crypto libraries. Algorithm spellings are case/separator-insensitive (SHA256/Sha256/SHA_256 → one SPDX algorithm); each is classified quantum-safe / quantum-vulnerable / deprecated / hybrid with a per-country approval matrix.


vulnetix cdx

Generate one standalone CycloneDX document containing package SBOM inventory, AIBOM components and CBOM components. The command is offline: no VDB lookup, upload, memory update, quality gate, image pull or container daemon is used. Discovery spans manifests and lockfiles, installed package trees, container package databases, Dockerfiles, CI/CD pipeline files, shell scripts and recipes, and the packages compiled into binaries (Go build info, Rust cargo auditable, JVM archives). Each component carries the same metadata sca records, including the dependency graph and licenses.

vulnetix sbom is an alias for this command — CycloneDX is the preferred format, and a future SPDX generator will be its own command. See the full CDX Command Reference.

vulnetix cdx [path] [flags]
vulnetix sbom [path] [flags]   # alias
FlagDefaultDescription
--path.Directory to scan (positional [path] overrides)
--depth25Maximum recursion depth
-o, --outputprettyTerminal output: pretty, json, cyclonedx-json
--output-file-Path to write the CycloneDX file (default .vulnetix/sbom.cdx.json)
--spec-version1.7CycloneDX spec version: 1.6 or 1.7
--container-rootfs-Inspect a container root filesystem directory (repeatable)
--container-archive-Inspect a Docker/OCI/rootfs tar archive (repeatable)
--no-ci / --no-shellfalseSkip CI/CD pipeline or shell/recipe package discovery
--no-binary-analysis / --no-binary-packagesfalseSkip binary analysis, or keep it but omit the packages embedded in binaries
--no-licensesfalseSkip license detection
--no-aibom / --no-cbomfalseOmit AI or cryptographic components
--signfalseSign with this machine’s own OIDC identity; verifies with stock cosign
--project / --cluster / --namespace / --environment / --taginferredDeployment context
--bom-manufacturer / --lifecyclederivedBOM authoring identity

vulnetix bom

Read SBOM documents, including ones this CLI did not produce. Where cdx generates a CycloneDX document from a working tree, bom reads documents back in: CycloneDX 1.0–1.7, SPDX 2.2/2.3, and in-toto attestation envelopes — the shape Syft and BuildKit emit for container SBOMs, which a plain bomFormat check misses entirely.

Everything parsed normalises into one CycloneDX model, so an SPDX file and a CycloneDX file diff against each other and appear side by side in a corpus query. See the full BOM Command Reference.

vulnetix bom import <file|->              # parse and report; --out re-emits as CycloneDX
vulnetix bom validate <file>              # structure plus per-field completeness
vulnetix bom diff <before> <after>        # the change-review gate
vulnetix bom merge <file> <file...>
vulnetix bom tree <file>                  # --invert answers "what pulls this in"
vulnetix bom enrich <file> --out <file>   # resolve licences, attach vulns, apply VEX

vulnetix bom ls     --from ./sboms/       # corpus inventory
vulnetix bom where  <pkg> --from ./sboms/ # blast radius, direct vs transitive
vulnetix bom skew   --from ./sboms/       # inconsistent versions across services
vulnetix bom search <query> --from ./sboms/
FlagDefaultDescription
--out-Where import, merge and enrich write their document
--from-File, directory or glob for the corpus queries (repeatable)
--fail-onnonediff gate: any, added, removed, downgraded, vuln-added, license-regression
--fail-on-foundfalsewhere gate: exit 1 when the package is present
--fail-on-count-1skew gate: exit 1 above this many skewed packages
--min-score0validate gate on the completeness score
--verify-attestationfalseimport: verify the signature before trusting the document
-o, --outputprettypretty, json; diff also accepts markdown

vulnetix vex

Read, validate, merge and apply VEX statements — OpenVEX 0.2.0, CycloneDX VEX and CSAF 2.0 VEX — including ones this CLI did not write. That is the case VEX exists for: an upstream publishing “this CVE does not affect the configuration we ship” reaching your scan. See the full VEX Command Reference.

vulnetix vex apply --vex vendor.openvex.json --bom sbom.cdx.json
vulnetix vex ls --vex ./vex/
vulnetix vex validate --vex ./vex/
vulnetix vex merge --vex ./vex/ --out merged.openvex.json
FlagDefaultDescription
--vex-VEX file or directory (repeatable, required)
--bom-apply: the SBOM to apply statements to
--out-Where apply and merge write
--fail-on-effective-1Exit 1 above this many vulnerabilities surviving VEX
--status-ls: filter by not_affected, affected, fixed, under_investigation

Matching is not exact equality on (vulnerability, purl) — that is why VEX so often appears to do nothing, and it fails silently. Version ranges, unversioned products, aliases and URL-form identifiers are all handled, and every match records why it matched.

--vex-file and --no-vex apply the same statements during a scan, in one place before the gates, so every gate honours VEX by construction. Suppressed findings are annotated, never deleted, and counted separately.


vulnetix attest

Verify signatures and in-toto provenance on artefacts you consume. Reads what cdx --sign writes and anything else in those formats. See the full Attest Command Reference.

vulnetix attest verify sbom.cdx.json
vulnetix attest verify sbom.cdx.json --strict
vulnetix attest verify sbom.cdx.json --identity 'https://github.com/acme/repo/...' --issuer github
FlagDefaultDescription
--identity-Require this exact signer (the command prints the one it found)
--identity-regex-Require the signer to match a pattern
--issuer-Require this OIDC issuer — a URL or github, gitlab, google, microsoft, buildkite, codefresh
--strictfalseRequire the signer to be pinned; fails naming the exact flags to add
--trusted-rootresolvedRoot of a private Sigstore deployment
--require-Fail when a named check did not run (repeatable)
--verbosefalseShow every check, including the ones that passed

The Sigstore public-good root is built in, so the certificate chain is validated by default, as cosign does it. --trusted-root is an override for a private deployment, resolving through SIGSTORE_ROOT_FILE and .vulnetix/trusted-root.pem first — and the output names whichever anchor answered.


vulnetix scan

Run every analysis in one pass. scan is an orchestrator: each pass is owned by its own subcommand (sca, sast, secrets, containers, iac, license, malscan, aibom, cbom) and scan composes them into one set of results, one SBOM and one quality-gate verdict. --evaluate-* selects a subset; --no-* switches a pass off. See the full Scan Command Reference for details.

vulnetix scan [flags]
FlagDefaultDescription
--path.Directory to scan
--depth3Max recursion depth
--exclude-Exclude paths matching glob (repeatable)
--include-ignoredfalseInclude .gitignore-matched files (SAST/secrets/containers/IaC; sca and malscan always scan them)
-o, --output-Output target (repeatable): json-cyclonedx, json-sarif for stdout; .cdx.json, .sarif file paths to write to file
--concurrency-Deprecated, no-op. Set VULNETIX_SCA_CONCURRENCY (default 6) instead
--no-progressfalseSuppress progress indicators
--severity-Exit 1 if any vuln or SAST finding meets or exceeds: low, medium, high, critical
--block-malwarefalseExit 1 when any dependency is a known malicious package
--block-eolfalseExit 1 when a runtime or package dependency is end-of-life
--results-onlyfalseOnly output when findings exist; completely silent when the scan is clean
--no-ci-package-analysisfalseSkip dependency extraction from CI/CD pipeline files, including GitHub Actions workflows
--no-shell-package-analysisfalseSkip dependency extraction from shell scripts, Makefiles and task recipes
--evaluate-sast / --no-sast-Enable/disable SAST (general static analysis rules)
--evaluate-sca / --no-sca-Enable/disable SCA (package manifest vulnerability analysis)
--evaluate-licenses / --no-licenses-Enable/disable license analysis
--evaluate-secrets / --no-secrets-Enable/disable secret-detection rules
--enable-containers / --no-containers-Enable/disable container file analysis
--evaluate-iac / --no-iac-Enable/disable IaC file analysis
--no-malscanfalseSkip the in-process malscan malware pass (runs by default)
--vex-file-Apply VEX statements before gates are evaluated (repeatable)
--no-vexfalseIgnore --vex-file
--policy-file / --exceptions-filediscoveredLicence policy and exceptions
--project / --cluster / --namespace / --environment / --taginferredDeployment context
--bom-manufacturer / --lifecyclederivedBOM authoring identity
--disable-default-rulesfalseSkip built-in SAST rules (external --rule repos still loaded)
-R, --rule-External SAST rule repo in org/repo format (repeatable) — see Custom Rule Repositories
--dry-runfalseDetect files and parse packages only — zero API calls
--from-memoryfalseReconstruct from .vulnetix/sbom.cdx.json without API calls

vulnetix sca

Run only Software Composition Analysis — vulnerability analysis on package manifests plus CI/CD and shell install commands. All other features (SAST, licenses, secrets, containers, IaC) are disabled. See the SCA Command Reference.

vulnetix sca [flags]

Equivalent to vulnetix scan --evaluate-sca --no-sast --no-secrets --no-containers --no-iac --no-licenses.

When --block-malware (or the org blockMalware policy) is in effect, sca also runs the in-process malscan pass over the installed dependencies and gates on any locally-detected malware.

--vex-file, --no-vex, --policy-file, --exceptions-file and the deployment-context flags are registered on every member of the scan family — scan, sca, sast, secrets, containers, iac — and honoured by all of them.


vulnetix fix

Resolve vulnerable dependencies to safe versions, apply the change with the project’s own package manager, and rescan to confirm the finding is gone. This is the owner of remediation: --sca-autofix on the scan family triggers the same pipeline in-pass. vulnetix autofix is an alias. See the full Fix Command Reference.

vulnetix fix [path] [flags]
FlagDefaultDescription
--strategystableFix target strategy: stable, safest, latest
--manifest-Restrict edits to one manifest file
--max-major-bump0Refuse targets crossing more than N major versions
--yesfalseNon-interactive: safe defaults, never prompt
--dry-runfalseShow the fix plan and change nothing

vulnetix report

Render the results of the last scan from .vulnetix/sbom.cdx.json — no discovery, no parsing, and by default no network calls at all. scan --from-memory is a deprecated alias for it. See the full Report Command Reference.

vulnetix report [path] [flags]
FlagDefaultDescription
--path.Project directory whose .vulnetix/ results are rendered
--fresh-exploitsfalseRe-fetch exploit intelligence for the stored findings
--fresh-advisoriesfalseRe-fetch remediation plans
--fresh-vulnsfalseRe-check affected version ranges and scoring

vulnetix malscan

Scan the project’s locally-installed dependencies for malware in-process — STIX IOC filesystem scan, manifest/install-script pattern detection, IOC extraction, and known-bad artifact hashing — and emit SARIF evidence. Complements --block-malware (a known-malicious-package policy lookup) by inspecting the installed bytes themselves. See the full Malscan Command Reference.

vulnetix malscan [path] [flags]
FlagDefaultDescription
--path.Directory to scan (positional [path] overrides; defaults to the git root)
--include-homefalseAlso scan user-scoped/home caches (~/.npm, ~/go/pkg/mod, ~/.cargo, …)
-o, --outputprettyTerminal output format: pretty, json, sarif
--output-file-SARIF output path (default .vulnetix/malscan.sarif)
--no-ioc-feedsfalseSkip the STIX network fetch; run detect + badhash only (offline)
--no-binary-analysisfalseDo not extract/match IOCs in binary files
--no-uploadfalseDo not submit findings (submitted automatically when authenticated)

Exit code 1 on any malware found. Also runs as a pass inside scan (default on) and sca (when --block-malware/org policy is in effect).


vulnetix jail

Gate the pipeline on the organisation’s policy over the repository’s accumulated state — vulnerabilities past their remediation window, dependencies past end of life, strategic migrations that have not landed, hygiene categories that regressed. Distinct from the quality gate, which grades a single scan’s findings. See the full Jail Command Reference.

vulnetix jail [flags]
FlagDefaultDescription
--path.Repository path to derive identity from
--no-failfalseReport the verdict but always exit 0
--on-stalepolicyOverride the staleness posture (fail, warn, pass) — tightening only
--staleness-dayspolicyOverride the staleness window — tightening only
--vex-out.vulnetix/jail.vex.jsonWhere to write the VEX document
--vex-formatopenvexopenvex or cyclonedx
--sarif-out.vulnetix/jail.sarifWhere to write the SARIF document
--no-artefactsfalseDo not write either document
-o, --outputprettyTerminal output format: pretty, json

Exit 0 clear, 1 jailed, 2 usage error, 3 indeterminate (the backend state a rule needs is stale or missing). Exit 3 is deliberately not exit 1: a breach is fixed by a developer, missing coverage by whoever owns the CI configuration. Subcommands explain, list and exempt inspect and waive without gating. Also available as a --jail flag on every scan-family command.


vulnetix sast

Run only Static Application Security Testing. All other features are disabled. See the SAST Command Reference.

vulnetix sast [flags]

Equivalent to vulnetix scan --evaluate-sast --no-sca --no-secrets --no-containers --no-iac --no-licenses.


vulnetix secrets

Run only secret detection — identifies hardcoded credentials, API keys, and tokens. All other features are disabled. See the Secrets Command Reference.

vulnetix secrets [flags]

Equivalent to vulnetix scan --evaluate-secrets --no-sast --no-sca --no-containers --no-iac --no-licenses.


vulnetix containers

Run only container file analysis — checks Dockerfiles and Containerfiles, and can inspect supplied rootfs/archive inputs for installed package DBs and ELF binaries. All other features are disabled. See the Containers Command Reference.

vulnetix containers [flags]

Equivalent to vulnetix scan --enable-containers --no-sast --no-sca --no-secrets --no-iac --no-licenses.


vulnetix iac

Run only Infrastructure as Code analysis — checks Terraform HCL and Nix files. All other features are disabled. See the IaC Command Reference.

vulnetix iac [flags]

Equivalent to vulnetix scan --evaluate-iac --no-sast --no-sca --no-secrets --no-containers --no-licenses.


vulnetix ignore

Manage suppression (“ignore”) rules for scanner findings. Aliased suppress. See the full Ignore / Suppress Command Reference.

vulnetix ignore add [flags]     # create a rule
vulnetix ignore list [flags]    # list active rules
vulnetix ignore remove [flags]  # deactivate a rule
vulnetix ignore sync            # sync rules with the org backend

A rule is anchored by at least one of --rule (rego rule id), --finding (CVE / vuln id), or --file, and can be scoped by --category and typed with --type (false_positive, wont_fix, risk_accepted, mitigated, deferred, rego_rule, nosec). Use --reason to record why and --expires-in to auto-expire it. A finding is suppressed only when every anchor matches. Rules live in .vulnetix/memory.yaml and work offline; authenticated, they sync org-wide. Inline nosec comments in code are also honoured — see the reference.


vulnetix triage

Fetch vulnerability alerts from external providers (e.g. GitHub Dependabot) and enrich them with remediation intelligence from the Vulnetix VDB.

vulnetix triage [flags]
vulnetix triage status [flags]

Supported providers: github (Dependabot alerts via the gh CLI)

Flags:

FlagTypeDefaultDescription
--providerstringgithubVulnerability data provider (github)
--repostringautoRepository in owner/repo format (auto-detected from git context or GITHUB_REPOSITORY)
--allboolfalseInclude dismissed alerts (open only by default)
--concurrencyint5Number of concurrent VDB lookups
--formatstringtuiOutput format: tui, json, text
--include-guidancebooltrueInclude CWE remediation guidance

For each alert the triage command fetches:

  • A context-aware remediation plan (upgrade path, verification steps)
  • Fix data from registry, distribution, and upstream source in parallel

Subcommands:

triage status

Verify that provider CLI tools are installed, authenticated, and functional.

vulnetix triage status [--format text|json]

Flags:

FlagTypeDefaultDescription
--formatstringtextOutput format: text, json

Examples:

# Interactive TUI (default)
vulnetix triage

# Triage a specific repository
vulnetix triage --repo owner/repo

# Include dismissed alerts, output as JSON
vulnetix triage --all --format json

# Check GitHub CLI auth and repo detection
vulnetix triage status

# Check status as JSON
vulnetix triage status --format json

Prerequisites: The github provider requires the gh CLI to be installed and authenticated (gh auth login).


vulnetix vdb

Interact with the Vulnetix Vulnerability Database (VDB) API. See the full VDB Command Reference for all subcommands and detailed usage.

vulnetix vdb <subcommand> [flags]
SubcommandDescription
vuln <vuln-id>Get information about a vulnerability (CVE, GHSA, PYSEC, and 75+ formats)
ecosystemsList available package ecosystems
product <name> [version] [ecosystem]Get product version information
vulns <package>Get vulnerabilities for a package
specGet the OpenAPI specification
exploits <vuln-id>Get exploit intelligence for a vulnerability
exploits searchSearch exploits across all vulnerabilities
exploits sourcesList exploit intelligence sources
exploits typesList exploit type classifications
fixes <vuln-id>Get fix data for a vulnerability
fixes distributionsList supported Linux distributions for fix advisories
versions <package>Get all versions of a package across ecosystems
gcveGet vulnerabilities by date range
gcve issuancesList GCVE issuance identifiers by calendar month
purl <purl-string>Query VDB using a Package URL (PURL)
ids <year> <month>List CVE identifiers published in a calendar month
search <prefix>Search CVE identifiers by prefix
sourcesList all vulnerability data sources
metrics typesList all vulnerability metric/scoring types
statusCheck API health and display CLI/auth metadata
packages search <query>Full-text search across packages
ecosystem package <eco> <pkg>Get package info within an ecosystem
ecosystem group <eco> <grp> <art>Get group/artifact info (Maven-style)
eol product <product>Get end-of-life lifecycle data for a product (runtime, framework)
eol package <eco> <pkg> <ver>Get end-of-life lifecycle data for a specific package version

V2-only subcommands — the v2 API is now the default; -V v1 is the legacy override:

SubcommandDescription
workarounds <vuln-id>Get workaround information
advisories <vuln-id>Get advisory data
cwe guidance <vuln-id>Get CWE-based guidance
kev <vuln-id>Get CISA KEV status
timeline <vuln-id>Get vulnerability timeline
affected <vuln-id>Get affected products/packages
scorecard <vuln-id>Get vulnerability scorecard
remediation plan <vuln-id>Get context-aware remediation plan

Tree-sitter reachability

vulnetix vdb vuln and the remediation flows automatically perform tree-sitter reachability analysis against your project, recording exactly which files (and line ranges) match the vulnerable pattern. Control with --reachability=direct|transitive|both|off (default both). See the Reachability Analysis section for the full feature overview, Languages for the 17 bundled grammars, and Internals for how the CGo cross-compile is structured.


vulnetix version

Print the version number of Vulnetix CLI.

vulnetix version [flags]

Also checks for available updates and prints a notice if a newer version exists.

Flags:

FlagTypeDefaultDescription
--shortboolfalsePrint only the version number (no build info or update check)

Examples:

# Full version info (with update check)
vulnetix version

# Just the version number, e.g. for scripting
vulnetix version --short

vulnetix update

Update the Vulnetix CLI to the latest release from GitHub.

vulnetix update

Checks the GitHub Releases API for the latest version, then downloads and replaces the current binary in-place. Binaries built from source (via go build or make dev) are not updated — use your build toolchain instead.

Behavior:

  • If already up to date: prints Already up to date (vX.Y.Z).
  • If a newer version is available: prints the upgrade path and performs the in-place update
  • If built from source: exits with an error indicating that go build should be used

Examples:

# Check for and apply the latest update
vulnetix update

vulnetix triage

Triage vulnerability alerts from multiple providers (e.g. GitHub Dependabot) with integrated remediation intelligence from the Vulnetix Vulnerability Database.

vulnetix triage [flags]
vulnetix triage status      # Check provider CLI health

The triage command fetches vulnerability alerts from external providers, enriches each alert with VDB data (remediation plans, fix availability across registry/distribution/source), and presents them in an interactive TUI or text/JSON output.

Flags:

FlagTypeDefaultDescription
--providerstringgithubVulnerability data provider
--repostringauto-detectedRepository in owner/repo format
--allboolfalseInclude dismissed alerts (open only by default)
--concurrencyint5Number of concurrent VDB lookups
--formatstringtuiOutput format: tui, json, text
--include-guidancebooltrueInclude CWE remediation guidance
--org-idstringcommunityOrganization ID (uses stored credentials or community fallback)

Examples:

# Interactive TUI with auto-detected repo
vulnetix triage

# Specify a repo and include dismissed alerts
vulnetix triage --repo owner/repo --all

# Non-interactive text output
vulnetix triage --format text

# JSON output for scripting
vulnetix triage --repo owner/repo --format json

# Check provider CLI health
vulnetix triage status

triage status

Verify that provider CLI tools (e.g. gh) are installed, authenticated, and can detect the current repository.

# Text output (default)
vulnetix triage status

# JSON output for scripting
vulnetix triage status --format json

Flags:

FlagTypeDefaultDescription
--formatstringtextOutput format: text, json

--provider is a flag on vulnetix triage, not on triage status; it defaults to vulnetix and accepts github.

Output (text):

  GitHub CLI Status
──────────────────────────────────────────

  ✔ gh binary   : /usr/bin/gh
  ✔ authenticated: octocat
     Host         : github.com
     Token source : OAuth Token
     Token scopes : repo, workflow
  ✔ repo detected : owner/repo

vulnetix completion

Generate shell autocompletion scripts.

vulnetix completion [bash|zsh|fish|powershell]

Authentication

Full coverage lives in Authentication. Summary:

Methods

MethodFlagEnvironment--org-id
Bearer token--tokenVULNETIX_API_TOKENNot needed — org resolved server-side
ApiKey--api-keyVULNETIX_API_KEY + VULNETIX_ORG_IDRequired
SigV4--secretVVD_ORG + VVD_SECRETRequired

SigV4 validates via a JWT token exchange with the VDB API, then derives the request credential as HMAC-SHA256(secret, orgID).

Credential Storage

StorePathUse case
keyring (recommended)OS keychain, metadata in ~/.vulnetix/credentials.jsonSecrets never touch disk in plaintext
home (default)~/.vulnetix/credentials.jsonUser-wide credentials, mode 0600
project.vulnetix/credentials.jsonProject-scoped credentials, mode 0600
.netrc~/.netrc or %USERPROFILE%\_netrcPackage Firewall credentials; also a fallback ApiKey source

Override the home directory with --store-dir DIR or VULNETIX_CREDENTIALS_DIR. If no OS keychain backend is found, --store keyring warns and falls back to home.

Credential Precedence

The CLI loads credentials in this order (first complete match wins):

  1. VULNETIX_API_TOKEN (Bearer)
  2. VULNETIX_API_KEY + VULNETIX_ORG_ID (ApiKey)
  3. VVD_ORG + VVD_SECRET (SigV4)
  4. Project dotfile: .vulnetix/credentials.json
  5. Home directory: ~/.vulnetix/credentials.json
  6. .netrc / _netrc machine packages.vulnetix.com
  7. Embedded community credential (VDB read-only, community rate limits)

Flags apply to the auth login command that writes a credential; they are not part of this load chain. Inspect the winner with vulnetix auth status.

Global Flags

These flags are available on the root command and inherited by subcommands:

FlagTypeDefaultDescription
--org-idstringstoredOrganization ID (UUID); uses stored credentials if not set
-v, --verboseboolfalseShow verbose diagnostic output (rate limits, retries, cache status, auth notes)
--silentboolfalseSuppress all log output; print only the final result
--no-progressboolfalseSuppress progress indicators
--no-bannerboolfalseSuppress the startup banner
--no-analyticsboolfalseDisable anonymous usage analytics
--disable-memoryboolfalseDisable .vulnetix/memory.yaml reads and writes
--version--Print the version and exit
--help--Help for any command
Note --verbose is not a log level — the CLI has no --debug flag and reads no DEBUG environment variable. It un-suppresses extra diagnostics on stderr. --silent suppresses info, status and warning output; errors and results are always printed.

vulnetix --version prints the bare version. vulnetix version prints the full report (commit, build date, and the versions of the bundled malscan-engine, vdb-cyclonedx and OPA modules).

Environment Variables

VariableDescriptionUsed By
VULNETIX_API_KEYDirect API key (hex digest)auth, upload, vdb, triage
VULNETIX_ORG_IDOrganization ID for Direct API Key authauth, upload, vdb, triage
VVD_ORGOrganization UUID for SigV4 authvdb, auth
VVD_SECRETSecret key for SigV4 authvdb, auth
GITHUB_TOKENGitHub API token (also used for license resolution fallback)gha upload, license, scan
GH_TOKENAlternative GitHub token variable (checked if GITHUB_TOKEN is not set)license, scan
GITHUB_REPOSITORYGitHub repository (owner/name)gha upload, triage (auto-detect)
GITHUB_RUN_IDGitHub Actions workflow run IDgha upload
GITHUB_API_URLGitHub API base URL (default: https://api.github.com)gha upload
GITHUB_ACTIONSSet to true in GitHub Actionsgha upload

Exit Codes

CodeDescription
0Success
1General error
2Invalid arguments
3Authentication error
4Network error
5File not found

Common Usage Patterns

Basic Usage

# Run authentication healthcheck
vulnetix

Artifact Upload

# Upload an SBOM
vulnetix upload --file sbom.cdx.json

# Upload SARIF from a scanner
semgrep --sarif > results.sarif && vulnetix upload --file results.sarif

# Upload via the upload command with format override
vulnetix upload --file report.json --format sarif --json

CI/CD Integration

# GitHub Actions
vulnetix gha upload --org-id "$VULNETIX_ORG_ID"

# GitLab CI
vulnetix upload --file results.sarif

# Jenkins
vulnetix upload --file results.sarif
VDB Command Reference
Access the Vulnetix Vulnerability Database for vulnerability lookups, package vulnerabilities, and ecosystem data.
Reachability Analysis
Static-analysis reachability for vulnerabilities. Uses tree-sitter S-expression queries derived from CVE data to confirm whether the vulnerable code pattern is present in the installed package, and whether first-party code (or other dependencies) actually reaches it.
VDB Quick Start
Get started with the Vulnetix Vulnerability Database CLI in minutes with step-by-step setup and first queries.
Report Command Reference
Render the results of the last scan from .vulnetix/sbom.cdx.json, with optional targeted refreshes.
Scan Command Reference
Discover manifest files locally, query the VDB for vulnerabilities, and write a CycloneDX SBOM — no file uploads.
BOM Command Reference
Read, validate, diff, merge, query and enrich SBOM documents — including ones this CLI did not produce.
CDX Command Reference
Generate a standalone CycloneDX SBOM from manifests, installed packages, containers, CI/CD files, shell scripts and compiled binaries.
License Command Reference
Analyze package licenses for conflicts, policy compliance, and risk — entirely local with multi-source resolution.
SCA Command Reference
Run only Software Composition Analysis — vulnerability analysis on package manifests with no other scan categories enabled.
Shell Completions
Set up tab completion for Vulnetix CLI commands, flags, and values in your shell.
Fix Command Reference
Apply validated dependency fixes with the project's package manager, then rescan to confirm the finding is gone.
SAST Command Reference
Run only Static Application Security Testing — evaluates Rego-based rules for code-level security issues with no other scan categories enabled.
VEX Command Reference
Read, validate, merge and apply VEX statements — OpenVEX, CycloneDX VEX and CSAF VEX — including ones this CLI did not write.
SCA Autofix
Apply validated dependency fixes with your package manager, rescan to confirm, and emit VEX for resolved vulnerabilities.
Secrets Command Reference
Run only secret detection — identifies hardcoded credentials, API keys, tokens, and private keys in source code, binaries, and git history.
AIBOM Command Reference
Discover AI coding agents and AI usage, and emit a CycloneDX AI Bill of Materials.
Containers Command Reference
Run only container file analysis — checks Dockerfiles and Containerfiles for security misconfigurations.
CBOM Command Reference
Discover cryptographic usage and emit a CycloneDX Cryptography Bill of Materials with post-quantum posture.
IaC Command Reference
Run only Infrastructure as Code analysis — checks Terraform HCL files for security misconfigurations.
ai-firewall
Command reference for vulnetix ai-firewall — install, status, policy, key, apply, export, baseline, inventory, snippet, uninstall.
Analyze Command Reference
Build the org tech-stack graph and report evidence-backed repository metrics.
Malscan Command Reference
Scan your locally-installed dependencies for malware in-process — STIX IOCs, manifest/install-script pattern detection, and known-bad artifact hashing — with SARIF evidence.
Ignore / Suppress Command Reference
Suppress scanner findings you have triaged — from the CLI with vulnetix ignore, inline in code with nosec comments, offline in .vulnetix/memory.yaml, and org-wide once you authenticate.
Jail Command Reference
Gate a pipeline on your organisation's policy over a repository's accumulated state — vulnerabilities past SLA, end-of-life dependencies, strategic migrations and hygiene — with VEX and SARIF evidence.
Attest Command Reference
Verify signatures and in-toto provenance on artefacts, with the Sigstore public-good root built in.
tea
Publish to and read from the OWASP Transparency Exchange API: discovery, resolution, publication, distributions, sharing, and the one-shot `tea release` for pipelines.