Skip to main content

AI-native quality gate for agent-generated code — scan, audit, auto-fix, trend

Project description

AgentGuard

AI-native quality gate for agent-generated code.
Scan · Audit · Auto-fix · Track trends

FeaturesQuick StartCommandsDemoRulesCustom Rules

CI PyPI License Stars Python Version


🚀 Install in 3 seconds

pip install agentguard-tool
cd your-project
gate run

Done. AgentGuard scans your code, detects AI-specific issues (hardcoded secrets, unsafe APIs, hallucinations), auto-fixes what it can, and tracks quality trends over time.


Why AgentGuard?

Traditional linters like SonarQube and CodeQL were built for human-written code. AI agents write code differently — they hallucinate module names, leave placeholder comments, generate giant functions, and introduce patterns that human linters miss.

AgentGuard is built for the age of AI-generated code.

It understands the patterns, pitfalls, and security risks specific to code written by LLMs. It runs as a CI-ready CLI, a pre-commit hook, or a daily cron.


Features

🔍 AI-Specific Detection (3 rules)

Rule Severity What It Finds
unsafe_api 🚫 BLOCKER eval(), exec(), os.system(), subprocess(shell=True), pickle.loads()
secret_leak 🚫 BLOCKER Hardcoded API keys, tokens, passwords in source code
ai_hallucination ℹ️ INFO AI placeholder comments, suspicious module names, giant auto-generated functions

📊 Agent Behavior Audit

Reads agent trace data and produces a daily report:

  • Tool call frequency & ranking
  • Error rate & anomaly detection
  • Token consumption & cost estimates
  • Model usage distribution

📈 Trend Dashboard

Text-based trend chart with zero external dependencies:

━━━ 📈 Quality Trend (Last 14 days) ━━━
  05/08 ████████████████   0 issues  ✅
  05/09 ████████████░░░░   3 issues  ⚠️
  05/10 ████████████████   0 issues  ✅

Data persists in SQLite. View anytime with gate trend.

🔧 Auto-Fix Pipeline

Automatically fixes what it can, backed up and git-committed:

  • Unused imports (F401) and variables (F841)
  • Bare except:except Exception:
  • Hardcoded paths → $HOME references
  • Ruff-safe auto-fixes

🧩 Plugin Rule Architecture

Rules are Python classes. Adding a new rule = one file, one class, one decorator.

@register_rule
class MyRule(Rule):
    name = "my_rule"
    severity = Severity.BLOCKER

    def diagnose(self, filepath: str) -> list[Issue]:
        # Your detection logic here
        ...

Quick Start

# 🎯 Scan your project
pip install agentguard-tool
cd your-project
gate run

# 🔍 Quick check (staged files only)
gate run --quick

# 📊 Agent behavior audit
gate audit

# 📈 View quality trends
gate trend

# 🔧 Install pre-commit hooks
gate install

Run from source

git clone https://github.com/weijinsheng123456/agentguard.git
cd agentguard
python gate.py run

Demo

Terminal recording of a realistic gate run session:

