Skip to main content

Governance for autonomous agents. Intercepts every action, enforces policy, writes tamper-evident receipts.

Project description

transient-trace

Governance for AI agents. Every action an agent takes — subprocess calls, tool use, network requests — is evaluated against a policy and recorded as a tamper-evident, cryptographically signed receipt before it executes.

Part of Transient, the trust infrastructure for autonomous agents.

Install

pipx install transient-trace

pipx installs into an isolated environment and puts the transient-trace binary on PATH permanently. If you don't have pipx: brew install pipx && pipx ensurepath.

Upgrade

pipx upgrade transient-trace

Quickstart

The fastest path to governed agents is the wrap command. It installs a persistent shim so every invocation of the binary goes through governance automatically, with no prefix required.

transient-trace wrap install claude --auto-rc

source ~/.zshrc

Every claude invocation is now governed with a full receipt trail.

transient-trace wrap status

transient-trace receipts list --since 30m

transient-trace receipts summary --since 1h

How it works

transient-trace sits between your agent and the operating system. Every action passes through the governance layer before it executes — including calls that use absolute binary paths or run inside nested subprocesses.

No changes to your agent framework required. Works inside Claude Code, LangChain, custom harnesses, and raw Python out of the box.

Enforce a policy

By default, transient-trace runs in audit mode — records everything, blocks nothing. To enforce a policy, switch to strict mode:

cat > my-policy.json << 'EOF'
{
  "version": 1,
  "defaultAction": "deny",
  "rules": [
    { "id": "allow-git",       "action": "allow", "actionClasses": ["read", "write_low"] },
    { "id": "allow-anthropic", "action": "allow", "actionClasses": ["network"],
      "hosts": ["api.anthropic.com"] }
  ]
}
EOF

transient-trace run --mode strict --policy "$(cat my-policy.json)" claude -p "..."

Or set strict mode as the permanent default:

transient-trace config set mode strict

Python SDK

For direct integration into Python agents:

from transient_trace import Client

client = Client({
    "agentId": "my-agent",
    "mode": "permissive",
    "packages": ["shell"],
})

result = client.executeActionWithReceipt(
    lambda: {"ok": True},
    {"target": "resource-1", "action_class": "write_low"}
)

print(result["receipt"]["receipt_id"])       # TR-...
print(result["receipt"]["signature"]["alg"]) # Ed25519
print(result["decision"]["outcome"])         # allow

If policy returns deny, raises RuntimeError: Denied: <reason_code>.

Receipts

Every governed action produces a signed receipt:

{
  "receipt_id": "TR-01KPHGWX7C7A2BQYJKX93YP59Q",
  "execution_status": "executed",
  "event_snapshot": {
    "action_class": "x.read",
    "matched_rule_id": "x-read-allow",
    "matched_rule_reason": "x-governance/social-listening: read allowed."
  },
  "signature": {
    "alg": "Ed25519",
    "sig": "xRVLkN4r1hNy..."
  }
}

Receipts are tamper-evident. The event snapshot is hashed with SHA-256 and signed with Ed25519 before write. Signatures are cross-verifiable between the Python and TypeScript SDKs.

Governance packages

Governance packages are pre-built rule sets you can drop into any project:

client = Client({
    "agentId": "my-agent",
    "packages": ["shell", "filesystem", "web"],
})

Available packages map to OWASP Agentic Security Initiative threat categories:

Package Covers
shell Inline interpreter execution
filesystem Destructive file operations
web Outbound HTTP and SSRF
code Git push, package installs, supply chain
privilege sudo, su, chmod escalation
messaging Outbound message delivery

Further reading

Transient — full product docs, Recall, Intelligence, receipt bus

ATP 1.0 — the open protocol specification underlying every receipt

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

transient_trace-0.1.0a9.tar.gz (174.3 kB view details)

Uploaded Source

Built Distribution

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

transient_trace-0.1.0a9-py3-none-any.whl (109.7 kB view details)

Uploaded Python 3

File details

Details for the file transient_trace-0.1.0a9.tar.gz.

File metadata

  • Download URL: transient_trace-0.1.0a9.tar.gz
  • Upload date:
  • Size: 174.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transient_trace-0.1.0a9.tar.gz
Algorithm Hash digest
SHA256 e14b4461caeac9c6e0b9fd5b3302919c9041f577e050277ea58e11015da1d13f
MD5 82ca46497e8e86479805d65250b28836
BLAKE2b-256 75260a241cdc162363deda3f51bf21a6468132281e7d7d09131178e8957e60ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for transient_trace-0.1.0a9.tar.gz:

Publisher: publish.yml on james-transient/transient-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file transient_trace-0.1.0a9-py3-none-any.whl.

File metadata

File hashes

Hashes for transient_trace-0.1.0a9-py3-none-any.whl
Algorithm Hash digest
SHA256 b6fd068665cd403e57b318792f2524b1921a60dcd6606ef0d1185f8ac019bb33
MD5 b6fc032d80fe2936baafa6fcf8e4bd3e
BLAKE2b-256 adb1d1665ce850281fe9434a6272b7e794d3ae7a485da78e84a9a7a5b316bd10

See more details on using hashes here.

Provenance

The following attestation bundles were made for transient_trace-0.1.0a9-py3-none-any.whl:

Publisher: publish.yml on james-transient/transient-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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