Skip to main content

agentdrill

License: Apache-2.0 Python 3.10+ PyPI Status: v0.1.0 Ruff Type checked: mypy strict Docs

Prove — Reproducible attack packs run in CI against your deployed agent-defense stack, with honest, published results — including the attacks we did not stop.

OpenSSF Scorecard

Part of the agentic-suite — open-source, harness-agnostic security for AI agents.

Status: v0.1.0 — in progress. The foundation has landed: the ported engine (M0) and the CLI, fail-closed configuration, CI quality gate, and identity docs (M1). The proof engine is wired end-to-end at M18; the PRD is the design of record. The intent is published early, on purpose, so we can be held to it.


Install & Quick Start

# Install (PyPI)
pip install agentsec-agentdrill        # Python CLI + SDK (import + CLI: agentdrill)
agentdrill --help                      # list commands

# First run in ~15 minutes, against a bundled demo stack (no real stack required)
agentdrill quickstart

# Drill your own deployed stack
agentdrill run --pack replit-destructive-command --target ./my-stack.yaml --sandbox

# Gate a policy change in CI — a rule that un-blocks an attack is rejected
agentdrill run --pack incidents-core --target ./stack.yaml --ci

# Verify a published result with nothing installed
agentdrill verify ./benchmark-release.json

The proof loop: pick a pack → point at your deployed stack → run locally or in CI → read an honest result (blocked / missed / degraded) + kill-time. See PRD 04.

See it before installing

Run agentdrill quickstart to boot a static, bundled demo stack and produce a first drill report — one pack's honest outcome split, a kill-chain timeline, and an exportable evidence bundle. It runs offline, opens from file://, needs no account, and is pure synthetic data watermarked demo — never evidence.


Why

Every agent-security vendor oversells detection, and almost nobody publishes reproducible evidence of what their controls actually stop. The benchmark record is brutal: simple prompt injection retains ~46% ASR against some of the best-known defenses, and one hacking prompt nearly doubles ASR against GPT-4 ReAct agents. Meanwhile red-team tooling (PyRIT, garak, promptfoo, AgentDojo) is strong but offline and point-in-time — it red-teams a snapshot, not a live policy stack.

Nothing treats agent policies as continuously regression-tested code. agentdrill is that layer: the ecosystem's proof-of-work engine. See PRD 01.

What it does

Capability Description
Attack packs Curated, versioned incident-replay packs (Replit destructive-command, MCP tool poisoning, Plugin4Shell supply-chain, Slack-AI exfil, credential evasion)
Runs the deployed stack Drives the real enforcement path (MCP proxy, credential broker, confinement, compiled policy, halt) — never a simulation
Honest results Every published table includes the misses; no scoring theater
Kill-time verification Times revocation to actual cessation (probed, not inferred) — a full kill-chain timeline, not one latency
CI gate A policy PR that un-blocks a known attack is rejected before merge
Public benchmark Reproducible per-release results — a third party re-runs and gets the same numbers
Efficacy control A blocked number only counts if the attack demonstrably succeeds unguarded (the control group no one else runs)
Evasion pack Attacks on the ecosystem itself (tamper, hook-disable, policy-edit, telemetry-injection) run every release
Interop Import promptfoo / garak / AgentDojo / PyRIT suites — don't reinvent
Standards-tagged Every pack mapped to MITRE ATLAS + OWASP (LLM + Agentic)
Harness-agnostic Works across harnesses by construction, or ships named per-harness packs

Honest by design

This is the differentiator, so it is enforced, not aspirational (PRD 07, PRD 20):

  • Misses are first-class — a run cannot publish without them.
  • A single run is never a claim — published numbers are mean ± std over ≥3 pinned seeds; kill-time reports p50/p95/max.
  • Contamination is disclosed, not hidden — cases overlapping a judge/target model's training data are flagged in the table.
  • Flag, never silently fix — expected outcomes are preregistered; a change is flagged with a re-pin note.
  • Disputes get answered — a public adjudication process with a 14-day SLA on every published finding.

Compatibility

A harness is "compatible" only when its pack passes in CI; release notes carry the compatibility table (PRD 05 §Compatibility).

Tier Harness Support
1 — Coding agents Claude Code · Cursor · GitHub Copilot · Codex CLI · Gemini CLI ≥2 at v0.1.0 (per-harness packs)
2 — Frameworks LangGraph · CrewAI · OpenAI Agents SDK · AutoGen/AG2 · LlamaIndex · PydanticAI · smolagents via promptfoo/garak interop; adapter packs in scope
3 — Protocol/enterprise Generic MCP clients · enterprise platforms MCP-layer coverage via agentgate; enterprise via standards

Security & supply chain

  • Signed packs + provenance on every release (PRD 17).
  • Trust levels (built-in / local / external) — external packs are sandbox-restricted, never used for benchmark results.
  • Target attestation (live / fixture / mock) — results are labeled at the weakest link; mock never publishes.
  • Standalone verifier — a zero-install, offline check of signatures, hashes, manifests, and labels; a bundle is verified on a machine that never ran the drill.
  • Evidence privacy — target-side secrets redacted before bundling, with verifiable redaction receipts.
  • Self-audit — the evasion pack is the sanctioned way we attack ourselves; disclosure per SECURITY.md.

Verification & quality gates

make setup            # create the venv + install dev extras
make lint             # ruff, zero violations
make typecheck        # mypy --strict
make test             # functional test suite (excludes docker/omlx infra tests)
make cov              # functional suite with the coverage gate (>=95%)
make test-all         # full suite incl. docker/omlx (needs a daemon + oMLX server)

Self-attack, benchmark, and release-verification targets (drill-self / benchmark / verify-release) land with their milestones (M14 / M10 / M32).

  • Published benchmark: honest outcome split per release, misses included (PRD 07).
  • Every published number is efficacy-backed and multi-seed; every row links its traces (PRD 19).

Development

Python core (pack format, runner, driver/target adapters, oracle engine, reporter, registry), CLI wrapper, and a pytest-style API — one engine, every surface (PRD 02).

make setup        # editable install with dev extras
agentdrill list packs        # discover packs / oracles / targets / drivers
agentdrill run --dry-run --pack incidents-core --target ./stack.yaml
agentdrill quickstart        # end-to-end against the bundled demo stack

Documentation

Full index: docs/prd/README.md.

Why & scope

How it works

What ships

Trust

Users, parity & governance

Operations

Project

License

Apache License 2.0 — see LICENSE.

Metadata

Release files for agentsec-agentdrill 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentsec-agentdrill 0.1.0
File Size Uploaded Provenance
agentsec_agentdrill-0.1.0.tar.gz 1.4 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agentsec-agentdrill 0.1.0
File Interpreter ABI Platform
agentsec_agentdrill-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / agentsec_agentdrill-0.1.0.tar.gz

Download URL agentsec_agentdrill-0.1.0.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
48cfe67f25ac3dc9a89e543e4252eddcc066c542375abf245c6f38ca18acf251
BLAKE2b-256 checksum
How to use checksums
f8cbd5c47a78abae5cb2b9e8af67071707ce24e4911a4828ffcec18033b888aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / agentsec_agentdrill-0.1.0-py3-none-any.whl

Download URL agentsec_agentdrill-0.1.0-py3-none-any.whl
Size 572.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
62c9da960971fdfebe0fcc1e7a83fd4ef96f30dfae5ee3f03890eac8ca3148e6
BLAKE2b-256 checksum
How to use checksums
b6393a589fb9244b483c8b40ef12c2608754224bac2fa95c93ca8746339e6a0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for agentsec-agentdrill 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page