feature comparison

How safesh compares to other tools

Several projects have taken aim at the curl | bash problem from different angles — fetch-and-diff, shell-hook interception, runtime sandboxing, or just running the script as-is. This page lays out, capability by capability, what each one actually ships today.

Headers link to each project so you can verify the claims yourself. If anything below looks wrong or out of date, please open an issue — we'd rather correct the table than misrepresent a peer tool.

Tools in this comparison

Drop-in replacement for bash in the curl-pipe-bash pattern. Buffers the script, runs categorized AST analysis, injects strict mode, records history.

Fetch + diff against last run + ShellCheck + confirm. Two flags total. The most direct peer; flagship feature is the diff signal.

Shell-hook based interception (tirith.sh) with a large rule pack across ~15 categories, threat-intel updates, and an MCP / AI-agent integration.

Sysdig's runtime approach: wrap the install in a session leader and use eBPF rules (Falco) to flag/block writes outside install paths and other escape attempts.

Feature matrix

Compact comparison of what each tool actually ships today. "Yes" means the capability is shipped and on by default; "partial" means the tool covers part of the capability or requires extra setup; "no" means the capability is absent.

Capability safesh (now) vet Tirith fbash + Falco
Full buffering before exec yes yes yes (run cmd) no
Strict-mode injection (set -euo pipefail) yes no no no
Categorized findings (AST) yes (8 cats) via shellcheck yes (~80 rules / 15 cats) n/a (runtime)
Diff against previous run no yes no no
Env stripping to baseline yes no no no
Integrity (SHA-256, sibling files) yes (URL mode) no no no
Signature verification (Sigstore / GPG) no no no no
History & audit log yes cache only logs via Falco
Network-target inventory yes (via --observe) no partial runtime
ANSI / bidi / zero-width detection yes no yes no
Homograph URL detection yes no yes no
Sandboxed execution yes (Linux, bwrap) no no yes (Linux)
Shell-hook / passive coverage no no yes no
MCP / AI-agent integration no no yes no
Threat-intel rule pack updates no no yes (signed) via Falco
Cross-platform (macOS / Linux / WSL) yes yes yes Linux only
Dry-run yes partial yes (check) no
yes — shipped and on by default partial — covers part, or requires extra setup no — not present
Different bets, not strict ranking. Each tool here picks a different point on the curve: vet bets on minimal flags and the diff signal; Tirith bets on always-on shell-hook coverage and a large signed rule pack; fbash + Falco bet on runtime containment via eBPF; safesh bets on static AST analysis, strict mode, and a small surface that runs anywhere bash does. Pick what fits your threat model.

Want to suggest a tool we missed, or a row that doesn't reflect reality? Open an issue — corrections welcome.