How the review works · every phase, live

Seven phases. Three layers. One signed verdict.

Most scanners read files one at a time. Attestral runs a pipeline: it ingests everything the agent touches, builds one system model, traces what can actually reach what, sweeps the graph with typed rule packs grounded in current attack research, layers ML and an LLM judge on top, seals the evidence, and compiles the verdict into runtime policy. Press play to watch a whole review run, or step through any phase.

01

Ingest

attestral/ingest/

component hover a node to inspect its attributes

rules/core_rules.yaml · the matcher, verbatim

- id: ATL-202
  title: Tool fleet forms an exfiltration chain (lethal trifecta)
  severity: critical
  target: model   # binds across components, not one file
  match:
    model_capability_combo:
      - [filesystem, database, saas_data, memory] # private data
      - [network, messaging]                     # an exit
leg 1 ←jira saas_data
leg 2 ←web-fetch network
ATL-202fires on the modelCRITICAL
per-server sweep:ATL-103 ops-shell · ATL-112 deploy · ATL-107 web-fetch · ATL-001 s3

Rules are pure data: five YAML packs (agentic and cross-boundary in the core pack, one pack each for AWS, Azure, GCP, and Kubernetes). Every matcher is a named, typed check over the model's attributes; there is no eval anywhere, and an unknown matcher never fires: the engine fails closed. Conjunctions compose real signals, so ATL-176 is a plaintext non-loopback endpoint AND provably-no-auth AND a shell capability on one server: remote unauthenticated RCE, stated as three facts.

Review layers · every finding labeled by origin

Layer 1 · deterministic Typed rule packs, always on. Fail-closed matchers over the model, plus attack-path synthesis. Reproducible, free, offline. 5 findings
Layer 2 · ml The risk that lives in the words. A local classifier scores every language surface the model can be steered by. Tiered: a zero-dependency heuristic by default, ONNX or DeBERTa with --ml, always offline, identical finding shape. 0.91 web-fetch tool description → injection score +1 finding
Layer 3 · llm judge Cross-examined to cut noise. With --judge and your API key, an LLM re-examines each finding against the modeled system and votes confirmed / false-positive / needs-review. A confident false positive is auto-waived, never deleted: it stays on the chain with the judge's reasoning. 6 cross-examined

Separating the layers is the point: a regulated reviewer can accept the deterministic findings outright, weigh origin: ml as a score, and read the judge's reasoning as an opinion on the record. The review-layers deep dive.

Evidence chain · SHA-256 · verify offline

chain head c31f8e9a2b… · model_hash a0f4… · 6 findings · DSSE-signable REVIEWEDVERIFY
OFFLINE

The review becomes the runtime · compile → guard → drift

attestral compile · default deny
jiraALLOW
web-fetchALLOW
ops-shellDENY
denied by attested review: ATL-103 · bound to chain head c31f8e…
guard tools/call jira.search_issues ALLOW guard tools/call ops-shell.exec DENY (ATL-103) guard resources/read /etc/passwd DENY (DRF-003) drift DRF-001 unattested server jira-sync CRITICAL pentest canary exfil PROVEN close-loop DENY web-fetch

The same evaluator makes every decision: attestral guard vets each tools/call and resources/read in line, attestral drift diffs telemetry against the compiled policy, and the executed red-team (attestral pentest) plants a canary, measures whether it really left, and compile --close-loop denies any channel it proves. Runtime loop · Red-team.

trust boundary reach / dataflow traced attack path finding

Where the rules come from

Every check starts as research, and earns its way in.

The pack is not a backlog of hunches. A standing research radar sweeps the current agentic-security literature - OWASP's LLM and Agentic Top 10s, MITRE ATLAS, the MCP specification's security best practices, fresh CVEs and vendor incident write-ups - and every candidate check has to survive the same gauntlet before it ships.

01 · Radar

Research sweep

OWASP ASI & LLM Top 10 (2026), MITRE ATLAS, the MCP spec, new CVEs, incident write-ups, arXiv.

02 · Author

A typed rule

The attack class becomes a fail-closed matcher over the system model, citing the real control.

03 · Fixture

Proof it fires

A config that triggers it, plus near-miss negatives that must stay silent. Both are committed.

04 · Benchmark

Zero-FP gate

The detection benchmark runs in CI: every labeled finding fires, benign designs stay clean.

05 · Ship

Into the pack

The rule lands with attestral explain docs. A check that would not change a decision is dropped.

A network-bound MCP bridge shipped a terminal tool with no auth: remote unauthenticated RCE, CVSS 10.0RufRoot · CVE-2026-59726 · also LibreChat CVE-2026-22252
ATL-176 · transport + no-auth + shell, composed on one server
Tool descriptions carrying hidden instructions: invisible Unicode, tag smuggling, zero-width splitsMCPTox · Invariant Labs tool-poisoning research
ATL-175 · hidden-content detection, plus the ML layer for plain-language injection
Rug-pull infrastructure: an MCP endpoint on a disposable tunnel host, or a hidden dot-directory launch paththe Deadbugz class · Pillar Security, 2026
ATL-172 + ATL-173 · ephemeral-tunnel endpoints, dot-cache launch paths
An AI agent wired into CI, reachable from an unprivileged issue, with secrets in scope and a shellconfused-deputy CI · CVE-2026-54316
ATL-223 · the four-way conjunction over modeled CI workflows
Repo-committed IDE config that auto-launches an MCP server the moment a workspace opensworkspace-autoload class, 2026
ATL-174 · scoped to IDE auto-load dirs, tuned to zero false positives
Known-vulnerable agent dependencies: the frameworks the agent itself is built onlangflow · vLLM · n8n · Flowise · mcp-remote CVEs, tracked as they land
ATL-145 · a version-pinned CVE table over the dependency manifest
OWASP ASI Top 10 (2026)OWASP LLM Top 10 (2026)OWASP MCP Top 10MITRE ATLASMCP spec · security best practicesNIST 800-53CIS AWS · Azure · GCP · K8sSOC 2 · ASVS

Framework references are an audit artifact, not decoration: attestral explain ATL-176 prints the rule, its reasoning, and the controls it cites, straight from the pack.

Run the phases yourself

The whole pipeline is a handful of commands.

Everything above maps one-to-one onto the CLI. No account, no server; only the judge needs a key.

$ attestral scan ./my-agent# phases 1-4: ingest, model, trace, rules
$ attestral scan ./my-agent --ml --judge# layers 2-3: ML tier + LLM cross-examination
$ attestral validate ./my-agent# walk the attack path, entry to impact
$ attestral verify review.json# phase 6: the chain, verified offline
$ attestral compile ./my-agent -o policy.yaml# phase 7: default-deny runtime policy
$ attestral drift policy.yaml events.jsonl# runtime vs. the attested design
$ attestral pentest ./my-agent# executed red-team: measured, contained
See it on your own agent. pip install attestral && attestral scan . Read the docs →