CI/CD guardrails for AI agents - prevent payment duplicates and data destruction
Project description
AgentCorrect
Stop your AI agents from destroying production.
What This Does
AgentCorrect scans AI agent traces and blocks deployments when it finds:
- Payment API calls missing idempotency keys (duplicate charges)
- SQL queries that would delete/modify all records
- Infrastructure commands that would wipe caches or databases
Exit code 2 fails your CI/CD pipeline. That's it.
Who Needs This
You need this if:
- Your AI agents call payment APIs (Stripe, PayPal, Square, etc.)
- Your AI agents execute SQL queries
- Your AI agents touch Redis, MongoDB, or cloud infrastructure
- You've ever had an agent accidentally charge a customer twice
- You've ever had an agent delete production data
You don't need this if:
- Your agents are read-only
- Your agents don't touch money or data
- You manually review every agent action
Installation
pip install agentcorrect
Usage
# Analyze agent trace
agentcorrect analyze trace.jsonl
# In CI/CD pipeline
agentcorrect analyze trace.jsonl || exit 1
What It Catches
Payment Disasters
- Stripe: Missing Idempotency-Key header → Prevents duplicate charges
- PayPal: Missing PayPal-Request-Id → Prevents duplicate charges
- Square: Missing idempotency_key in body → Prevents duplicate charges
- 25+ payment providers with their exact requirements
SQL Disasters
DELETE FROM users WHERE 1=1→ Blocked (tautology)DELETE FROM users→ Blocked (no WHERE clause)TRUNCATE TABLE orders→ Blocked (data loss)DROP TABLE customers→ Blocked (irreversible)
Infrastructure Disasters
- Redis:
FLUSHALL→ Blocked (cache wipe) - MongoDB:
dropDatabase→ Blocked (database deletion) - S3:
DeleteBucket→ Blocked (storage deletion)
Real Example
Your agent does this:
# Agent tries to charge customer
response = stripe.charges.create(amount=5000, currency="usd")
# Network timeout, agent retries
response = stripe.charges.create(amount=5000, currency="usd")
# Customer charged twice - $100 lost
AgentCorrect catches this:
Missing payment idempotency
Provider: Stripe
Fix: Add header 'Idempotency-Key: <unique-order-id>'
Exit code: 2 (Build Failed)
Trace Format
JSONL format - one JSON object per line:
{"role":"http","meta":{"http":{"method":"POST","url":"https://api.stripe.com/v1/charges","headers":{},"body":{"amount":1000}}}}
{"role":"sql","meta":{"sql":{"query":"DELETE FROM users WHERE id = 123"}}}
{"role":"redis","meta":{"redis":{"command":"GET user:123"}}}
Why This Works
-
Vendor-specific knowledge: We know Stripe needs
Idempotency-Keyin headers, Square needsidempotency_keyin body. This isn't guesswork. -
AST parsing for SQL: We parse SQL structurally, not with regex. No false positives.
-
Exit codes for CI/CD: Non-zero exit fails the build. Standard CI/CD practice.
CI/CD Integration
GitHub Actions
- name: Test Agent Safety
run: |
python run_agent.py > trace.jsonl
agentcorrect analyze trace.jsonl
GitLab CI
test-agent:
script:
- python run_agent.py > trace.jsonl
- agentcorrect analyze trace.jsonl
Testing
Run the verification suite:
python verify.py # Test all detections
python ship_tests.py # 15 acceptance tests
./quick_proof.sh # 60-second proof
Limitations
- Only catches what we know about (95% of payment providers, common SQL patterns)
- Requires trace data in JSONL format
- Can't prevent disasters if you skip the CI/CD check
License
MIT
Contributing
See CONTRIBUTING.md
Built for teams who learned the hard way that AI agents need guardrails.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentcorrect-0.1.0.tar.gz.
File metadata
- Download URL: agentcorrect-0.1.0.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5a4220c0458282e5e1dca38b1d61642d6735281e8e0c9ec912463bbf8a3d5d0
|
|
| MD5 |
eafa89437f908cffbd9fe4373d785f9f
|
|
| BLAKE2b-256 |
04c92e1863a7e3e537e3fd81d01f98e5b68a15235b81c802ab9b3082d5e9a4ec
|
File details
Details for the file agentcorrect-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agentcorrect-0.1.0-py3-none-any.whl
- Upload date:
- Size: 38.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d48c916f5023253e52562df11fa059b09f20444b54452f96ca66f0f27afe9a3d
|
|
| MD5 |
d096cb63b6dae293333e27db30c66646
|
|
| BLAKE2b-256 |
d22472652af578fdb0bff01c5af06aa6affab876aeaf1bb059009489e78490f6
|