Open Standard · Apache 2.0 · v0.9.0

Cryptographic proof for
every AI Governance action

AIGP is an open specification for structured, tamper-evident events that prove what policies, prompts, tools, and data governed your AI agents — every single time.

AI agents are everywhere.
Audit trails aren't.

Agents access company data, make decisions, and interact with customers. Regulators, auditors, and security teams all need to answer the same question:

"Prove your AI agents used the approved prompts, tools, and policies — every single time."

No common format

Every team invents its own audit log. Grep through unstructured logs, build custom tables, or don't track it at all.

No tamper evidence

Logs can be edited after the fact. There's no cryptographic proof that the content delivered was what was approved.

No traceability

Which agent, which prompt version, which policy, what happened? Reconstructing the chain requires joining across five systems.

One JSON event. Cryptographic proof.

An AIGP event is a single flat JSON record that captures proof of one governance action. Any system can produce them.

aigp-event.json
{
  "event_id":          "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "event_type":        "GOVERNANCE_PROOF",
  "event_category":    "governance",
  "event_time":        "2025-01-15T14:30:00.123Z",
  "agent_id":          "agent.trading-bot-v2",
  "trace_id":          "550e8400-e29b-41d4-a716-446655440000",
  "data_classification": "confidential",

  // Cryptographic proof — Merkle root of all governed resources
  "governance_hash":   "a3f2b8c1d4e5...9012345678abcdef",
  "hash_type":         "merkle-sha256",

  // Resources — governed, hashed, Merkle tree leaves
  // 7 standard types: policy, prompt, tool, context, memory, model, lineage
  "resources": [
    { "resource_type": "policy",   "resource_name": "policy.trading-limits",
      "hash": "a3f2b8c1...",  "hash_mode": "content" },
    { "resource_type": "prompt",   "resource_name": "prompt.risk-analysis-v7",
      "hash": "d4e5f678...",  "hash_mode": "content" },
    { "resource_type": "tool",     "resource_name": "tool.position-checker",
      "hash": "b7c8d9e0...",  "hash_mode": "pointer",
      "pointer_uri": "s3://aigp-gov/sha256:b7c8d9e0..." },
    { "resource_type": "model",    "resource_name": "model.gpt4-trading-v2",
      "hash": "e1f2a3b4...",  "hash_mode": "content" },
    { "resource_type": "lineage",  "resource_name": "lineage.market-data-feed",
      "hash": "c5d6e7f8...",  "hash_mode": "content" },

    // AI Agent-specific: what the agent remembers and its runtime context
    { "resource_type": "context",  "resource_name": "context.session-42",
      "hash": "f9a0b1c2...",  "hash_mode": "content" },
    { "resource_type": "memory",   "resource_name": "memory.conversation-history",
      "hash": "d3e4f5a6...",  "hash_mode": "pointer",
      "pointer_uri": "s3://aigp-gov/sha256:d3e4f5a6..." }
  ],

  // Annotations — informational, NOT hashed, NOT in the Merkle tree
  "annotations": {
    "regulatory_framework": "SEC Rule 15c3-5",
    "risk_tier":            "high",
    "review_required":      true
  },
  "spec_version":      "0.8.0"
}

Built for the real world

01

Open & protocol-agnostic

Works with A2A, MCP, REST, gRPC, or anything else. The format doesn't assume a transport.

02

Tamper-evident by default

Every event includes a SHA-256 governance_hash. If content changes, the hash won't match.

03

Traceable end-to-end

Every event carries a trace_id. One query reconstructs the full governance chain.

04

Flat & queryable

Single wide event table — no joins for governance queries. Designed for OLAP stores.

05

Forward-compatible

Resources (governed, hashed) and Annotations (informational). Open types — extend without a spec change.

06

Cryptographically signed

JWS ES256 event signing for non-repudiation. Causal ordering with sequence numbers and DAG references.

Merkle trees meet governance proof

AIGP doesn't just log what happened — it produces cryptographic evidence that nothing was altered after the fact.

Root Hash H(Governance) H(Agent State) H(Policy+Prompt) H(Tool+Model) H(Lineage+Ctx) H(Memory) policy a3f2b8c1... prompt d4e5f678... tool b7c8d9e0... model e1f2a3b4... lineage c5d6e7f8... context f9a0b1c2... memory d3e4f5a6... AI Agent-specific governance_hash

