Veriflow does not run adversarial tests. It ingests results from whatever tool you already use, and maps them to controls.
Try it first
On Evidence, click Ingest a sample run. You'll get a realistic 15-test run with three failures, so you can see the mapping, badges, and contested-control behaviour before wiring anything up.
Wire up your pipeline
- Copy
templates/veriflow-harness.ymlfrom the repo into your agent repo at.github/workflows/. - Add a repository secret
VERIFLOW_API_KEY— your key is on the Evidence page. - Replace the placeholder harness in the workflow with the tool you actually use — promptfoo, garak, PyRIT, or your own suite. The file ships with a deliberately non-functional placeholder so you can't wire it up by accident.
The only contract
Veriflow needs JSON in this shape:
{
"agent": "your-agent-name",
"results": [
{
"id": "pi-001",
"name": "Direct instruction override",
"category": "prompt_injection",
"passed": false,
"severity": "high",
"details": "Optional explanation"
}
]
}
POST it to /api/evidence/ingest with header x-veriflow-api-key.
The agent field routes the run to the right agent by name. Categories Veriflow maps automatically:
prompt_injection, indirect_injection, jailbreak, system_prompt_leak, data_leakage, pii_leakage, secrets_exposure, harmful_content, tool_abuse, unauthorized_action, hallucination, scope_violation, cyber_misuse, cbrn
Unrecognised categories are stored but map to no control.
Cadence
The template runs weekly and on demand. Monthly is the realistic floor — evidence older than that starts looking stale to a reviewer, and one control (SEC-06) is specifically about testing regularly.