$ gate run
2026-05-18 09:42:11,238 [INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2026-05-18 09:42:11,238 [INFO]   质量门禁 v1.0.0 — 全量扫描
2026-05-18 09:42:11,238 [INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2026-05-18 09:42:11,271 [INFO] 📦 共 42 个 .py 文件
2026-05-18 09:42:11,271 [INFO] 🆕 新增: 2  |  ✏️ 修改: 5  |  ✅ 稳定: 35
2026-05-18 09:42:11,279 [INFO] 引擎加载 8 条规则: (6 文件级 + 2 目录级)
2026-05-18 09:42:11,414 [INFO]   目录级规则: 2 个问题
2026-05-18 09:42:11,438 [INFO]   文件级规则: 3 个问题
2026-05-18 09:42:11,438 [INFO] 🔴 BLOCKER: 2  |  🟡 FIXABLE: 2  |  🔵 INFO: 1
2026-05-18 09:42:11,438 [WARNING] ⚠️  有 BLOCKER 问题,跳过自动修复
2026-05-18 09:42:11,438 [INFO] 🔍 全量关键项扫描...
2026-05-18 09:42:11,481 [INFO] 📊 运行Agent行为审计...

━━━ ⚠️ 质量门禁 05/18 ━━━
扫描: 42 个文件(+2/~5)
阻塞: 2 项 ❌ 需人工
  ❌ src/agent/tools.py:L18  UNSAFE_SYSTEM
  ❌ src/config.py:L7  LEAK_SECRET

━━━ 🤖 Agent行为审计 (7天) ━━━
Tool调用: 128 次
错误率: 2.3% ✅
Token消耗: 184,320
Top工具: edit, shell, read_file

Screenshots

Trend dashboard output from gate trend:

$ gate trend
━━━ 📈 质量门禁趋势 (最近14天) ━━━
  05-05 ████░░░░░░░░░░░░   3问题 修2 ✅
  05-06 ██████████░░░░░░   7问题 修4 ❌1 ❌
  05-07 ██░░░░░░░░░░░░░░   1问题 ✅
  05-08 █░░░░░░░░░░░░░░░   0问题 ✅
  05-09 ███████░░░░░░░░░   5问题 修3 ⚠️
  05-10 █░░░░░░░░░░░░░░░   0问题 ✅
  05-11 ███░░░░░░░░░░░░░   2问题 修2 ⚠️
  05-12 █░░░░░░░░░░░░░░░   0问题 ✅
  05-13 █████░░░░░░░░░░░   4问题 修1 ❌1 ❌
  05-14 █░░░░░░░░░░░░░░░   0问题 ✅
  05-15 ███░░░░░░░░░░░░░   2问题 修2 ⚠️
  05-16 ██░░░░░░░░░░░░░░   1问题 ✅
  05-17 █░░░░░░░░░░░░░░░   0问题 ✅
  05-18 █░░░░░░░░░░░░░░░   0问题 ✅

文件数趋势:
  05-12 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░ 38
  05-13 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░ 39
  05-14 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░ 39
  05-15 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ 41
  05-16 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ 41
  05-17 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ 42
  05-18 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ 42

日均问题数: 1.8
健康天数: 6/14

Commands

Command Description
gate run Full scan + auto-fix + commit + audit
gate run --quick Pre-commit check (staged files only)
gate run --fixme Auto-fix staged files
gate audit Agent behavior audit only
gate trend [N] Show last N days of quality trends
gate install Install pre-commit hooks & cron
gate version Show version

Rules

Built-in Rules (8 total)

Code Quality (ported from ruff):

Rule Code Severity Auto-fix
syntax_check SYNTAX BLOCKER
ruff_blocker F821, E999 BLOCKER
ruff_fixable F401, F841, E711, E712 FIXABLE
bare_except E722 FIXABLE
hardcoded_paths HARDCODE FIXABLE

AI-Specific:

Rule Code Severity Auto-fix
unsafe_api UNSAFE_* BLOCKER
secret_leak LEAK_SECRET BLOCKER
ai_hallucination AI_* INFO

Write Custom Rules

Create a new .py file in qg/rules/:

from qg.models import Issue, Severity
from qg.rules.base import Rule, register_rule

@register_rule
class MyCustomRule(Rule):
    name = "my_custom_rule"
    severity = Severity.FIXABLE
    description = "Detects something specific"

    def should_check(self, filepath: str) -> bool:
        return filepath.endswith(".py")

    def diagnose(self, filepath: str) -> list[Issue]:
        issues = []
        # Your detection logic...
        return issues

    def fix(self, filepath: str, issue: Issue) -> bool:
        # Your fix logic...
        return True

Rules support two modes:

  • Rule — per-file scanning (for AST analysis, regex)
  • BatchRule — directory-level scanning (for ruff, 10-50x faster)

Configuration

scan_dirs:
  - "~/my-project/src"
  - "~/my-project/scripts"

ignore_patterns:
  - "*__pycache__*"
  - "*/tests/*"

severity:
  blocker_codes: ["F821", "E999", "SYNTAX"]
  auto_fix_codes: ["F401", "F841", "E711", "E712", "E722", "HARDCODE"]

report:
  to_wechat: true

Architecture

gate.py (CLI entry)
└── qg/
    ├── scanner.py      # File discovery
    ├── engine.py       # Diagnostic engine (rule dispatching)
    ├── fixer.py        # Auto-fix engine
    ├── verifier.py     # Post-fix verification
    ├── committer.py    # Git commit automation
    ├── reporter.py     # Report generation (console + log)
    ├── auditor.py      # Agent behavior audit
    ├── dashboard.py    # Trend tracking (SQLite)
    ├── models.py       # Data models
    ├── config.py       # Configuration loader
    └── rules/          # Plugin rules (hot-pluggable)
        ├── base.py     # Rule + BatchRule base classes
        ├── syntax_check.py
        ├── ruff_blocker.py     (BatchRule)
        ├── ruff_fixable.py     (BatchRule)
        ├── bare_except.py
        ├── hardcoded_paths.py
        ├── unsafe_api.py
        ├── secret_leak.py
        └── ai_hallucination.py

Roadmap

  • Phase 1: Python rewrite + plugin architecture
  • Phase 2: AI-specific rules + agent audit + trend dashboard
  • Phase 3: Open-source release + CI integration
  • Phase 4: Security rules (OWASP Top 10 for AI code)
  • Phase 5: GitHub Actions native action
  • Phase 6: VS Code extension

License

MIT License — see LICENSE


Built for the age of AI-generated code.
Because code quality doesn't matter less when AI writes it — it matters more.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentguard_tool-1.0.6.tar.gz (31.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentguard_tool-1.0.6-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

Details for the file agentguard_tool-1.0.6.tar.gz.

File metadata

  • Download URL: agentguard_tool-1.0.6.tar.gz
  • Upload date:
  • Size: 31.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agentguard_tool-1.0.6.tar.gz
Algorithm Hash digest
SHA256 15e2ffc8767e3728625b80c3229087f77041c0eb2146064510ae1bc0bcab1419
MD5 edc2f296d9277d841b54c6cf45a7a131
BLAKE2b-256 bf769e304f2842956aa37eaccc65f8a1981d40be96de58263f9c735599d49b47

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentguard_tool-1.0.6.tar.gz:

Publisher: publish.yml on weijinsheng123456/agentguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentguard_tool-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: agentguard_tool-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 39.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agentguard_tool-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 c6b1d1ea7392909208d1fc6c5e7944b82eba55750a08b3070e3f9e8987c2e1f9
MD5 84dfef5cba5058335f36b6dc2a929f1b
BLAKE2b-256 0a86539642d67566c14a0de18e80dea0b69d27dee1a2276533e7471811a4a2a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentguard_tool-1.0.6-py3-none-any.whl:

Publisher: publish.yml on weijinsheng123456/agentguard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page