How It Works Features Integrations Pricing Changelog Docs Blog
Request access
Rule Library

500+ built-in rules. Every one CWE-mapped.

OWASP A01–A10 coverage across 7 languages. Every finding includes a CWE ID and OWASP category — not a generic "high severity" label. Extend with custom YAML rules for your own codebase patterns.

512 rules OWASP A01–A10 CWE-mapped
Python JS/TS Go Java Ruby Rust
OWASP Top 10 coverage

What gets caught

Category OWASP CWE Rules Python JS/TS Go Java Ruby Rust
SQL InjectionA03CWE-8948
Cross-Site ScriptingA03CWE-7935
Path TraversalA01CWE-2229
Hardcoded CredentialsA07CWE-79861
Insecure DeserializationA08CWE-50222
Broken AuthA07CWE-30644
SSRFA10CWE-91818
Command InjectionA03CWE-7831
Cryptographic FailuresA02CWE-32726
XML External EntityA05CWE-61115
Custom rules

Built-in rules cover OWASP. Custom rules cover your codebase.

Write YAML rules that encode your team's security conventions — internal auth patterns, custom ORM layers, domain-specific injection vectors. With taint tracking support, rules follow data flow rather than matching surface syntax.

rules/custom/no-direct-db-in-view.yaml
1id: GRCD-CUSTOM-DB-001
2severity: medium
3language: python
4message: Direct DB call in view layer — use repository pattern
5paths:
6 include: ["**/views/**", "**/api/**"]
7pattern-either:
8 - pattern: cursor.execute(...)
9 - pattern: engine.execute(...)
Read the rule authoring guide

CWE-mapped findings, inline in your PR.

Connect a repo and see your first scan results — with rule ID, severity, CWE, and suggested fix — in under 5 minutes.