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.
agt verify | grep -E "PASSED|ASI 2026 Coverage|ASI-"Agent Governance Toolkit — Verification PASSED ✅ OWASP ASI 2026 Coverage: 10/10 (100%) ✅ ASI-01: Prompt Injection ✅ ASI-02: Insecure Tool Use ✅ ASI-03: Excessive Agency ✅ ASI-04: Unauthorized Escalation ✅ ASI-05: Trust Boundary Violation ✅ ASI-06: Insufficient Logging ✅ ASI-07: Insecure Identity ✅ ASI-08: Policy Bypass ✅ ASI-09: Supply Chain Integrity ✅ ASI-10: Behavioral Anomaly
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.
{
"schema": "agt-runtime-evidence/v1",
"deployment": {
"policy_files_loaded": [],
"registered_tools": [],
"audit_sink": {},
"identity": {}
}
}
agt verify --evidence evidence.json | grep -E "INCOMPLETE|Runtime Evidence|❌"Agent Governance Toolkit — Verification INCOMPLETE ⚠️ Runtime Evidence: 0/6 checks passed ❌ Policy files loaded: No loaded policy files were reported. ❌ Deny rule or deny-by-default: No deny rule or deny-by-default detected in loaded policy files. ❌ Registered tools: No registered tools were reported. ❌ Audit sink configured: Audit sink missing, disabled, or missing target. ❌ Identity enabled: Identity missing or disabled. ❌ Package/version manifest: Package/version manifest missing or incomplete.
The bare score vs the evidence score
| agt verify | agt verify --evidence | |
|---|---|---|
| Checks | Ten modules import | Six real deployment signals |
| Passes on an empty dir | Yes, 10/10 | No, 0/6 incomplete |
| Tells you | The library ships the code | Whether you used it |
| Put in a report | Only with this caveat | Yes, 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.
--evidence for anything you would show an auditor.Related
- Previous: Testing a policy from the command line
- Next: Checking the toolkit's files with agt integrity
- Run
agt verifywith 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 verifyand read the machine-readable coverage object.
This is what real progress feels like.