agentdryrun
What did your coding agent actually do last month?
Anthropic reports that users accept 93% of Claude Code's manual permission prompts. One command reads the session history Claude Code already keeps on your machine and shows what your rules would have stopped: recursive deletes, force pushes to main, curl | sh, secret files read, files sent to other hosts, destructive database and cloud commands. Think terraform plan, but for what your agent did. Read-only, local, zero dependencies, nothing is sent anywhere.

The real output of one command on the invented sample in the repository.
Try it on your own history
git clone https://github.com/ntinosgkiou-code/agentdryrun && cd agentdryrun && python -m agentdryrun scan
Python 3.9 or newer. Nothing to install. Reads ~/.claude/projects (last 30 days) and writes agent-report-card.html. Use --no-previews before you share the page. Claude Code only, for now. Or inside Claude Code: claude plugin marketplace add ntinosgkiou-code/agentdryrun, then claude plugin install agentdryrun@agentdryrun and /agentdryrun:scan.
Share what it found
python -m agentdryrun scan --wrapped also writes Claude Code Wrapped: one card with your sessions, tool calls, busiest hour and how often your agent would have needed a human. Numbers only: no commands, file names or project names. You can save it as a PNG in your browser; nothing is uploaded.
The card for the invented sample in the repository.
Checked on other people's data
The starter rules were run over a random sample of 2,000 public agent runs (121,219 actions). The check found 14 false alarms, now fixed; 35 flags remain, all inside disposable sandboxes, so this is not a measure of danger. Method, numbers and limits.
Under the scan: a dry-run engine for any agent
mcp-record in front of any MCP server and change nothing else.@rec.tool("refunds.issue")
def issue_refund(customer, amount_eur): ...suggest-rules drafts the first rules file for you. Runs in CI as a GitHub Action.In CI
- uses: ntinosgkiou-code/agentdryrun@v0.9.0
with:
rules: rules.json
events: tests/agent-events.jsonl
max-refused: 0
max-unmapped: 0
Fails the build when your agent would do more than you accept. Reads Langfuse, LangSmith and OpenTelemetry exports too.
What it is not
Help wanted
The most useful thing you can do: try it on a real export and tell us if it fails, or try to break the verifier. Open issues include good first issues.