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.0.tar.gz (175.3 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.0-py3-none-any.whl (140.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stipul-0.2.0.tar.gz
  • Upload date:
  • Size: 175.3 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.0.tar.gz
Algorithm Hash digest
SHA256 122738469babfa5c144b6314ec06bd2fb338b325bffcbf7932c01e5611b451a8
MD5 9cd90247e21eb6dd55b3541ac476dd45
BLAKE2b-256 05f69d1ff2316c124b177f92aae6eb6ff24a08a34da72c36303670c3e3f464c6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stipul-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 140.7 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e23fab7c36367ec6cbead75a68773e4dc00b83967cd9c58360760752f9dbb7a
MD5 9861c8c1a88ef62a0b7b8ca2b2726a8f
BLAKE2b-256 e76bca4bbd0c6255a33540db45e4e614aa2e4bb3008435ce96871c0f351960d3

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