Assure – your AI agent says "done." This checks if it's lying A project called Assure released a verification harness that runs an AI agent against a disposable SQLite and file workspace, routes all of the agent's tool use through a policy-enforcing gateway, and judges the run with deterministic human-written assertions rather than an LLM. Assure records agent statements as untrusted claims to be compared against what the gateway observed, requires no API key, and returns exit codes 0 (all required checks passed), 1 (definite policy or correctness failure), 2 (inconclusive) and 64 (usage error). Each run writes hash-chained gateway_events.jsonl and agent_events.jsonl, redacted artifacts, before.db/after.db, file manifests, per-assertion results and report.json, and the project's CI workflow runs the full test suite on Python 3.11 and 3.12 with no model calls. assure runs an AI agent against a disposable SQLite and file workspace. All of the agent's tool use goes through a gateway that applies policy, and the result is checked with deterministic assertions written by a human. No LLM is involved in any verdict. The engine needs no API key. Agent statements are recorded as untrusted claims, compared with what the gateway observed, and never decide a result. Read DESIGN.md https://github.com/mgasparin67-cmd/Agent-verification Assure/blob/main/DESIGN.md for the assessment, architecture, trust boundaries, schemas, and aggregation rules. - .github/workflows/ci.yml runs on every push and pull request, on Python 3.11 and 3.12, with no API key and no model calls. It runs the full test suite mock agents, the bridge against a local fake API, and the SDK-based MCP agent , runs check-suite on every file in suites/ , and checks that the generated long-task specs match specs/long/build.py . A change that breaks a verdict, or makes a task stop telling right from wrong, fails the build. - .github/workflows/bench.yml is a live benchmark you start by hand: Actions, then bench, then Run workflow. Choose the suite, models, repeats and an optional minimum pass rate. It needs an ANTHROPIC API KEY repository secret and makes paid calls. The job fails on a significant regression against the first model, or on a pass rate below the minimum. The summary appears on the run page, and bench.json plus each run's evidence are uploaded as an artifact for 30 days. The key is redacted from all evidence. uv venv -p 3.12 .venv && uv pip install -p .venv -e '. test ' On macOS, if the project sits in a synced folder such as Desktop or Documents, the editable .pth file can get the hidden flag. Python 3.12 skips hidden .pth files, so you see ModuleNotFoundError: assure . In that case, install it as a regular package uv pip install -p .venv --reinstall-package assure '. test,claude ' and rerun that command after changing code. or python3.12 -m venv .venv && .venv/bin/pip install -e '. test ' . Requires Python ≥ 3.11. If assure reports No module named 'assure' on macOS, the editable-install .pth file got the hidden flag Python ≥ 3.12 skips hidden .pth files : chflags nohidden .venv/lib/python3. /site-packages/ .pth . Optional: Docker, for --isolation docker . .venv/bin/assure scenarios .venv/bin/assure run --scenario correct also: false-success, collateral-change, prohibited-access, missing-event, conflicting-event, tampering, verifier-error .venv/bin/assure run --scenario collateral-change --json full report on stdout .venv/bin/assure run --task specs/customer update/task.yaml --agent-cmd "'/abs/path/python' my agent.py" .venv/bin/assure verify-log runs/