Guardrail

The safety layer for AI-generated code. Scan and fix security issues, performance problems, and AI-specific anti-patterns. 22 rules. AST auto-fix. Zero config.

Stars
10
Language
TypeScript
License
MIT
Updated
  • ai
  • ai-safety
  • ast
  • auto-fix
  • chatgpt
  • code-quality
  • code-scanner
  • copilot
  • developer-tools
  • eslint-alternative
  • linter
  • security
  • static-analysis
  • typescript

Guardrail

The safety layer for AI-generated code.

Scan and fix security issues, performance problems, bad patterns, and AI-specific anti-patterns -- before they ship.

CI npm License: MIT Node TypeScript GitHub Marketplace PRs Welcome


npx @guardrail-ai/cli scan .
   ____                     _           _ _
  / ___|_   _  __ _ _ __ __| |_ __ __ _(_) |
 | |  _| | | |/ _` | '__/ _` | '__/ _` | | |
 | |_| | |_| | (_| | | | (_| | | | (_| | | |
  \____|\__,_|\__,_|_|  \__,_|_|  \__,_|_|_|

  The safety layer for AI-generated code.

  Target     ./src
  Rules      30 rules across 4 categories
  Files      12 files to scan
  Engine     AST-powered (Babel parser)

  ◉ src/api/auth.ts  (6 issues)
  ──────────────────────────────────────────────
    ✖  CRIT  Potential SQL injection
      at src/api/auth.ts:18:18  security/sql-injection
        17 │ function getUser(db, userId) {
      > 18 │   return db.query("SELECT * FROM users WHERE id = " + userId);
           │                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        19 │ }
      ↳ Use parameterized queries: db.query("...WHERE id = $1", [id])

  ╔══════════════════════════════════════════════╗
  ║  SCAN RESULTS                                ║
  ╚══════════════════════════════════════════════╝

  Health        ━━━━━━━━━━━━━━╌╌╌╌╌╌╌╌╌╌  62/100  [C]
  Issues         2 CRITICAL   3 HIGH   4 WARN  = 9 total
  Categories
    🔒 Security      █████████████  5  (2 crit)
    🤖 AI-Codegen    ████████       3
    ⚡ Performance    ██             1

  ┌──────────────────────────────────────────────┐
  │  WHAT TO DO NEXT                              │
  └──────────────────────────────────────────────┘

    1. Fix critical vulnerabilities NOW
    2. Auto-fix 3 issues: guardrail fix .
    3. Generate fix guide: guardrail scan . --report md

Why Guardrail?

AI code generators (Copilot, ChatGPT, Claude) are fast -- but they produce patterns that traditional linters miss.

FeatureESLintSonarQubeSnykGuardrail
Hardcoded secretsPluginYesNoYes
SQL injectionNoYesNoYes
XSS detectionPluginYesNoYes
JWT misuseNoNoNoYes
Path traversalNoYesNoYes
Prototype pollutionNoNoNoYes
AI-hallucinated importsNoNoNoYes
Placeholder/TODO detectionNoPartialNoYes
Async without awaitNoNoNoYes
N+1 query detectionNoNoNoYes
Inline code framesNoNoNoYes
AI remediation reportNoNoNoYes
Baseline/gradual adoptionNoNoNoYes
Git diff scanningNoNoNoYes
Pre-commit hookPluginNoNoBuilt-in
Inline suppressionYesYesNoYes
SARIF outputPluginYesYesYes
AST-based auto-fixNoNoNoYes
Zero configNoNoYesYes
< 1s scan timeNoNoN/AYes

Quick Start

# Install globally
npm install -g @guardrail-ai/cli

# Or run directly with npx
npx @guardrail-ai/cli scan ./src

# Auto-fix issues
guardrail fix ./src

# Dry-run fixes (show diffs without applying)
guardrail fix ./src --dry-run

7 Commands

guardrail scan .                     # Scan for issues
guardrail fix .                      # Auto-fix issues
guardrail diff main                  # Scan only git-changed files (PR workflow)
guardrail watch .                    # Real-time scanning on file changes
guardrail hook install               # Add pre-commit git hook
guardrail baseline create            # Snapshot issues for gradual adoption
guardrail init                       # Initialize config file

Reports

guardrail scan . --report md         # AI-guided fix report (for Claude/ChatGPT)
guardrail scan . --report html       # Visual HTML report
guardrail scan . --report sarif      # GitHub Code Scanning format
guardrail scan . --report html,md    # Multiple formats at once
guardrail scan . --json              # Machine-readable JSON

Inline Suppression

// guardrail-ignore-next-line
eval(trustedCode);

// guardrail-ignore-next-line security/sql-injection
db.query(`SELECT * FROM ${safeTable}`);

const key = process.env.KEY; // guardrail-ignore

Gradual Adoption (Baseline)

guardrail baseline create   # Snapshot all current issues
guardrail scan .             # Now only reports NEW issues
guardrail baseline status    # See suppressed count
guardrail baseline clear     # Enforce all rules again

Pre-commit Hook

guardrail hook install       # Blocks commits with critical/high issues
guardrail hook uninstall     # Remove the hook

Diff Scanning (PR Workflow)

guardrail diff main          # Only scan files changed vs main
guardrail diff HEAD~3        # Last 3 commits
guardrail diff               # Staged + unstaged changes

30 Built-in Rules

Security (15 rules)

RuleIDSeverityAuto-fix
Hardcoded API Keysecurity/hardcoded-api-keycriticalNo
SQL Injectionsecurity/sql-injectioncriticalNo
No Evalsecurity/no-evalcriticalNo
XSS Vulnerabilitysecurity/xss-vulnerabilitycriticalNo
Path Traversalsecurity/path-traversalcriticalNo
JWT Misusesecurity/jwt-misusecriticalNo
Insecure CORSsecurity/insecure-corshighNo
Environment Variable Leaksecurity/env-var-leakhighNo
Unsafe Regex (ReDoS)security/unsafe-regexhighNo
No Secrets in Logssecurity/no-secrets-in-logshighNo
Prototype Pollutionsecurity/prototype-pollutionhighNo
Open Redirectsecurity/open-redirecthighNo
Insecure Cookiesecurity/insecure-cookiehighNo
Insecure Randomnesssecurity/insecure-randomnesshighNo
No Rate Limitingsecurity/no-rate-limitinginfoNo

AI-Codegen (11 rules) -- unique to Guardrail

RuleIDSeverityAuto-fix
Hallucinated Importai-codegen/hallucinated-importhighNo
Placeholder Codeai-codegen/placeholder-codewarningNo
Hardcoded Localhostai-codegen/hardcoded-localhostwarningNo
Overly Broad Catchai-codegen/overly-broad-catchwarningNo
Unused Importsai-codegen/unused-importswarningYes
Any Type Abuseai-codegen/any-type-abusewarningNo
Fetch Without Error Handlingai-codegen/fetch-without-error-handlingwarningNo
Promise Without Catchai-codegen/promise-without-catchwarningNo
No Async Without Awaitai-codegen/no-async-without-awaitwarningNo
Console Log Spamai-codegen/console-log-spaminfoYes
Magic Numbersai-codegen/magic-numbersinfoNo

Quality (2 rules)

RuleIDSeverityAuto-fix
Dead Codequality/dead-codewarningYes
Duplicate Logicquality/duplicate-logicwarningNo

Performance (2 rules)

RuleIDSeverityAuto-fix
Inefficient Loopperformance/inefficient-loopwarningYes
N+1 Queryperformance/n-plus-one-queryhighNo

GitHub Action

- uses: Manavarya09/[email protected]
  with:
    target: './src'
    severity: 'warning'
    fail-on: 'high'
    report: 'html'

Issues appear as PR annotations with file and line context.


Claude Code Plugin (MCP)

{
  "mcpServers": {
    "guardrail": {
      "command": "npx",
      "args": ["@guardrail-ai/mcp"]
    }
  }
}

Tools: guardrail_scan, guardrail_fix, guardrail_list_rules.


Configuration

{
  "include": ["src/**/*.{js,jsx,ts,tsx}"],
  "exclude": ["**/*.test.ts"],
  "severityThreshold": "warning",
  "rules": {
    "ai-codegen/magic-numbers": false,
    "security/hardcoded-api-key": { "enabled": true, "severity": "critical" }
  }
}

Also supports .guardrailrc, .guardrailrc.yaml, guardrail.config.js, and package.json "guardrail" key.


Architecture

packages/
  core/       Rule engine, AST parser, file discovery, caching, inline suppression
  rules/      30 built-in rules across 4 categories
  fixer/      AST-based auto-fix engine with unified diff output
  cli/        7 commands, 3 report formats, code frames, baseline, hooks
  mcp/        Model Context Protocol server (Claude Code plugin)

Development

git clone https://github.com/Manavarya09/Guardrail.git
cd Guardrail
npm install
npm run build
npm test          # 139 tests

See CONTRIBUTING.md for the rule authoring guide.


License

MIT