Compare · vs Semgrep

Nox vs Semgrep: AI-native, signed extensions, cross-file taint free.

Semgrep is a strong general-purpose SAST. Nox is purpose-built for teams shipping AI features and pairs SAST with cosign-signed plugins, AIBOM, and MCP-native agent access. Where Semgrep gates cross-file taint behind the Pro tier, Nox ships interprocedural taint plus AI-specific source-to-sink in the open-source core.

Capability map

Semgrep feature → Nox equivalent

SemgrepNoxNotes
Pattern-based SAST core taint engine across 21 languages Semgrep DSL is more expressive; Nox computes dataflow rather than matching shapes
Cross-file taint (interfile) core TAINT-001..007 (interprocedural) + AI taint Free in Nox. Paid tier in Semgrep.
AI security rules 88 AI/MCP/agent rules + AGENTFLOW dataflow Semgrep relies on community AI rules; no MCP coverage
SCA / dependencies core VULN-* + nox/reachability (verified) Semgrep Supply Chain is paid
IaC scanning 500 IAC rules across Terraform, K8s, Dockerfile, GHA, Ansible, Kustomize, Serverless, Helm Semgrep has IaC rules but breadth is narrower
Secrets 913 SEC rules core Semgrep secrets is paid
Custom rules YAML rule packs Semgrep DSL is genuinely better for AST patterns. Nox uses RE2 + structural matchers.
CI gating .nox.yaml policy thresholds + --fail-on-degraded Both ship CI gates; only Nox fails on checks that could not run
Editor integration nox lsp + VS Code and JetBrains extensions Shipped — deterministic and offline
Cosign-signed extensions 18 verified plugins, all Sigstore keyless No equivalent in Semgrep
Pricing $0 forever, Apache 2.0 Semgrep paid for serious use ($40-100/dev/mo)

Why switch

What you gain

AI security depth

Prompt injection at the call site (LLM01), embedding leakage (LLM06), agent over-privilege (LLM07), MCP server hardening (MCP-001..008). Semgrep relies on community AI rules with no cohesive family.

Cross-file taint is free

Semgrep gates interfile analysis behind the Pro tier. Nox's TAINT-001..007 ship in core across 21 languages, with function summaries propagating taint through helper calls and the call path named in the finding — plus AI-specific source-to-sink (request.json → service hop → chat.completions.create).

Cosign-signed plugin marketplace

Every plugin in the official registry verified via Sigstore keyless OIDC. Semgrep rules are uploaded files with no supply-chain integrity story.

Single binary covers SAST + SCA + IaC + AI + secrets

One pass, deterministic, offline. Semgrep's coverage requires multiple paid tiers stitched together.

AIBOM v2.0

Polyglot AI component inventory naming every model invocation, auth env var, and endpoint. Audit-ready. Semgrep has nothing equivalent.

Be honest

What you give up

Rule authoring DX

Semgrep DSL beats RE2-based pattern matching for complex AST queries. If you author dozens of custom rules, Semgrep wins.

Community rule volume

Semgrep ships thousands of community rules across niche languages, and a marketplace of third-party rule packs. Nox's 1,528 rules are curated in-tree, which keeps them testable and deterministic but means no community long tail.

Type-aware analysis

Semgrep Pro has type-aware analysis for Java/JavaScript/Python that catches edge cases pattern matching misses.

30-minute migration

From semgrep ci to nox scan

# 1. Install nox.
brew install felixgeelhaar/tap/nox

# 2. Run a baseline scan.
nox scan . --output nox-out

# 3. Convert your Semgrep .semgrep.yml to a nox baseline.
nox vex init --input nox-out/findings.json --output vex.json

# 4. Wire CI (replaces semgrep ci).
cp examples/ci-baseline/.github/workflows/security.yml .github/workflows/

# 5. Verify.
nox doctor
nox scan . --vex vex.json

Ready to migrate?

Run Nox alongside Semgrep for a sprint, compare findings, then cut over.