OWASP-aligned launch gate for MCP-enabled AI agents.
Scan ยท Test ยท Monitor ยท Simulate ยท Evidence ยท Drift ยท OWASP Coverage
pip install pluto-aguard
Find secrets, misconfigs, unsafe code in any AI project
17 adversarial attacks against your policy โ what gets through?
Replay traces, detect unauthorized actions + drift
Simulate policy changes, see risk drop before applying
20-control OWASP MCP/LLM coverage report
Launch readiness packet with approval checklist
Snapshot + drift detection over time
| Requirement | Details | Check |
|---|---|---|
| Python | 3.10 or higher | python --version |
| pip | Any recent version | pip --version |
| Cloud accounts | โ Not needed. Runs 100% locally. | |
Point it at any AI project folder. Finds real issues โ no MCP configs required.
| Finding | Severity | OWASP |
|---|---|---|
| eval()/exec() on LLM output | CRITICAL | MCP05 |
| Wildcard (*) permissions on MCP server | CRITICAL | MCP02 |
| No auth on remote MCP server | CRITICAL | MCP07 |
| Tool poisoning in descriptions | CRITICAL | MCP03 |
| Hardcoded secrets (18+ patterns) | HIGH | MCP01 |
| .env not in .gitignore | HIGH | MCP01 |
| Secrets in Dockerfile ENV | HIGH | MCP01 |
| LangChain allow_dangerous_requests=True | HIGH | MCP05 |
| Sensitive info in system prompts | HIGH | MCP10 |
| LangChain verbose=True in production | MEDIUM | โ |
| Container running as root | MEDIUM | โ |
| Unpinned AI dependencies | MEDIUM | MCP04 |
| No timeout or rate limits | MEDIUM | LLM10 |
Simulates 17 attack scenarios against your policy. Reports what gets caught vs. what gets through. No LLM needed.
Instruction override, role hijack, indirect injection, encoded payloads
File export, network exfil, email exfil, SQL dump
Write on read-only, approval bypass, sudo, file delete
Urgency bypass, claimed pre-auth, batch bypass
Hidden instructions, rug-pull updates
Replays agent action logs and checks every tool call against your declared policy.
| Violation | Severity | Example |
|---|---|---|
| Denied tool invoked | CRITICAL | Agent called execute โ explicitly blocked |
| Permission escalation | CRITICAL | DELETE via sql_query with read-only permission |
| Unauthorized tool | HIGH | Agent called file_write โ not in allowed list |
| Missing approval | HIGH | deploy without human-in-the-loop |
| Expired approval | HIGH | Approval was granted but has expired |
A differentiated feature: simulate the risk impact of policy changes before applying them.
โ๏ธ Interactive demo of what aguard whatif does in the terminal.
Evaluates 20 controls mapped to OWASP MCP Top 10 and LLM Top 10. Each control uses precise finding-ID matching.
Generates a Markdown report for security review before shipping an agent to production.
| Section | What It Contains |
|---|---|
| Risk Summary | Overall score, finding counts by severity |
| Security Findings | Every issue with OWASP ID, description, remediation |
| Tool Permissions | What the agent can access |
| Policy Coverage | Allowed/denied tools, HITL gates, data access rules |
| Required Mitigations | Actionable checklist of HIGH/CRITICAL fixes |
| Launch Approval | Sign-off template: approver, date, decision |
Run aguard scan . on any Python/Node project. Finds secrets, unsafe code, Docker issues.
Auto-discovers mcp.json, .mcp.yaml. Checks permissions, auth, transport, tool poisoning.
--max-risk 50 --fail-on high --format sarif
SARIF integrates with GitHub Advanced Security.
Export agent traces to JSONL โ aguard monitor checks against policy.
| โ Passing | โ Failing |
|---|---|
| No hardcoded secrets | API keys in source or .env committed |
| No eval/exec on LLM output | Code injection via LLM responses |
| Remote MCP servers authenticated | Unauthenticated remote servers |
| Dangerous tools require approval | execute/shell without HITL |
| AI deps pinned | openai, langchain unpinned |
| All adversarial tests pass | Policy misses attack scenarios |
| Risk score < 50 | Risk score โฅ 50 |