{"slug": "how-to-generate-cryptographic-proof-of-ai-agent-authorization-eu-ai-act-article", "title": "How to Generate Cryptographic Proof of AI Agent Authorization (EU AI Act Article 14)", "summary": "Verigate, a cryptographic trust infrastructure for AI agents, generates tamper-evident authorization receipts using Ed25519 signatures and Merkle trees to comply with EU AI Act Article 14. The system produces deterministic policy decisions, chains receipts for auditability, and anchors Merkle roots on Base mainnet for immutable timestamps. This enables offline verification of human oversight without relying on modifiable logs or vendor-dependent traces.", "body_md": "EU AI Act Article 14 enforcement starts **August 2, 2026**. If you're building AI agents that access sensitive data, process customer information, or make autonomous decisions — you need to demonstrate **human oversight with verifiable artifacts**.\n\nNot logs. Not observability traces. **Cryptographic proof.**\n\nIn this post, I'll show you how we built [Verigate](https://verigate.cloud) — a cryptographic trust infrastructure for AI agents — and how you can use it to generate tamper-evident authorization receipts that any auditor can verify offline.\n\n*This content was created for the Build with Gemini XPRIZE.*\n\nEvery AI agent platform today — LangChain, CrewAI, Google ADK, Zapier AI — lets agents take actions. But none of them produce **independently verifiable proof** that the action was authorized according to policy.\n\nWhen your agent:\n\n...what evidence exists that this action was authorized? A database log? That can be modified. An observability trace? That's vendor-dependent. A timestamp? That proves when, not whether.\n\nArticle 14 of the EU AI Act requires deployers to demonstrate five capabilities:\n\nThat fifth requirement is where most teams fail. You need artifacts that are:\n\nHere's how Verigate solves this:\n\nWhen an agent requests authorization, the gateway evaluates policy rules (allowlist, resource scope, rate limit) and produces an **Ed25519-signed receipt**:\n\n```\n{\n  \"body\": {\n    \"v\": \"1\",\n    \"seq\": \"42\",\n    \"ts\": \"2026-06-26T10:30:00Z\",\n    \"request_digest\": \"sha256:0e6d5b86f01f...\",\n    \"policy_version\": \"sha256:d59a1e4171e6...\",\n    \"decision\": \"approve\",\n    \"reasons\": [],\n    \"prev_receipt\": \"sha256:b3f51c8824bc...\"\n  },\n  \"sig\": {\n    \"alg\": \"EdDSA\",\n    \"kid\": \"gateway-prod-a1b2c3d4\",\n    \"value\": \"7WiFneT3tLRtE2Iztm...\"\n  },\n  \"receipt_hash\": \"sha256:2a3e65a3ade468...\"\n}\n```\n\nKey properties:\n\nEach receipt's `prev_receipt`\n\nfield contains the SHA-256 hash of the previous receipt. This creates a tamper-evident chain:\n\n```\nReceipt #1 (genesis) → prev: sha256:0000...0000\nReceipt #2 → prev: sha256(Receipt #1)\nReceipt #3 → prev: sha256(Receipt #2)\n...\n```\n\nModify any receipt in the chain, and every subsequent `prev_receipt`\n\nhash becomes invalid. Insert or delete a receipt, and the sequence numbers break.\n\nReceipt hashes are organized into a Merkle tree using domain-separated hashing:\n\n```\nLeaf:  SHA256(\"BI_RECEIPT_LEAF_V1\" || 0x00 || receipt_hash)\nNode:  SHA256(\"BI_RECEIPT_NODE_V1\" || 0x00 || left || right)\n```\n\nThis lets you prove a specific receipt is included in a batch without downloading all receipts. The `/v1/engine/merkle/proof`\n\nendpoint returns the sibling hashes and directions.\n\nFor regulated industries, the Merkle root can be anchored on **Base mainnet** (chain ID 8453) as transaction calldata:\n\n```\nAnchor TX → burn address (0x000...000)\nValue: 0\nCalldata: 32-byte Merkle root\n```\n\nThis creates an immutable timestamp proving the receipt chain existed at a specific block height. Verifiable on [BaseScan](https://basescan.org) by anyone, forever.\n\nHere's what makes this architecture unique: **the authorization decision is fully deterministic**. No AI model can influence whether an action is allowed or denied. The policy engine evaluates three rule types:\n\nAll three must pass. Any failure → deny.\n\nGemini (via Vertex AI) powers six AI agents that sit *outside* the authorization path:\n\nThe security boundary is explicit: AI advises, the gateway decides.\n\n``` python\nfrom sdk import Verigate\n\n# Provision a tenant (or use an existing API key)\nvg = Verigate(api_key=\"as_...\")\n\n# Register your agent\nvg.register_agent(\"my-bot\", name=\"My Bot\", capabilities=[\"read\", \"query\"])\n\n# Authorize an action\nresult = vg.authorize(\"my-bot\", action=\"read\", resource=\"/data/users\")\nprint(f\"Decision: {result.decision}\")\nprint(f\"Receipt: {result.receipt_hash}\")\n\n# Verify the chain\nchain = vg.verify_chain()\nprint(f\"Chain valid: {chain['valid']}\")\nreport = vg.generate_compliance_report(\n    agent_name=\"my-bot\",\n    agent_description=\"Reads customer profiles from staging database\",\n    capabilities=[\"read\", \"query\"],\n    data_types=[\"PII\", \"customer_records\"],\n    frameworks=[\"EU AI Act\", \"HIPAA\", \"SOC 2\"],\n)\nprint(f\"Findings: {len(report.findings)}\")\n# Download PDF: GET /v1/compliance/report/{report.report_id}/pdf\n{\n  \"mcpServers\": {\n    \"verigate\": {\n      \"command\": \"python\",\n      \"args\": [\"/path/to/mcp_server.py\"],\n      \"env\": { \"VERIGATE_API_KEY\": \"as_...\" }\n    }\n  }\n}\n```\n\n56 tools available — authorize, verify, register agents/resources/actions, generate compliance reports, chat with the multi-agent system.\n\nNot ready to commit? Try the [free compliance quick-scan](https://verigate.cloud/v1/compliance/quick-scan) — describe your agent and get 3 EU AI Act findings in 30 seconds. No signup required.\n\nFull report with all 6 frameworks (EU AI Act, HIPAA, SOC 2, DORA, NIST AI RMF, OWASP LLM Top 10): [$299 one-time](https://verigate.cloud/eu-ai-act).\n\nBuilt with Google Gemini 2.5 (Vertex AI), Google ADK 2.1, Cloud Run, and Firestore.", "url": "https://wpnews.pro/news/how-to-generate-cryptographic-proof-of-ai-agent-authorization-eu-ai-act-article", "canonical_source": "https://dev.to/heartlinmachado/how-to-generate-cryptographic-proof-of-ai-agent-authorization-eu-ai-act-article-14-50g8", "published_at": "2026-06-27 04:16:58+00:00", "updated_at": "2026-06-27 05:04:10.260027+00:00", "lang": "en", "topics": ["ai-policy", "ai-safety", "ai-agents"], "entities": ["Verigate", "EU AI Act", "Base", "Gemini", "Vertex AI", "LangChain", "CrewAI", "Google ADK"], "alternates": {"html": "https://wpnews.pro/news/how-to-generate-cryptographic-proof-of-ai-agent-authorization-eu-ai-act-article", "markdown": "https://wpnews.pro/news/how-to-generate-cryptographic-proof-of-ai-agent-authorization-eu-ai-act-article.md", "text": "https://wpnews.pro/news/how-to-generate-cryptographic-proof-of-ai-agent-authorization-eu-ai-act-article.txt", "jsonld": "https://wpnews.pro/news/how-to-generate-cryptographic-proof-of-ai-agent-authorization-eu-ai-act-article.jsonld"}}