💡 Found this useful? ⭐ Star the repo (helps others find it) and subscribe to weekly detection-engineering writeups at Detection Frontier.
Developer-first AI safety scanner — catches leaked secrets, AI prompt-policy violations, and PII in logs before they ship. Zero runtime deps. Ships as CLI + GitHub Action + Claude skill + Cursor rule.
wrg-devguard is a zero-dependency Python scanner that catches three classes of issues before your PR lands:
- Leaked secrets — API keys, private keys, tokens, common credential formats in tracked files
- Prompt-policy violations — deny-listed patterns in prompts, system messages, and AI-facing text assets
- PII in log files — 13 patterns across 9 categories with redaction-by-design (raw secrets never leave the process)
- Zero runtime deps — core scanner is stdlib only, so
pip installis instant and works in any sandbox (CI minutes + supply chain hygiene) - Policy lint in the same tool — most scanners only do secrets. wrg-devguard also catches AI prompt-policy violations (deny-listed patterns, hardcoded system prompts, PII in AI-facing text)
- AI-native UX — ships with a Claude Code skill and a Cursor rule so the scanner runs automatically inside your AI coding assistant, not just in CI
- Stable JSON schema —
check --json-outemits a versioned schema (schemas/log_scan_result.schema.json) that never breaks
- Pre-commit secret block — Claude Code skill auto-triggers on "is this safe to commit" / "scan for leaks"
- GitHub PR check — composite action blocks PR merges that introduce error-severity findings
- AI prompt audit — scan a repo of prompt templates for policy violations (e.g., hardcoded system overrides)
- Log file PII sweep —
scan-logsredacts secrets + 13 PII patterns from log fixtures before sharing - Scheduled audit + SARIF upload — weekly cron emits SARIF, uploads to GitHub code-scanning UI
pip install wrg-devguard# Run both checks and fail on any high-severity finding
wrg-devguard check --path . --fail-on error
# Scan only for leaked secrets
wrg-devguard scan-secrets --path .
# Lint AI-facing text assets against a policy
wrg-devguard lint-policy --path . --profile strict
# PII + secret scan on log files
wrg-devguard scan-logs --path my.log --json-out logs.json
# Emit a JSON report for CI
wrg-devguard check --path . --json-out wrg-devguard-report.json| Project | Secret scan | Prompt-policy lint | PII in logs | Zero deps | AI editor integration | Best for |
|---|---|---|---|---|---|---|
| wrg-devguard | ✅ | ✅ | ✅ (13 patterns / 9 cats) | ✅ stdlib only | ✅ Claude skill + Cursor rule | AI-coding workflows + CI |
| gitleaks | ✅ (deep) | ❌ | ❌ | ❌ | High-fidelity secret-only scanning | |
| trufflehog | ✅ (700+ detectors) | ❌ | ❌ | ❌ | Deep secret detection + verification | |
| detect-secrets | ✅ | ❌ | ❌ | Yelp-style pre-commit baseline | ||
| bandit | ❌ | ❌ | ❌ | ✅ Python | ❌ | Python AST security issues (CWE-style) |
(wrg-devguard ships an optional bandit wrapper subcommand for one-stop scanning.)
- Your team uses AI coding assistants (Claude Code, Cursor) and wants the scanner integrated, not bolted on
- You need both secret scanning AND AI prompt-policy lint in one tool, not two
- Zero-dep is non-negotiable (locked-down CI sandbox, supply chain concerns)
- You want a stable JSON schema you can build dashboards/automation against
- Detection depth vs trufflehog — trufflehog has 700+ detectors with verification (live API checks); wrg-devguard's secret pattern library is curated but smaller
- Older / more battle-tested alternatives — gitleaks, detect-secrets, trufflehog each have 5+ years of community PRs catching edge cases
- No JavaScript / Go / Rust ecosystem-specific detectors — wrg-devguard is Python-first; other-language secret formats are covered but not exhaustively
- GUI / dashboard YOK — JSON output is solid but rendering it is on you (or use the sister
wrg-portfoliodashboard for cross-repo aggregation)
If deep verified secret detection is your primary need, pair wrg-devguard (for prompt-policy + PII + CI hygiene) with trufflehog (for high-fidelity secret verification).
- Python package:
pip install wrg-devguard(CLI + library) - GitHub Action: drop-in composite action for any repo (
uses: WRG-11/wrg-devguard@v0) - Claude Code skill:
.claude/skills/wrg-devguard/SKILL.md - Cursor rule:
.cursor/rules/wrg-devguard.mdc
# .github/workflows/security.yml
name: security
on: [pull_request, push]
jobs:
wrg-devguard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: WRG-11/wrg-devguard@v0
with:
profile: strict
fail-on: errorSee action.yml for all inputs. 3-line minimum drop-in:
- uses: WRG-11/wrg-devguard@v0
with:
path: .
fail-on: error| Name | Required | Default | Description |
|---|---|---|---|
path |
no | . |
Root path to scan |
fail-on |
no | error |
Fail threshold: error, warn, none |
format |
no | text |
Report format: text, json, sarif |
profile |
no | baseline |
Policy profile: baseline or strict |
allowlist |
no | empty | Optional path to allowlist JSON |
python-version |
no | 3.12 |
Python version installed by the action |
version |
no | latest | Pip version spec (e.g. ==0.1.1) |
| Name | Description |
|---|---|
findings-count |
Total number of findings produced by the scan |
report-path |
Path to the generated report (empty when format: text) |
PR check — block any error-severity finding:
- uses: WRG-11/wrg-devguard@v0
with:
path: .
fail-on: errorScheduled audit — emit SARIF, never fail, upload to code-scanning:
- uses: WRG-11/wrg-devguard@v0
id: dg
with:
format: sarif
fail-on: none
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ${{ steps.dg.outputs.report-path }}Monorepo path filter:
- uses: WRG-11/wrg-devguard@v0
with:
path: apps/payments
profile: strict
fail-on: warn
format: json@v0— moving major tag during the beta v0.x line, fast-forwards on every minor/patch@v0.2.2— immutable release tag (recommended for reproducible CI)
See the Marketplace listing for the latest published versions.
Drop the skill into your workspace:
mkdir -p .claude/skills/wrg-devguard
curl -L https://raw.githubusercontent.com/WRG-11/wrg-devguard/main/.claude/skills/wrg-devguard/SKILL.md \
-o .claude/skills/wrg-devguard/SKILL.mdClaude Code surfaces the skill automatically on prompts like "scan for secrets", "is this safe to commit", or "check for leaks".
mkdir -p .cursor/rules
curl -L https://raw.githubusercontent.com/WRG-11/wrg-devguard/main/.cursor/rules/wrg-devguard.mdc \
-o .cursor/rules/wrg-devguard.mdcCursor applies the rule before suggesting any git commit command.
Default lookup order:
--policy <path>argument if provided.wrg/policy.jsonat the repo root- Built-in defaults
Profiles:
baseline→ PR-friendly baseline (recommended for CI, default)strict→ stricter local/release audits (use--profile strict)
Place custom policies in .wrg/policy.json (JSON) or .wrg/policy.yaml (requires [yaml] extra).
wrg-devguard profiles # list available profiles
wrg-devguard lint-policy --path . # policy lint only
wrg-devguard scan-secrets --path . # secret scan only
wrg-devguard check --path . # lint-policy + scan-secrets combined
wrg-devguard check --path . --profile strict
wrg-devguard check --path . --json-out report.json
wrg-devguard check --path . --fail-on warning
wrg-devguard check --path . --allowlist .wrg/allowlist.json
wrg-devguard scan-logs --path <log-file> # PII + secret scan on logs (v0.2.0+)
wrg-devguard scan-logs --path . --json-out logs.json
wrg-devguard bandit --path src/ # optional: bandit wrapper
0— no findings above threshold1— findings at or above--fail-onthreshold2— configuration or input error
The scan-logs subcommand emits a frozen JSON contract documented at schemas/log_scan_result.schema.json. Highlights:
schema_version: "1"(frozen for the v0.2.0 line)findings[].pattern_id— stable<NAMESPACE>-<NNN>identifiers (e.g.,AWS-001,EMAIL-001); superseded patterns get a new ID, never reusefindings[].redacted_excerpt— middle-masked; raw secrets never appear in output- Open-enum-friendly categories + severities (consumers should accept unknown values gracefully)
Validation tests: tests/schemas/test_log_scan_result_schema.py (28 cases). Run locally with pytest tests/schemas/ -v.
pip install wrg-devguard # core (stdlib only)
pip install "wrg-devguard[yaml]" # YAML policy supportgit clone https://github.com/WRG-11/wrg-devguard.git
cd wrg-devguard
pip install -e ".[dev]"
pytest -qPart of the WRG-11 PyPI portfolio:
instinct-mcp— Self-learning memory for AI coding agents (MCP server)wrg-mcp-server— MCP bridge for the WinstonRedGuard monorepo (60+ security/threat-intel tools)wrg-rule-lab— Local-first deterministic rule evaluation engine (zero-dep, stdlib-only)ai-security-toolkit— Offensive + defensive AI/LLM security tools, labs, CTF writeups, research
Built by WRG-11.
Issues and PRs welcome. For substantial changes, open an issue first to discuss scope. See CONTRIBUTING.md for dev setup + PR bar; CODE_OF_CONDUCT.md; SECURITY.md.
MIT. See LICENSE.
wrg-devguard was previously developed inside the private WinstonRedGuard monorepo at apps/wrg_devguard/. This standalone repo (WRG-11/wrg-devguard) is now the canonical source post the WRG-11 brand consolidation; the monorepo copy is no longer the source of truth.