Skip to main content
That is the whole thing. The rest of this page is the three-step version with explanations.

Install

Python 3.11–3.13 on Linux or macOS. Windows is not currently tested in CI; community support and contributions welcome (tracked under Guardian backlog QA-038). Base wheel ≈ 10 MB; the installed venv with all transitive dependencies on Python 3.13 is ≈ 120 MB. No native compilation.
Default python3 on a current macOS box is 3.14. AgentGuardian does not yet ship 3.14 wheels, so a plain pip install agent-guardian errors with No matching distribution found. Install on Python 3.13 instead:
The pinned-3.11 Docker image and the agentguardian-scan GitHub Action are insulated from this — only ad-hoc pip install is affected.
Verify:

Drop a target prompt to disk

This is a deliberately-vulnerable system prompt — broad authority, sensitive tools, a “never refuse” pre-commitment. The swarm will exploit it.

Run the scan

--model stub is a deterministic in-process model — zero API keys, sub-second wall-time, ~$0 cost. The scan ends with a one-line summary:
band=Not Evaluated (stub mode) is expected when you run with --model stub — the stub model cannot adjudicate authoritatively. To get a real band, swap in a real evaluator:

See the findings

The scan also auto-spawns a local dashboard:
Open it. You will see the 12 findings, the attack transcripts, the AIVSS score breakdown, and the evidence records — exactly what an auditor would want. The dashboard stays live for 60 minutes after the scan completes (--serve-grace-seconds to change). The CLI emits the canonical /scan/<id> (singular) URL; the legacy /scans/<id> path still works and 307-redirects to it.
Auto-serve requires an interactive terminal. In CI, behind | tee, or any non-TTY stdout, the in-band dashboard is silently suppressed (the CLI emits a ⚠ Dashboard auto-serve suppressed warning when this happens). To browse the same scan after the fact, start the server yourself in another terminal:
The canonical scan URL is /scan/<id> (singular). The legacy /scans/<id> path still 307-redirects to the canonical path, so older log lines remain clickable — but curl consumers must pass -L to follow the redirect.

Next steps

Understanding Your First Report

Read every field of the scan output.

Try AgentGuardian on a real target

Point the scanner at your own REST API, LangGraph, CrewAI, MCP, or RAG agent.