Merkle tree hashing

Each governed resource — policy, prompt, tool definition, agent config — is hashed individually. Parent hashes combine children. The root becomes the governance_hash on every AIGP event.

JWS event signing

Every event is signed with ES256 (ECDSA P-256) via JWS Compact Serialization. The signer's key is embedded in the event — consumers verify independently.

Causal DAG ordering

Monotonic sequence_number per agent and causality_ref pointers create a directed acyclic graph — no event can be inserted or reordered without breaking the chain.

Tamper detection

Change one byte of a governed policy and the Merkle root changes. The governance_hash in the audit trail won't match — evidence of tampering is immediate and undeniable.

Three standards. Three concerns. One trace_id.

AIGP composes with OpenTelemetry and OpenLineage — they don't compete.

AIGP

AI Governance

Cryptographic proof, enforcement decisions, audit trail, compliance evidence

AI Governance Store

OpenTelemetry

Observability

Agent latency, error rates, trace topology, distributed context propagation

Observability Backend

OpenLineage

Data Lineage

What data flowed where, governed by what, Merkle tree facets, lineage snapshots

Lineage Backend
trace_id: "550e8400-e29b-41d4-a716-446655440000"

31 standard events across 15 categories

Implementations may extend these using the same RESOURCE_ACTION naming convention.

Policy Injection

INJECT_SUCCESS INJECT_DENIED

Prompt Usage

PROMPT_USED PROMPT_DENIED

Agent Lifecycle

AGENT_REGISTERED AGENT_APPROVED AGENT_DEACTIVATED

Inference

INFERENCE_STARTED INFERENCE_COMPLETED INFERENCE_BLOCKED

Memory

MEMORY_READ MEMORY_WRITTEN

Tool

TOOL_INVOKED TOOL_DENIED

Human-in-the-Loop

HUMAN_OVERRIDE HUMAN_APPROVAL

Boundary

UNVERIFIED_BOUNDARY

Model

MODEL_LOADED MODEL_SWITCHED

Policy Lifecycle

POLICY_CREATED POLICY_VERSION_APPROVED POLICY_ARCHIVED

Governance Proof

GOVERNANCE_PROOF POLICY_VIOLATION

More

A2A_CALL CONTEXT_CAPTURED LINEAGE_SNAPSHOT CLASSIFICATION_CHANGED

Built for regulated industries

$

Financial Services

Prove trading agents accessed approved limits. MNPI controls enforced.

SEC · FINRA · MiFID II
+

Healthcare

Audit patient-facing agents for HIPAA-compliant consent and PHI access controls.

HIPAA · HITECH · FDA
§

Legal

Track which contract agents used which prompt versions and privilege rules.

ABA Model Rules · GDPR Art. 22

Enterprise AI

Single audit trail across all AI agents for your CISO and compliance team.

SOC 2 · ISO 27001 · NIST AI RMF

v0.8.0 — Production Readiness

Event Signing

JWS Compact Serialization (RFC 7515) with ES256 for cryptographic non-repudiation and key rotation.

Causal Ordering

Monotonic sequence_number per agent and causality_ref DAG for cross-agent event dependencies.

Dark Node Boundary

UNVERIFIED_BOUNDARY event makes trust boundaries explicit when agents interact with ungoverned systems.

Pointer Pattern

Govern large or external content by hashing a URI pointer instead of the full payload.

Five lines to your first governance event

quickstart.py
from aigp_otel import AIGPInstrumentor

instrumentor = AIGPInstrumentor(
    agent_id="agent.trading-bot-v2",
    org_id="org.finco",
    event_callback=send_to_store,
)

event = instrumentor.inject_success(
    policy_name="policy.trading-limits",
    policy_version=4,
    content="Max position: $10M...",
    data_classification="confidential",
)
# -> AIGP event sent to governance store
# -> OTel span event with aigp.* attributes

AI Governance is too important to be owned by any single company

AIGP is shared under Apache 2.0. The right format will emerge from real-world use across different industries and regulatory regimes.