Skip to main content

Deterministic enforcement and cryptographic evidence for AI agent actions

Project description

Stipul

Your agents act. Can you prove what they did?

What Stipul does

Stipul is a runtime authorization and evidence layer for AI agents. It intercepts tool calls, enforces policy, and produces a cryptographic proof chain around each decision. Writ enforces the Charter, records every decision in the Chronicle, and produces a cryptographic Seal. One command shows enforcement, evidence, verification, and tamper detection.

See it work

Requires Python 3.10+. On systems with externally managed Python environments, global pip install may be blocked. Use a virtual environment or pipx.

# Recommended — virtual environment
python3 -m venv .venv
.venv/bin/pip install stipul
.venv/bin/stipul demo proof

# Optional — isolated app install via pipx
pipx install stipul
stipul demo proof
═══ Stipul Proof Demo ═══

Session: proof-demo

  seq 1  allow   filesystem.read      reason: allowed_tool
  seq 2  deny    web.search           reason: not_in_egress_allowlist
  seq 3  deny    shell.exec           reason: never_allow_tools
  seq 4  close   session_close

Trust: VERIFIED
  Chain: INTACT
  Seal:  VALID
  Decisions: 3
  Fingerprint: proof-demo | INTACT | VALID | 3 decisions | <hash>

═══ Tamper Challenge ═══

The seal records a cryptographic attestation over the session evidence.
Inspect it yourself, verify the session as-is, then change a recorded value and re-verify.

Step 1 — View the current seal:

  cat /tmp/stipul-proof-demo-<id>/session/seal.json | python3 -m json.tool

Step 2 — Verify the session as-is:

  stipul verify /tmp/stipul-proof-demo-<id>/session

Step 3 — Now tamper with the seal:

  sed -i 's/"terminal_sequence_id": <N>/"terminal_sequence_id": 999/' \
    /tmp/stipul-proof-demo-<id>/session/seal.json

Step 4 — Re-verify the session:

  stipul verify /tmp/stipul-proof-demo-<id>/session

Proof complete: enforcement decisions recorded, chained, and sealed.

Run the demo locally, follow the tamper challenge steps, and watch the trust verdict flip from VERIFIED to REJECTED. This demo runs locally with no external dependencies or framework integration.

Architecture

Writ intercepts tool calls at the runtime boundary and applies policy before execution.

Charter defines what an agent is allowed to do, expressed as declarative rules.

Chronicle records every enforcement decision as a tamper-evident event chain.

Seal binds the recorded evidence to a cryptographic attestation that verification can check.

When you need this

If a support agent can read local files and call web tools, you need a record showing which reads were allowed, which outbound requests were denied, and whether that evidence changed after the run. If a coding agent can touch the filesystem and invoke shell commands, you need policy enforcement and a sealed session trail before you let it operate in CI or against a shared repository. If an internal ops agent can inspect tickets, secrets, or deployment tooling, you need verification that the observed tool trace is the same one the runtime authorized.

Claude Code Integration

Use Stipul to put Claude Code in read-only review mode — allow file reads, block writes and shell commands, verify the session afterward with a sealed receipt.

See the full walkthrough: Claude Code Quickstart

Links

PyPI: https://pypi.org/project/stipul/ GitHub: https://github.com/miadco/stipul

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stipul-0.2.1.tar.gz (175.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stipul-0.2.1-py3-none-any.whl (141.1 kB view details)

Uploaded Python 3

File details

Details for the file stipul-0.2.1.tar.gz.

File metadata

  • Download URL: stipul-0.2.1.tar.gz
  • Upload date:
  • Size: 175.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for stipul-0.2.1.tar.gz
Algorithm Hash digest
SHA256 23e13972c5109d54611350e7937ea8727bf532e45c5deac436f056bccf854b52
MD5 16a7ae2ca874509f910bfa6dc12538f1
BLAKE2b-256 73499a1a671e7fad859b73cf1b84c6e289e4a61a07b35a66bd2c72c81e80a15f

See more details on using hashes here.

File details

Details for the file stipul-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: stipul-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 141.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for stipul-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0c114e93ad181cb71161a826dae555097aae8644a119ebecb86e01c9c62c3106
MD5 659e35d3757b31086c832ec782d91768
BLAKE2b-256 3feef00201e4ca1f27bbb7b644be84caed1e8263dabdb8a36f71d1f018fedcb0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page