Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/irchaosclub/FANGS/llms.txt

Use this file to discover all available pages before exploring further.

Deviations are the core output of FANGS. Each deviation represents a single behavioral fingerprint — a network destination, DNS lookup, TLS SNI, file path, or spawned process — that appeared in a sandbox run but was not present in that package’s baseline. Use fangs deviation list to triage findings across packages and severity levels, and fangs deviation show to see the raw eBPF event that produced a specific finding.

Subcommands

SubcommandDescription
fangs deviation listList deviations with optional filters by package, severity, or run
fangs deviation show <deviation_id>Show full deviation metadata and the underlying evidence event

fangs deviation list

fangs deviation list [flags]

Flags

-package
string
Filter to deviations from runs of this package only.
-severity
string
Filter by severity level. Accepted values: info, warn, crit. Omit to include all severities.
-run-id
string
Filter to deviations from a specific run. Accepts the full run ID or a short hex prefix.
-limit
int
default:"50"
Maximum number of rows to return. Rows are ordered most-recently detected first.

Output Columns

ColumnDescription
DEV_IDShort hex prefix of the deviation’s UUID
DETECTEDUTC timestamp when the deviation was recorded
SEVSeverity: info, warn, or crit
CATEGORYDeviation category (see table below)
VALUEThe new fingerprint value (truncated to 60 characters)
RUN_IDShort hex prefix of the run that produced this deviation

Deviation Categories

CategoryDescriptionDefault Severity
net_new_destinationNew IP:port dialed, not in prior baseline runswarn
net_new_dnsNew hostname resolved via DNS lookupwarn
net_new_https_hostNew TLS Server Name Indication (SNI) valuewarn
fs_new_path_readNew file path read under a watched_paths prefixinfo
fs_new_path_writeNew file path written under a watched_paths prefixinfo
proc_new_execNew process executable spawnedwarn

Examples

# List all deviations (default: up to 50, all packages, all severities)
fangs deviation list

# Critical deviations only
fangs deviation list -severity crit

# All deviations for the axios package
fangs deviation list -package axios

# High-signal deviations for a specific run
fangs deviation list -run-id 7f2e90ab -severity warn

# Broad sweep: 200 most recent findings across all packages
fangs deviation list -limit 200

# JSON output — extract credential path reads
fangs -json deviation list -severity crit | \
  jq '.[] | select(.Category == "fs_new_path_read")'

fangs deviation show

Displays the complete record for a single deviation, including its suppression status and the raw eBPF evidence event that triggered it. The evidence event contains the kernel-level payload captured at the moment the fingerprint was first observed.
fangs deviation show <deviation_id>
<deviation_id> accepts either the full hex UUID or any unique short prefix (the same value shown in DEV_ID in deviation list output).

Output Fields

Deviation metadata:
FieldDescription
run_idThe run that produced this deviation
categoryDeviation category (e.g. net_new_destination)
valueThe full (untruncated) fingerprint value
severityinfo, warn, or crit
detectedUTC timestamp when the deviation was written
suppressedWhether this deviation is suppressed by an allow-list entry
Evidence event:
FieldDescription
Event number (#N)Sequential event ID within the run
typeeBPF probe type that generated the event (e.g. tcp_connect, dns_query, open_at)
ts_nsKernel monotonic timestamp in nanoseconds
JSON payloadFull event-specific data, pretty-printed (fields vary by probe type)

Output Examples

Deviation d4e5f6a1...
  run_id:    7f2e90ab...
  category:  net_new_destination
  value:     203.0.113.45:443
  severity:  warn
  detected:  2025-01-15 10:12:35 UTC
  suppressed: false

Evidence event #1847 (type=tcp_connect, ts_ns=1736934755123456789):
  {
    "dst_ip": "203.0.113.45",
    "dst_port": 443,
    "pid": 42,
    "comm": "node",
    "uid": 1000
  }

Acting on a Deviation

After reviewing a deviation, you have three options:

Promote to baseline

If the deviation is a legitimate behavior change (new CDN, updated dependency), promote the entire run: fangs baseline promote <run_id>. All deviations in the run are absorbed into the new baseline.

Suppress with allow-list

If the deviation is recurring noise (e.g. a shared CDN CIDR), add an allow-list entry so future runs won’t flag it: fangs allow add -kind cidr -value <CIDR> -note "reason".

Escalate

If the deviation looks malicious — especially credential path reads (/root/.ssh/, /etc/shadow) or unexpected outbound destinations — do not promote. Notify your security team and investigate the package before any production deployment.
# Promote the run containing this deviation into the baseline
fangs baseline promote 7f2e90ab

# Suppress the specific destination globally
fangs allow add -kind cidr -value 203.0.113.0/24 -note "known CDN"

# Suppress a path prefix for a specific package only
fangs allow add -kind path -value /tmp/npm- -package axios -note "npm temp files"
Never promote a run without a thorough investigation when it contains credential path reads (/root/.ssh/, /etc/shadow) or unexpected outbound destinations to non-CDN IPs — these are high-confidence indicators of a supply-chain compromise regardless of the assigned severity.

Build docs developers (and LLMs) love