ZTIP reference runtime — RFC 8785 canonicalization, SHA-256 hashing, and integrity verification for the Zero Trust Intelligence Protocol
Project description
ZTIP — Zero Trust Intelligence Protocol
Every agent handoff is a trust decision. ZTIP makes that decision provable.
Freedom for engineers. Governance for the organization.
What Is ZTIP?
ZTIP is an open protocol for governed agent transactions.
When one AI agent invokes another — or when an agent requests an action from a system, a human, or a workflow — that interaction is a transaction. ZTIP defines how that transaction must be structured so it is authorized, verifiable, and auditable after the fact.
ZTIP does not dictate transport. It does not restrict which agent framework, model, or tool your engineers use. It governs the transaction itself: what was requested, whether it was authorized by policy, and what happened.
The transport does not matter:
- API call
- File on disk
- Message queue
- GitHub PR
- Chat message
- Workflow engine trigger
ZTIP governs the transaction artifact, not how it moves.
The Problem
AI agents are being chained together at scale. Planners invoke executors. Orchestrators invoke specialists. Tools invoke tools.
None of these handoffs, in today's frameworks, carry governance. One agent passes a message to another. The other runs it. Nothing is signed. Nothing is policy-checked. Nothing is auditable.
This is ambient authority — the most dangerous kind. An agent that can call another agent implicitly holds the combined power of both, with none of the accountability of either.
At the same time, the answer is not to lock down which tools engineers can use. That creates friction, slows delivery, and drives workarounds. Engineers need freedom to use whatever agent tools help them move fast.
ZTIP solves both sides of that tension.
Freedom for engineers. Governance for the organization.
Key Benefits
- Tool-agnostic governance. Engineers use any agent, model, or framework. ZTIP wraps the transaction, not the tool. No forced migration. No approved-tools list.
- Every handoff is auditable. Requests and their outcomes are captured as structured JSON artifacts with cryptographic integrity hashes. Every transaction leaves a record.
- Policy-based authorization. Transactions are evaluated against organizational policy. Some are auto-authorized. Some require human approval. Some are rejected outright. The policy decides — not the transport, not the agent.
- No implicit trust. There is no "trusted internal network" where governance is relaxed. A transaction without a valid authorization record does not pass.
- Human-readable artifacts. ZTIP artifacts are plain JSON. Integrity is enforced via cryptographic hashes, not encryption. Any person or system can read, store, and verify them.
Relationship to ZTI and ZTI Core
ZTIP is part of the Zero Trust Intelligence (ZTI) ecosystem. The three components are distinct:
| Component | What It Is |
|---|---|
| ZTI | The verification doctrine: do not trust AI output blindly — verify it before it acts. |
| ZTIP | The open protocol: defines how governed agent transactions are structured and recorded. |
| ZTI Core | A control-plane implementation: evaluates policy, issues authorization records, and stores ZTIP artifacts. |
ZTI (verification doctrine)
└── ZTIP (open transaction protocol)
└── ZTI Core (control plane — evaluates policy, authorizes, audits)
ZTIP is the protocol. ZTI Core is one compliant implementation of the control plane that enforces it. Organizations may use ZTI Core or build their own compliant control plane.
How a Governed Transaction Works
- An agent initiates a request. It packages the request as a ZTIP transaction artifact — structured JSON describing what is being requested, by whom, and for what purpose.
- The control plane evaluates policy. The artifact is submitted to the control plane (e.g., ZTI Core). Policy determines the outcome: auto-authorize, require human approval, request additional evidence, or reject.
- An authorization record is issued. If approved, the control plane appends an authorization record to the artifact. The artifact is now a complete, verifiable transaction.
- The target agent or system acts. Only transactions carrying a valid authorization record proceed. The artifact, not a side-channel, is the proof of permission.
- The artifact is stored. The complete transaction — request, policy evaluation, authorization outcome, and result — is recorded. The integrity hash chain makes post-hoc modification detectable.
Conceptual Example
The following is illustrative only — a conceptual sketch, not the specified form. The
specified envelope model lives in SCHEMA.md and schemas/, with complete lifecycle bundles
under examples/.
{
"ztap_version": "1.0-draft",
"transaction_id": "txn_abc123",
"requesting_agent": "planner-agent-7f3a",
"target_capability": "deploy",
"request_payload": {
"service": "billing-api",
"environment": "production"
},
"authorization": {
"policy_evaluated": true,
"outcome": "approved",
"approved_by": "policy://deploy/production/auto",
"recorded_at": "2026-04-24T14:00:00Z"
},
"integrity": {
"payload_hash": "sha256:e3b0c44298fc...",
"artifact_hash": "sha256:a1b2c3d4e5f6..."
}
}
Note: This example illustrates the concept of a governed transaction artifact. The specified form differs — see
SCHEMA.mdand the JSON Schemas underschemas/for the canonical envelope model, andVISION.mdfor the governing principles behind the design. The version field is namedztap_versionafter the protocol's original working name; it is retained for hash stability (see the legacy-field note inSCHEMA.md).
In this example, the transaction was authorized by policy automatically — no human approval was
required. A different policy configuration might have required a human to approve before
artifact_hash could be finalized and the transaction allowed to proceed.
Authorization Is Policy-Conditional
ZTIP does not require human approval for every transaction. Authorization is determined by organizational policy, evaluated by the control plane. Possible outcomes include:
- Auto-authorized — policy permits this transaction without human review.
- Human approval required — policy requires a named approver or role to sign off.
- Additional evidence required — policy requires supplemental context before a decision.
- Rejected — policy does not permit this transaction.
ZTIP supports all of these outcomes. The protocol records the outcome and the basis for it. The organization defines the policy.
What ZTIP Does Not Define (Yet)
ZTIP is in draft. The following are not yet specified:
- Transport bindings (how artifacts move between agents and the control plane)
- SDK or library interfaces
- Identity and signing requirements
The canonical schema (SCHEMA.md and schemas/) and the hash requirements (RFC 8785 JSON
Canonicalization Scheme with SHA-256 integrity hashes) are now specified.
These will be defined as the specification matures. See VISION.md for the principles that
will guide those decisions.
Current Status
ZTIP is in draft specification. The doctrine (SPEC.md), envelope schema (SCHEMA.md and
schemas/), conformance requirements (CONFORMANCE.md), and lifecycle examples (examples/)
are drafted. This repository is the canonical home for that work.
The repository also ships a reference runtime: the ztip/ Python package implements RFC 8785
canonicalization, SHA-256 hashing, and hash-chain integrity verification, with a ztip CLI
(ztip hash, ztip verify) that fails closed on any defect. The integrity hashes in the
examples/ files are real and recomputable with it.
Contributions, questions, and alignment discussions are welcome.
Authorship and Stewardship
ZTIP was created by Chad McCormack as part of the Zero Trust Intelligence (ZTI) ecosystem.
This repository is maintained under the bitscon GitHub organization and released under the MIT License.
For citation metadata, see CITATION.cff. For author and stewardship information, see AUTHORS.md.
ZTIP: the open protocol for governed agent transactions. Where ZTI asks "was this decision verified?", ZTIP asks "was this handoff governed?"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ztip-1.0.0.dev1.tar.gz.
File metadata
- Download URL: ztip-1.0.0.dev1.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b44d06057e989371756a846424b79de4a6c78dac3afcd69d4871696979cebfb
|
|
| MD5 |
a605430e710f023ef625e2363a754d34
|
|
| BLAKE2b-256 |
085e92476284cf23c5ef28baf4e2b4a86462560d807dc4b796f347ae97b63439
|
File details
Details for the file ztip-1.0.0.dev1-py3-none-any.whl.
File metadata
- Download URL: ztip-1.0.0.dev1-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6489aee34134c7b6600131331fdd2555ed734043598680d133e649d3982c898c
|
|
| MD5 |
b3364d7361864a52cbc0efef53cd3f72
|
|
| BLAKE2b-256 |
ddd79f06829ca834a2f0777ee880766ee11c26f1872e5cac974028c54cb832cb
|