Skip to main content

assurance

Your AI agent says it's done. Assurance tells you what it didn't check.

uvx assurance audit          # in a project where you've used Claude Code
uvx assurance audit --demo   # or see a report on a bundled sample session

No uvx? Install uv (brew install uv, or curl -LsSf https://astral.sh/uv/install.sh | sh, or pipx install uv), or use pip install assurance and run assurance audit.

Real output on the bundled sample. The agent was asked to fix a rounding bug "and make sure the tests pass", and ended with "All done — the totals are correct now."

Claude Code session demo-8f2 — 13 min in /home/you/my-app
10 tool calls, 3 failed — Bash 6, Edit 2, Grep 1, Read 1

  Looped: 3 rounds of Bash `pytest -q tests/test_invoice.py` failing the same way, with nothing new read
  After the last edit (14:09): no test or check it recognises; 2 unclassified commands ran after it (make lint-fix, python script)
  Not classified: 2 shell commands (make lint-fix, python script), so whether they read, wrote or tested anything is unknown.
  Also in the transcript: 1 assistant turn, 1 user turn, 1 bookkeeping record.
  Not read: 0 lines.

Run it after every session. When Claude finishes without testing its last edit, you're told, and Claude is sent back to run the tests. assurance hook install adds the Stop hook after showing you the change, and assurance hook remove takes it out again:

uvx assurance@latest hook install    # --scope project to share it with everyone on the repository
uvx assurance hook remove

Or as a Claude Code plugin, which also adds /assurance:audit for the whole report in a session:

claude plugin marketplace add i-ops-hq/assurance
claude plugin install assurance@i-ops-hq

Or add it to ~/.claude/settings.json yourself:

{ "hooks": { "Stop": [ { "hooks": [ { "type": "command", "command": "uvx --offline assurance@0.1.4 audit --hook --nudge" } ] } ] } }

Run uvx assurance@0.1.4 --version once first: --offline runs the copy uv already has, so the hook never waits on PyPI.

Every command

command question
assurance audit what did a Claude Code session actually do, and what did it skip?
assurance hook install, remove or check the Stop hook that runs the audit after every turn
assurance diff / assurance check did the work cover what it was supposed to, and what did it miss?
assurance pin did an MCP server change a tool definition after you approved it?
assurance deps what will a pip install or npm install execute, read without executing it?
assurance budget where did an agent run's budget go, and where did it loop going nowhere?
assurance authority may this task proceed for the person who asked?
assurance drift did a failure rate actually shift, or was the week noise?

Nothing here consults a model, opens the network, or reports a check it could not run as a pass.

This package contains no code of its own. It installs assurance-cli, assurance-deps, assurance-budget and assurance-authority, each of which also installs on its own. The MCP server is separate: pip install assurance-mcp.

Source, issues and documentation: https://github.com/i-ops-hq/assurance · Apache-2.0.

Release files for assurance 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for assurance 0.1.4
File Size Uploaded
assurance-0.1.4.tar.gz 11.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for assurance 0.1.4
File Interpreter ABI Platform
assurance-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 18.3 kB

Release files / assurance-0.1.4.tar.gz

Download URL assurance-0.1.4.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4121c0651aaa8898322787071ae31e7769c96bebef0082390afe203f455c0301
BLAKE2b-256 checksum
How to use checksums
ae88eb32f477fe1cf5189b93849e59f0c33f6c26358c709dcf66439783163b0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release files / assurance-0.1.4-py3-none-any.whl

Download URL assurance-0.1.4-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
944b6a9f06e00bf6a235c2baf232260391b913249306fb9f820b8cc340c9f728
BLAKE2b-256 checksum
How to use checksums
228d12db3fa8525f2373af15d58864a6a113768321f4a1ca7d6b6a9201f10e21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page