Skip to main content

WarrantOS: CI for claims

Every factual claim in an AI-assisted document ships with a source, a [CITE NEEDED] tag, or a logged BLOCK. No warrant, no ship.

claude-provenance on GitHub and as the legacy Claude Code plugin; warrantos on PyPI and the CLI.

ci layers: 20B / 0P version: 0.10.0 python: 3.11--3.13 deps: stdlib only

Ten seconds

$ warrantos demo
WarrantOS honest demo
---------------------
Checking a synthetic AI-style draft that deliberately contains
unsupported factual claims and conversational scaffold residue.
Expect a BLOCK verdict.

warrantos check
  run id:        run_6e466f721f8a
  profile:       final-prose
  claims detected: 6
  claims supported: 0
  claims unsupported: 6
  boundary: blocked (7 violations)
  overrides on record: 0

VERDICT: BLOCK
  - BLOCK: boundary violation [assistant_opener severity=high] line 9: Certainly!
  - BLOCK: boundary violation [hedge_provenance severity=medium] line 15: Based on the information provided
  - BLOCK: boundary violation [scaffold_placeholder severity=high] line 17: [TODO: add the figures from the evaluation once the team sen
  - BLOCK: boundary violation [assistant_closer severity=high] line 19: I hope this helps

Real output, trimmed. The full run lists all seven violations and the paths of the audit artefacts it wrote.

Install

pipx install warrantos      # isolated CLI install
uvx warrantos demo          # zero-install trial run
pip install warrantos       # plain pip works too

Lint your docs for AI slop

warrantos slop docs/ README.md         # scan paths for scaffold residue and unsourced claims
warrantos slop --json docs/            # machine-readable output
warrantos slop --badge docs/           # emit a badge URL for your README
warrantos slop --fail-over 0 docs/     # CI mode: non-zero exit above the threshold

Catches the tells that an AI draft shipped unedited: assistant openers and sign-offs, identity disclaimers, delivery framing, stray TODO placeholders, and factual sentences with no source in reach. The full pattern list lives in one place, context_admissibility, so a slop finding and a check violation are always explained by the same rule. Fenced code blocks are skipped by default because they usually quote deliberate examples; scan them with --include-fences.

Then go one layer deeper with warrantos tells, the opinionated sibling: it flags prose that is residue-free but still reads machine-written (contrastive negation of the "not X, but Y" family, stacked hedges, em-dash punctuation, AI filler phrases, a drumbeat of formulaic paragraph-openers). House style is a judgement call, so tells lives in its own command and its own score; the philosophy and limits are in docs/TELLS.md.

warrantos tells docs/                  # TELL SCORE plus per-finding pattern and category

This repository holds itself to both: the docs scan slop-free and tells-clean.

Gate your agent

pip install "warrantos[mcp]"
warrantos-mcp                # stdio MCP server for Claude Code / Claude Desktop

The Claude Code Stop hook (warrantos-verify-hook) checks what the model wrote before the turn ends: stdlib only, no network, never breaks the session. Wiring instructions in docs/MCP-CONFIG.md; the hook surfaces live in warrantos/hooks/.

Audit trail for governance

warrantos attest final.md --run-dir .warrant/runs/<id> --out final.warrant
warrantos verify-external final.warrant --prose final.md   # exits non-zero on any failure

Every checked run can be sealed into a portable .warrant bundle that a third party verifies offline: no access to your ledger, no network call, fail-closed, with a zero-backend browser verifier (web/verify.html) for readers who have only the file. Details in docs/VERIFICATION.md; the control mapping to ISO/IEC 42001 and the NIST AI RMF is in docs/COMPLIANCE.md.

How it works

WarrantOS reads one document at the writer's desk, before it ships. It detects factual claim sentences and checks each for a source in the same sentence or the line directly below, or an explicit [CITE NEEDED]. It scans for chat scaffold and process residue that bled into the artefact. It returns one verdict (PASS, HOLD, BLOCK, or NOT_ASSESSABLE) and writes every miss to an append-only, tamper-evident ledger you can hand an auditor. Stdlib only, MIT, no API, no account.

Doc What it covers
docs/QUICKSTART.md Five-minute tour with each output line explained
docs/SPEC.md The normative specification
docs/STATUS.md Per-layer build-state dashboard
docs/LIMITATIONS.md Known failure modes, stated plainly
docs/COMPLIANCE.md ISO/IEC 42001 and NIST AI RMF self-assessment mapping
docs/VERIFICATION.md Offline .warrant verification in full
docs/FULL-OVERVIEW.md The pre-0.10 README body: full narrative, tooling map, release history

What this does not do

WarrantOS does not detect truth, and it does not try to. The claim detector is a heuristic and will produce false positives and false negatives. Offline verification checks token overlap, not meaning. A correctly sourced claim can still be misleading or selectively cited. What the tool guarantees is narrower and operational: an unsourced or unchecked claim becomes expensive instead of invisible, and the miss goes on the record. It does not replace human review and does not claim to. The full list is in docs/LIMITATIONS.md.

Licence

MIT. Built by Juan Vega, Prometheus Policy Lab, in a personal capacity. Not associated with, funded by, or endorsed by any employer or government.

Metadata

Release files for warrantos 0.10.0

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

Source distribution (sdist)

Source distribution for warrantos 0.10.0
File Size Uploaded
warrantos-0.10.0.tar.gz 235.9 kB Details

Built distribution (wheel)

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

Total release size: 389.5 kB

Release files / warrantos-0.10.0.tar.gz

Download URL warrantos-0.10.0.tar.gz
Size 235.9 kB
Tags Source
SHA-256 checksum
How to use checksums
65f57db63fe03a3df54809c87efeb86f292cb962966f729ad30482a35855c1c0
BLAKE2b-256 checksum
How to use checksums
481bffb317aef752f3559a66bfc603742b12303057a9aa86ef33e1f5db730207
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Jul 8, 2026.

Transparency log

Release files / warrantos-0.10.0-py3-none-any.whl

Download URL warrantos-0.10.0-py3-none-any.whl
Size 153.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d005d84c665868ecde3064be9d5b1d5be4ffeeeeb741ca858fde68a817b3ff26
BLAKE2b-256 checksum
How to use checksums
c4dcbe0860e3f22370995f92944e1693b477f4db54eba73e3bceacfa4dbe821f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Jul 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.2

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