AI security at the call site
Prompt injection (LLM01), embedding leakage (LLM06), agent over-privilege (LLM07), MCP server hardening. No commercial scanner ships these as a cohesive family today.
Compare · Migrate from Snyk
Snyk's commercial scanner covers dependency, code, IaC, and container. Nox covers all four and ships first-class AI application security (prompt injection, embedding leakage, agent over-privilege, MCP hardening) with a Cosign-signed plugin marketplace and a manifest-driven plugin model. This page maps capabilities one-for-one and shows the 30-minute migration.
Capability map
| Snyk | Nox | Notes |
|---|---|---|
| snyk test (dependencies) | nox scan (VULN-001..003) | OSV-backed, offline cache, same JSON shape |
| snyk monitor (SaaS state) | commit findings.json + diff in CI | No SaaS, git-native baseline |
| Reachability (paid tier) | nox/reachability (verified, bundled) | 7 ecosystems: Go, PyPI, npm, Cargo, Maven, RubyGems, NuGet |
| Snyk Code (SAST) | core SEC-* + nox/sast | 160 secret detectors in core; code-injection in plugin |
| Snyk IaC | core IAC-001..369 | Terraform, K8s, Dockerfile, GHA, Ansible, Kustomize, Serverless |
| Snyk Container | core CONT-* + nox/container | Pin/tag rules in core; image scan in plugin (22 rules) |
| Snyk AI (limited) | core AI-* + LLM/Agentic families | OWASP LLM Top 10 + Agentic shipped today |
| snyk ignore (policy file) | OpenVEX (vex.json) | Standard format, fingerprint-pinned, RuleID-matching |
| Severity threshold | --severity-threshold high | Same semantics |
| GitHub PR comments | nox-hq/[email protected] action | SARIF upload + inline review comments |
| Org policy / dashboard | .nox.yaml + nox/policy-gate | Code, not config UI |
Why switch
Prompt injection (LLM01), embedding leakage (LLM06), agent over-privilege (LLM07), MCP server hardening. No commercial scanner ships these as a cohesive family today.
Every official plugin signed via Sigstore keyless OIDC. Trust chain: cosign(checksums.txt) → tarball SHA → registry digest. Snyk has no equivalent — third-party scanners run unverified.
Track tainted input through service hops: request.json → handler → microservice call → chat.completions.create. Snyk and Semgrep treat each file in isolation.
Single binary. Scans run entirely offline (OSV lookups gated behind --no-osv). Source code never leaves the build host.
One ai.inventory.json covers Python ingest + Go service + TypeScript frontend with model invocations, auth env vars, and endpoints per call site.
.nox.yaml plugins.required ships pinned, signed plugin sets the way package.json ships dependencies. No dashboard config.
Built-in MCP server lets Claude / Cursor / any agent query scan results read-only. Snyk has no agent surface.
Free to use, fork, deploy in air-gapped environments without a vendor relationship.
Be honest
By design. Use nox dashboard for a static HTML view, or roll up per-repo findings.json into a warehouse.
Nox consumes OSV. If you rely on Snyk-private CVE data, author a custom rule pack or wait for OSV import.
Fewer enterprise integrations (Jira, ServiceNow). Build via the MCP server or consume findings.json.
nox fix runs locally. Pair with Renovate / Dependabot for PR creation.
30-minute migration
snyk test to nox scan
The migration is mechanical. nox vex init reads your existing findings and produces an OpenVEX document that replaces snyk.policy. Wire the GitHub Action and you have severity-threshold gating, SARIF upload, and inline PR comments.
# 1. Install nox.
brew install felixgeelhaar/tap/nox
# 2. Run a baseline scan.
nox scan . --output nox-out
# 3. Bootstrap a VEX document from current findings (replaces snyk.policy).
nox vex init --input nox-out/findings.json --output vex.json
# 4. Edit vex.json — set status=not_affected for reviewed findings.
$EDITOR vex.json
# 5. Wire CI (replaces snyk-monitor / snyk-test).
cp examples/ci-baseline/.github/workflows/security.yml .github/workflows/
# 6. Verify.
nox doctor
nox scan . --vex vex.json Start with a parallel scan — keep Snyk running, run Nox alongside it for a sprint, then cut over.