Agent Governance ToolkitAgent Governance Toolkit 4.1.0 · Python 3.10+
Dashboard
0%
1
Curious builder0 XP earned · 300 to level 2
0 daysFinish a lesson to begin
Badge collection0 of 6 unlocked
47 small wins to finish your pathNext lesson →

What agt verify proves, and what it does not

agt verify prints a 10 out of 10 OWASP coverage score, but the bare command only checks that ten modules import, so it passes in an empty directory with no policy and no agent.

Last updated: 14 Oct, 2026 · Agent Governance Toolkit 4.1.0

The toolkit advertises coverage of the OWASP Top 10 for Agentic Applications, and agt verify prints a green 10 out of 10. It is worth knowing exactly what that number measures before you put it in a report, because on its own it measures almost nothing.

The bare command passes on nothing

Run agt verify in an empty directory. There is no policy, no agent, no audit trail here, and it still reports full coverage. The check behind each tick is that a module can be imported and a function exists on it, not that anything governs a real call.

ExampleFull marks in an empty directory
agt verify | grep -E "PASSED|ASI 2026 Coverage|ASI-"

What each tick checks

  • It is an import-presence check. For each of the ten risks it imports a module and reads an attribute off it. If both exist, the risk is marked covered.
  • It never ran your system. No policy was loaded, no tool call was gated, no audit entry was written, yet every box is ticked.
  • The number describes the library, not your deployment. It says the toolkit ships code for each area, not that you used it.

The evidence mode is the one that checks your deployment

Passing --evidence with a runtime evidence file makes agt verify check real signals: were policy files loaded, is there a deny rule, are tools registered, is an audit sink configured, is identity enabled, is there a version manifest. An empty deployment scores zero of six and the overall result is incomplete.

json
{
  "schema": "agt-runtime-evidence/v1",
  "deployment": {
    "policy_files_loaded": [],
    "registered_tools": [],
    "audit_sink": {},
    "identity": {}
  }
}
ExampleEvidence mode scores an empty deployment zero of six
agt verify --evidence evidence.json | grep -E "INCOMPLETE|Runtime Evidence|❌"

The bare score vs the evidence score

agt verifyagt verify --evidence
ChecksTen modules importSix real deployment signals
Passes on an empty dirYes, 10/10No, 0/6 incomplete
Tells youThe library ships the codeWhether you used it
Put in a reportOnly with this caveatYes, it reflects your system

Where you use agt verify

  • The evidence mode in CI, failing the build until the six real signals are present.
  • A deployment checklist, reading the six checks as the things a governed system needs.
  • Never the bare number alone as proof a system is governed, because it is not.
Watch out. The bundled README states an unqualified 10 of 10 OWASP coverage, and this command echoes it. The document that was meant to temper it, with a 7 full and 3 partial breakdown, is not shipped in the wheel. Treat the bare 10 out of 10 as a statement about the library's surface area, and use --evidence for anything you would show an auditor.
Try it yourself
  • Run agt verify with no filter and read the attestation hash and platform lines it adds.
  • Fill one field in the evidence file, such as a registered tool, and watch the score move off zero.
  • Run agt --json verify and read the machine-readable coverage object.

This is what real progress feels like.