Written in Rust

foxguard

Fast security linting for local workflows and modern codebases.

Scan JS/TS, Python, and Go with built-in rules, JSON or SARIF output, and Semgrep-compatible rule loading on a Rust engine.

Star on GitHub
terminal
$ foxguard .
Scanning 1,247 files...
src/auth/login.js:14:5
critical js/no-sql-injection CWE-89
SQL query built with template literal interpolation
src/utils/config.py:7:1
high py/no-hardcoded-secret CWE-798
Hardcoded secret in 'api_key'
cmd/server.go:42:3
high go/no-ssrf CWE-918
Potential SSRF via http.Get with variable URL
Found 3 issues in 1,247 files (0.84s)

Fast enough for local workflows

Checked-in benchmark suite: express repository, 141 files

foxguard
0.077s
Semgrep
4.902s
edit
foxguard checks (77ms)
fix
commit

Semgrep / OpenGrep: broad rule ecosystems. foxguard: fast local feedback on a Rust engine.

Features

Security linting built for local feedback and existing workflows.

< 60ms

Local-first speed

Fast enough for edit-save-commit loops, hooks, and scripts.

.yaml

Custom rules

Load a useful Semgrep-compatible YAML subset from a file or directory.

36

Built-in coverage

Security checks for JS/TS, Python, and Go, including framework-specific rules.

SARIF

CI-friendly output

Use terminal output locally or JSON and SARIF in automation.

Where It Fits

foxguard is best positioned as a local-first complement, not a claim of full tool replacement.

SEMGREP / OPENGREP

Broad ecosystem coverage

Large existing rule ecosystems
Strong CI and platform fit
Broader language and analysis scope
FOXGUARD

Fast local feedback on a Rust engine

Useful built-in rules out of the box
Terminal, JSON, and SARIF output
Semgrep-compatible YAML subset loading with --rules

Install

Get started in seconds.

Rust / Cargo
cargo install foxguard
npm / npx
npx foxguard .

Rules

36 rules across 3 languages, each mapped to a CWE identifier

JavaScript / TypeScript 16 rules
js/no-eval critical CWE-95
js/no-hardcoded-secret high CWE-798
js/no-sql-injection critical CWE-89
js/no-xss-innerhtml high CWE-79
js/no-command-injection critical CWE-78
js/no-document-write high CWE-79
js/no-open-redirect medium CWE-601
js/no-weak-crypto medium CWE-327
js/no-path-traversal high CWE-22
js/no-prototype-pollution high CWE-1321
js/no-unsafe-regex medium CWE-1333
js/no-cors-star medium CWE-942
js/express-no-hardcoded-session-secret high CWE-798
js/express-cookie-no-secure medium CWE-614
js/express-cookie-no-httponly medium CWE-1004
js/express-direct-response-write high CWE-79
Python 13 rules
py/no-eval critical CWE-95
py/no-hardcoded-secret high CWE-798
py/no-sql-injection critical CWE-89
py/no-command-injection critical CWE-78
py/no-path-traversal high CWE-22
py/no-weak-crypto medium CWE-327
py/no-pickle high CWE-502
py/no-yaml-load high CWE-502
py/no-debug-true medium CWE-489
py/no-open-redirect medium CWE-601
py/no-cors-star medium CWE-942
py/flask-debug-mode high CWE-489
py/django-secret-key-hardcoded high CWE-798
Go 7 rules
go/no-sql-injection critical CWE-89
go/no-command-injection critical CWE-78
go/no-hardcoded-secret high CWE-798
go/no-weak-crypto medium CWE-327
go/no-ssrf high CWE-918
go/gin-no-trusted-proxies medium CWE-346
go/net-http-no-timeout medium CWE-400

Open source. MIT licensed.

Star us on GitHub and help make codebases safer.

Star on GitHub