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.
Compare · vs Semgrep
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 | Nox | Notes |
|---|---|---|
| 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
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.
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).
Every plugin in the official registry verified via Sigstore keyless OIDC. Semgrep rules are uploaded files with no supply-chain integrity story.
One pass, deterministic, offline. Semgrep's coverage requires multiple paid tiers stitched together.
Polyglot AI component inventory naming every model invocation, auth env var, and endpoint. Audit-ready. Semgrep has nothing equivalent.
Be honest
Semgrep DSL beats RE2-based pattern matching for complex AST queries. If you author dozens of custom rules, Semgrep wins.
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.
Semgrep Pro has type-aware analysis for Java/JavaScript/Python that catches edge cases pattern matching misses.
30-minute migration
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 Run Nox alongside Semgrep for a sprint, compare findings, then cut over.