<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Agents' Codex</title><link>https://agentscodex.com/tags/agent-governance/</link><description>Practical, no-hype insights on AI agents — cost optimization, multi-agent architecture, and real-world operations.</description><generator>Hugo -- 0.163.3</generator><language>en-us</language><lastBuildDate>Fri, 26 Jun 2026 18:40:54 -0300</lastBuildDate><atom:link href="https://agentscodex.com/tags/agent-governance/index.xml" rel="self" type="application/rss+xml"/><item><title>Cryptographic Audit Trails: Verifiable Action Logs for AI Agents</title><link>https://agentscodex.com/posts/2026-06-26-cryptographic-audit-trails-verifiable-action-logs-ai-agents/</link><pubDate>Fri, 26 Jun 2026 06:00:00 -0300</pubDate><author>Agents' Codex</author><guid>https://agentscodex.com/posts/2026-06-26-cryptographic-audit-trails-verifiable-action-logs-ai-agents/</guid><category>agentaudittrail</category><category>cryptographiclogging</category><category>agentgovernance</category><category>tamperevidentlogs</category><description>How to build cryptographically signed, hash-chained audit trails for verifiable AI agent action logs: essential before the EU AI Act enforcement deadline.</description><content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul>
<li>EU AI Act Article 12 enforcement hits August 2, 2026: penalties up to €15 million or 3% of global turnover for high-risk systems without tamper-evident event logs [1].</li>
<li>A hash-chained receipt with ML-DSA-65 post-quantum signatures makes every agent action independently verifiable, even against an adversarial operator who controls the runtime.</li>
<li>Three enforcement tiers let you match cryptographic rigor to your actual threat model: Strong (non-bypassable proxy), Bounded (gate + close), and Detectable (post-hoc).</li>
</ul>
<p>On August 2, 2026, EU AI Act Article 12 becomes enforceable. High-risk AI systems must maintain tamper-evident event logs, or face penalties up to €15 million [1]. A 2026 survey found 68% of organizations cannot distinguish AI agent actions from human actions; 33% lack evidence-quality audit trails [8]. Standard logs are mutable, self-attested, and blind to agent identity. Standard logging is theater for compliance auditors. A hash-chained cryptographic audit trail is not, and it holds up even when the operator is the threat.</p>
<h2 id="what-article-12-actually-requires-and-what-it-doesnt">What Article 12 Actually Requires (and What It Doesn&rsquo;t)</h2>
<p>Article 12(1) requires high-risk AI systems to &ldquo;technically allow for the automatic recording of events (logs) over the lifetime of the system&rdquo; [1]. Article 12(2): logs must identify risk situations, facilitate post-market monitoring, and enable operator monitoring [1].</p>
<p>Article 12(3) mandates minimum fields: period of use, reference database, matching input data, and identification of natural persons in verification [1]. Article 19 sets a 6-month retention floor, extendable to 5+ years for financial services [2], [9].</p>
<div class="alert alert-alert">
  <p class="alert-heading">ALERT</p>
  <p>The EU Digital Omnibus proposal may extend the deadline to December 2027. As of June 2026, this is under negotiation, not law. Plan for August 2, 2026. Penalties: €15 million or 3% (high-risk) [1] vs €35 million or 7% (prohibited practices) [4].</p>
</div><p>The common misinterpretation: conflating &ldquo;keep logs&rdquo; with &ldquo;produce tamper-evident records.&rdquo; A JSON log file in CloudWatch can be deleted or edited by anyone with IAM write access. DeepInspect frames the distinction clearly: every decision must produce a signed, tamper-evident audit record committed before the model response returns [2].</p>
<table>
	<thead>
			<tr>
					<th>Article 12 Requirement</th>
					<th>What Standard Logging Provides</th>
					<th>What an Audit Trail Must Do</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Automatic recording</td>
					<td>Application-level logging (opt-in)</td>
					<td>Middleware-enforced, non-bypassable capture</td>
			</tr>
			<tr>
					<td>Event traceability</td>
					<td>Mutable timestamps, no linkage</td>
					<td>Hash-chained sequence with cryptographic proof</td>
			</tr>
			<tr>
					<td>Tamper evidence</td>
					<td>None (log files editable/deletable)</td>
					<td>Chain integrity verification detects any modification</td>
			</tr>
			<tr>
					<td>Personnel identification</td>
					<td>Shared service account (ambiguous)</td>
					<td>Per-agent cryptographic identity + token attribution</td>
			</tr>
			<tr>
					<td>Retention (6+ months to 5+ years)</td>
					<td>Log rotation deletes data on schedule</td>
					<td>WORM storage with compliance-mode immutability</td>
			</tr>
	</tbody>
</table>
<h2 id="the-industry-evidence-gap-97-expect-an-incident-3-are-ready">The Industry Evidence Gap: 97% Expect an Incident, 3% Are Ready</h2>
<p>A 2026 CSA/RSAC survey of 900+ security leaders found 68% cannot distinguish AI agent actions from human actions [8]. Thirty-three percent lack evidence-quality audit trails. Sixty-one percent run fragmented infrastructure that cannot produce forensic evidence.</p>
<p>The incident data is worse. Eighty-eight percent report confirmed or suspected AI agent incidents. Ninety-seven percent expect a major incident within 12 months. Only 3% have automated controls at machine speed [8]. When the incident happens, the team without an audit trail cannot answer which agent did what, under whose authorization, and whether the outcome was within policy bounds.</p>
<div class="key-takeaway">
  <span class="key-takeaway-label">Key Takeaway</span>
  The compliance deadline gives you a date. The incident statistics give you a reason. Both point to the same architectural requirement: a verifiable chain of evidence connecting every agent action to its authorization context.
</div>

<h2 id="the-hash-chain-receipt-a-cryptographic-audit-trail-for-every-action">The Hash-Chain Receipt: A Cryptographic Audit Trail for Every Action</h2>
<p>The agentpatterns.ai Cryptographic Governance Audit Trail defines a three-phase middleware design [3]. Phase 1: Policy Validation checks allowed tools, rate limits, and data access rules. Phase 2: Tool Execution runs the call unmodified. Phase 3: Receipt Signing signs the action record with ML-DSA-65 and appends it to the hash chain.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># Asqav decorator pattern: three-phase middleware</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> asqav
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">@asqav.sign</span>(policy_id<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;prod-agent-v2&#34;</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">async</span> <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">call_financial_api</span>(payload):
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># Phase 1-2: policy validates, tool executes unchanged</span>
</span></span><span style="display:flex;"><span>    result <span style="color:#f92672">=</span> <span style="color:#66d9ef">await</span> api_client<span style="color:#f92672">.</span>execute(payload)
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># Phase 3: receipt is auto-signed and hash-chained</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> result
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> asqav<span style="color:#f92672">.</span>session(agent_id<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;payment-agent-01&#34;</span>):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">await</span> call_financial_api({<span style="color:#e6db74">&#34;amount&#34;</span>: <span style="color:#ae81ff">1500</span>})
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">await</span> call_financial_api({<span style="color:#e6db74">&#34;amount&#34;</span>: <span style="color:#ae81ff">2300</span>})
</span></span></code></pre></div><p>Each receipt carries: signature_id, agent_id, action, algorithm (ML-DSA-65), timestamp, chain_hash (SHA-256 of previous receipt), and prev_hash [3], [7]. Modify any entry and chain verification fails. Three enforcement tiers exist [3]:</p>
<table>
	<thead>
			<tr>
					<th>Enforcement Tier</th>
					<th>Mechanism</th>
					<th>When to Use</th>
					<th>Attack Resistance</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Strong</td>
					<td>Non-bypassable MCP proxy signs before and after each call</td>
					<td>High-risk agents (finance, healthcare, legal)</td>
					<td>Prevents execution without a signed bilateral receipt</td>
			</tr>
			<tr>
					<td>Bounded</td>
					<td>Pre-execution gate (gate_action) + post-execution close (complete_action)</td>
					<td>Performance-sensitive workflows, batch processing</td>
					<td>Approval is cryptographically linked to outcome; omission detectable</td>
			</tr>
			<tr>
					<td>Detectable</td>
					<td>Post-hoc signing with chain verification</td>
					<td>Legacy systems, incremental rollout, low-risk automation</td>
					<td>Tampering or omission is detected on verification, not prevented</td>
			</tr>
	</tbody>
</table>
<p>A payment agent needs Strong-tier. A notification agent can work with Detectable-tier during rollout. Tier upgrades are backward-compatible: because the receipt schema remains identical across all three tiers, you can raise enforcement level incrementally without rewriting any existing parsers or consumers that already process your audit stream.</p>
<h3 id="why-ml-dsa-65-and-not-ecdsa">Why ML-DSA-65 and Not ECDSA?</h3>
<p>ML-DSA-65 (FIPS 204) targets AES-192 equivalent security [3], [7]. Audit trails retained 5+ years outlast pre-quantum cryptography. Given that AI systems deployed today will still process regulated data in 2030 and beyond, choosing cryptographic primitives with a longer security horizon is a planning decision, not a theoretical one. Pragmatic path: ECDSA now (IETF AAT baseline [5]), ML-DSA-65 when retention exceeds 5 years [7].</p>
<h2 id="agent-decision-record-schema-what-goes-in-the-receipt">Agent Decision Record Schema: What Goes in the Receipt</h2>
<p>The mandatory fields form a minimal forensic record: agent identity, policy ID, authorization token identifier (JWT jti claim), action type (IETF AAT classification), input/output hashes (SHA-256), timestamp, and chain linkage [3], [5], [12]. Missing any of these, the auditor cannot reconstruct who did what under what authority.</p>
<table>
	<thead>
			<tr>
					<th>Field</th>
					<th>Category</th>
					<th>Purpose</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>signature_id</td>
					<td>Mandatory</td>
					<td>Unique per-action identifier for verification URL lookup</td>
			</tr>
			<tr>
					<td>agent_id</td>
					<td>Mandatory</td>
					<td>Cryptographic identity of the acting agent instance</td>
			</tr>
			<tr>
					<td>policy_id</td>
					<td>Mandatory</td>
					<td>Active governance policy version at execution time</td>
			</tr>
			<tr>
					<td>auth_token_id</td>
					<td>Mandatory</td>
					<td>JWT/OAuth token jti claim: links to identity assertion</td>
			</tr>
			<tr>
					<td>action_type</td>
					<td>Mandatory</td>
					<td>IETF AAT classification: tool_call, tool_response, decision, delegation, escalation, error, lifecycle</td>
			</tr>
			<tr>
					<td>input_hash</td>
					<td>Mandatory</td>
					<td>SHA-256 of action input: enables replay verification</td>
			</tr>
			<tr>
					<td>chain_hash</td>
					<td>Mandatory</td>
					<td>SHA-256 of previous receipt: the tamper-evident link</td>
			</tr>
			<tr>
					<td>prompt_fingerprint</td>
					<td>Optional</td>
					<td>Hash of system prompt, model version, and tool set</td>
			</tr>
			<tr>
					<td>data_classification</td>
					<td>Optional</td>
					<td>Sensitivity level of data accessed during execution</td>
			</tr>
			<tr>
					<td>human_reviewer_id</td>
					<td>Optional</td>
					<td>Identity of approving human when HITL is active</td>
			</tr>
	</tbody>
</table>
<p>The IETF AAT draft defines seven action classifications: tool_call, tool_response, decision, delegation, escalation, error, and lifecycle [5]. Adopting these early ensures interoperability with any tooling implementing the emerging standard.</p>
<p>PII redaction requires upfront design. Three strategies: hashed-with-salt for deduplication, mask-in-place for structural context, and vault-reference for separate access control [12]. GDPR Article 17 right-to-erasure interacts with Article 19 retention minimums — design the redaction layer before your first audit.</p>
<h2 id="immutable-storage-s3-object-lock-and-worm-patterns-that-survive-root-compromise">Immutable Storage: S3 Object Lock and WORM Patterns That Survive Root Compromise</h2>
<p>A signed hash chain proves tamper-evidence within records. But if an attacker deletes the entire chain, evidence is gone. AWS S3 Object Lock provides WORM (write-once-read-many) storage. Compliance mode prevents any user, including the root account, from overwriting or deleting object versions during the retention period [13].</p>
<p>Cohasset Associates assessed S3 Object Lock for SEC 17a-4, CFTC, and FINRA compliance [13]. Object Lock must be enabled at bucket creation with versioning; once on, it cannot be disabled.</p>
<table>
	<thead>
			<tr>
					<th>Storage Tier</th>
					<th>Retention Window</th>
					<th>Mutability</th>
					<th>Query Latency</th>
					<th>Purpose</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Hot: INSERT-only DB</td>
					<td>0–30 days</td>
					<td>Append-only (role-gated, no UPDATE or DELETE grants)</td>
					<td>Sub-second</td>
					<td>Real-time agent decision audit, on-call investigation</td>
			</tr>
			<tr>
					<td>Warm: S3 Standard (versioned)</td>
					<td>30–90 days</td>
					<td>Versioned, not locked (overwrite creates new version)</td>
					<td>Seconds to minutes</td>
					<td>Forensic queries, SIEM ingestion, trend analysis</td>
			</tr>
			<tr>
					<td>Cold: S3 Object Lock (compliance mode)</td>
					<td>90 days to 7+ years</td>
					<td>WORM: no overwrite, no delete, even by root</td>
					<td>Minutes to hours</td>
					<td>Regulatory retention, external audit, legal hold</td>
			</tr>
	</tbody>
</table>
<p>The Digital Applied framework recommends this three-tier pattern: hot for daily engineering queries, warm for security investigations, cold for regulators years later [12]. Run periodic chain verification. A broken chain discovered at audit time is an incident. A broken chain discovered by monitoring is a ticket.</p>
<div class="alert alert-alert">
  <p class="alert-heading">ALERT</p>
  <p>Legal hold is independent of the retention period. Apply legal hold to any object version and WORM protection extends indefinitely; the object cannot be deleted or overwritten until the hold is explicitly removed. When an agent incident triggers litigation, you can lock the relevant audit segment without locking your entire cold tier.</p>
</div><h2 id="identity-every-agent-instance-gets-its-own-cryptographic-identity">Identity: Every Agent Instance Gets Its Own Cryptographic Identity</h2>
<p>Most production agent deployments use shared service accounts. One IAM role shared across dozens of agent instances. Every audit log entry says &ldquo;payment-service executed transfer&rdquo; — not which agent, under which policy, with which token. Vector Labs identifies this as the root cause of unintelligible audit trails [10].</p>
<p>Each agent instance needs its own cryptographic identity in a non-human identity (NHI) framework [10]. Short-lived JWT or OAuth 2.0 tokens — expiry in minutes, not days — bound to specific roles in a central registry. A 5–15 minute token limits blast radius. The token&rsquo;s azp/appid field carries the agent identity into every downstream log.</p>
<p>Enterprise identity platforms support this through workload identity primitives. Microsoft&rsquo;s Agent Governance Toolkit demonstrates the pattern: the agent-governance-python repo assigns per-agent identities tracked through the hash-chain audit log, with the AgentBehaviorMonitor quarantining agents exceeding behavioral thresholds [11].</p>
<p>ABAC enables task-scoped tokens. A read-only agent receives a token lacking write permissions; transitioning to writing requires a new bounded token. Per-agent behavior baselining detects deviations — a payment agent calling a user-deletion API is a compromise. The identity layer enables automatic revocation.</p>
<h2 id="when-the-operator-is-the-threat-openkedge-and-intent-to-execution-evidence-chains">When the Operator Is the Threat: OpenKedge and Intent-to-Execution Evidence Chains</h2>
<p>The hash-chain assumes trusted middleware. But if the operator deploying the runtime is the adversary, a compromised runtime can suppress actions and signatures simultaneously.</p>
<p>OpenKedge (arXiv:2604.08601) addresses this with Intent-to-Execution Evidence Chains (IEEC) [6]. Agents submit Declarative Intent Proposals evaluated against system state, temporal signals, and policy constraints before any API call executes. Approved intents compile into Execution Contracts — bounded, ephemeral identities that expire if boundaries are exceeded.</p>
<p>The IEEC links five elements: intent proposal, contextual state, policy decision, execution bounds, and actual outcome [6]. Unlike passive logs, the IEEC creates a deterministically reconstructable lineage.</p>
<p>Evaluated in multi-agent conflicts and cloud infrastructure mutations, the protocol demonstrates deterministic arbitration of competing intents while caging unsafe execution [6]. Separating intent from execution contract from evidence chain means no single compromised component can forge the complete trail.</p>
<pre class="mermaid">flowchart LR
  A[Intent Proposal] --> B[Contextual State] --> C[Policy Decision] --> D[Execution Bounds] --> E[Actual Outcome]
  B --> F[Hash Link]
  C --> G[Hash Link]
  D --> H[Hash Link]
  E --> I[Hash Link]</pre><h2 id="owasp-agentic-top-10-audit-trails-as-cross-cutting-control">OWASP Agentic Top 10: Audit Trails as Cross-Cutting Control</h2>
<p>The OWASP Top 10 for Agentic Applications elevates audit trails to a cross-cutting control. Microsoft&rsquo;s Agent Governance Toolkit (AGT) provides the reference architecture [11].</p>
<p>The AGT middleware produces a hash-chain log where each entry contains the SHA-256 of the previous entry. Its AgentBehaviorMonitor tracks tool call rate, failure rate, and privilege escalation, quarantining agents that exceed thresholds [11].</p>
<p>Audit trails mitigate: ASI02 (Tool Misuse) via parameter recording; ASI03 (Privilege Abuse) via identity-policy linkage; ASI09 (Trust Exploitation) via forensic replay; ASI10 (Rogue Agents) via behavioral baselining and quarantine [11]. OWASP minimum fields map onto the receipt schema described earlier.</p>
<p>An audit trail built solely for compliance is undersold. The same hash chain that satisfies an auditor also powers security automation: drift detection, privilege escalation alerts, and quarantine triggers. Build it once, use it for both objectives.</p>
<h2 id="production-patterns-from-sdk-to-deployment">Production Patterns: From SDK to Deployment</h2>
<p>Integration: 3–5 days for a single-team agent [12]. Cost: ~50ms per-call for ML-DSA-65 in Strong-tier [3]. Under 10 calls per interaction, negligible. High-frequency agents: Detectable tier, batch-sign.</p>
<p>Asqav SDK (MIT license) provides ML-DSA-65 signing with decorator-pattern integration across LangChain, CrewAI, LiteLLM, Haystack, and OpenAI Agents SDK [7]. Each receipt includes a verification URL auditors query directly. The session API groups multi-step workflows into ordered chains [7].</p>
<p>Microsoft AGT uses policy YAML, governance middleware, and hash-chain audit logs [11]. The agent-governance-python repo includes blocked-pattern detection via regex on inbound messages before they reach the LLM.</p>
<pre class="mermaid">flowchart LR
  A[Agent SDK] --> B[Asqav/AGT Middleware]
  B --> C[Receipt Signed]
  C --> D[Hash-Chain Append]
  D --> E[WORM Storage]
  B --> F[Verification URL]
  C --> F</pre><table>
	<thead>
			<tr>
					<th>Implementation</th>
					<th>Approach</th>
					<th>Signature Algorithm</th>
					<th>Key Strength</th>
					<th>License</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Asqav SDK</td>
					<td>Decorator-pattern middleware, five framework integrations</td>
					<td>ML-DSA-65 (FIPS 204)</td>
					<td>Drop-in, verification URLs, EU AI Act alignment</td>
					<td>MIT</td>
			</tr>
			<tr>
					<td>Microsoft AGT</td>
					<td>Policy YAML + governance middleware + hash-chain log</td>
					<td>SHA-256 chaining</td>
					<td>OWASP-aligned reference architecture, quarantine</td>
					<td>Open source (GitHub)</td>
			</tr>
			<tr>
					<td>DeepInspect</td>
					<td>External stateless proxy at AI request boundary</td>
					<td>Proprietary (tamper-evident record)</td>
					<td>Model-agnostic, pre-response commit guarantee</td>
					<td>Closed source</td>
			</tr>
			<tr>
					<td>OpenKedge</td>
					<td>Intent-to-Execution Evidence Chain, ephemeral identities</td>
					<td>Cryptographic IEEC linkage</td>
					<td>Survives adversarial-operator scenario, deterministic arbitration</td>
					<td>Research protocol (paper)</td>
			</tr>
	</tbody>
</table>
<h2 id="ietf-standards-for-agent-audit-trails-aat-scitt-and-jsonl">IETF Standards for Agent Audit Trails: AAT, SCITT, and JSONL</h2>
<p>Building to emerging standards means audit trail interoperability without proprietary exporters. Three IETF efforts shape this space.</p>
<p>The Agent Audit Trail (AAT) draft (draft-sharif-agent-audit-trail-00) specifies a JSON-based record format with mandatory fields for agent identity, action classification, outcome tracking, and trust level [5]. Records use tamper-evident SHA-256 hash chaining per RFC 8785, with optional ECDSA signatures.</p>
<p>The IETF SCITT working group defines how statements register with a Transparency Service issuing receipts as cryptographic proof [3]. The agentpatterns.ai architecture explicitly aligns with SCITT for compliance interoperability.</p>
<p>JSONL (one object per line with chain_hash) is the recommended export format. It is human-readable, SIEM-ingestible. Syslog RFC 5424 and CSV also preserve chain integrity.</p>
<h2 id="practical-takeaways">Practical Takeaways</h2>
<ol>
<li>Start with the hash chain, not the storage tier. SHA-256 chained receipts come first. Add ML-DSA-65 signatures, WORM storage, and OpenKedge-style evidence chains incrementally as your threat model evolves.</li>
<li>Audit your agent identity architecture now. Shared service accounts destroy audit trail value. You need per-instance cryptographic identities with short-lived tokens before your logging layer can produce auditable records.</li>
<li>Run chain verification continuously. A broken hash chain caught by monitoring is a ticket. Caught by an auditor is an incident.</li>
</ol>
<h2 id="conclusion">Conclusion</h2>
<p>The gap between logging and audit trails has a deadline, but the real shift is not regulatory. IETF AAT standardization means audit trail portability between platforms will determine which frameworks survive enterprise procurement. Teams adopting the AAT schema and SHA-256 chaining now keep their records readable when frameworks change. Start with a hash chain and per-agent identity. Watch what happens when SCITT transparency services mature: enterprises will require cryptographic proof of compliance from AI vendors before signing contracts. The audit trail you build for Article 12 becomes a competitive advantage in procurement decisions.</p>
<h2 id="frequently-asked-questions">Frequently Asked Questions</h2>
<h3 id="do-i-need-post-quantum-signatures-ml-dsa-65-immediately-or-can-i-start-with-ecdsa">Do I need post-quantum signatures (ML-DSA-65) immediately, or can I start with ECDSA?</h3>
<p>Start with ECDSA. The IETF AAT draft uses it as baseline [5]. Switch to ML-DSA-65 when retention exceeds 5 years. Asqav SDK supports both [7]. Financial services with mandatory 5+ year retention should plan for ML-DSA-65 from the start.</p>
<h3 id="how-do-i-handle-audit-trails-for-agents-calling-other-agents">How do I handle audit trails for agents calling other agents?</h3>
<p>Each agent signs its own receipt with prev_hash pointing to the caller&rsquo;s receipt. An auditor follows the chain across agent boundaries.</p>
<h3 id="what-is-the-performance-impact-of-signing-every-action">What is the performance impact of signing every action?</h3>
<p>Approximately 50ms per-call in Strong-tier [3]. For agents making under 10 tool calls per interaction, negligible. For high-frequency agents, drop to Detectable tier. See the enforcement tier table above.</p>
<h3 id="can-i-implement-this-without-python-or-langchain">Can I implement this without Python or LangChain?</h3>
<p>Yes. The middleware pattern is language-agnostic: implement as API gateway plugin, sidecar proxy, or policy enforcement point. DeepInspect demonstrates model-agnostic deployments [2]. The IETF AAT is a JSON spec any language can produce. Asqav SDK is Python-only; for other languages, implement the receipt schema and SHA-256 chaining directly.</p>
<h3 id="how-do-i-convince-leadership-this-is-urgent">How do I convince leadership this is urgent?</h3>
<p>Lead with operational data: 88% of organizations report confirmed or suspected AI agent incidents, 97% expect a major incident within 12 months, and only 3% have automated control coverage [8]. Frame it as: we will have an incident; the cost of not being able to explain it dwarfs the implementation effort. One CISO we spoke with put it bluntly: &ldquo;If my board asks which agent approved a $500K transaction and I cannot answer, I am done.&rdquo; The regulation gives a deadline. The data gives a reason. The scenario you cannot afford is an incident without an evidence trail.</p>
<hr>
<h2 id="sources">Sources</h2>
<table>
	<thead>
			<tr>
					<th>#</th>
					<th>Publisher</th>
					<th>Title</th>
					<th>URL</th>
					<th>Date</th>
					<th>Type</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>1</td>
					<td>EU AI Act (artificialintelligenceact.eu)</td>
					<td>&ldquo;Article 12: Record-Keeping EU Artificial Intelligence Act&rdquo;</td>
					<td><a href="https://artificialintelligenceact.eu/article/12/" target="_blank">https://artificialintelligenceact.eu/article/12/</a>
</td>
					<td>2024-08-01</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>2</td>
					<td>DeepInspect</td>
					<td>&ldquo;EU AI Act Article 12: What the Logging Mandate Requires from Your AI Architecture&rdquo;</td>
					<td><a href="https://www.deepinspect.ai/blog/what-eu-ai-act-article-12-logging-requires-from-your-ai-architecture" target="_blank">https://www.deepinspect.ai/blog/what-eu-ai-act-article-12-logging-requires-from-your-ai-architecture</a>
</td>
					<td>2026-05-15</td>
					<td>Blog</td>
			</tr>
			<tr>
					<td>3</td>
					<td>agentpatterns.ai</td>
					<td>&ldquo;Cryptographic Governance Audit Trail for AI Agents&rdquo;</td>
					<td><a href="https://agentpatterns.ai/security/cryptographic-governance-audit-trail/" target="_blank">https://agentpatterns.ai/security/cryptographic-governance-audit-trail/</a>
</td>
					<td>2026-04-06</td>
					<td>Blog</td>
			</tr>
			<tr>
					<td>4</td>
					<td>Dev.to / Igor Goranapolsky</td>
					<td>&ldquo;Your Compliance Team Will Ask for an AI Agent Audit Trail Before August 2&rdquo;</td>
					<td><a href="https://dev.to/igorganapolsky/your-compliance-team-will-ask-for-an-ai-agent-audit-trail-before-august-2-heres-the-part-most-h2n" target="_blank">https://dev.to/igorganapolsky/your-compliance-team-will-ask-for-an-ai-agent-audit-trail-before-august-2-heres-the-part-most-h2n</a>
</td>
					<td>2026-06-01</td>
					<td>Blog</td>
			</tr>
			<tr>
					<td>5</td>
					<td>IETF</td>
					<td>&ldquo;Agent Audit Trail: A Standard Logging Format for Autonomous AI Systems (draft-sharif-agent-audit-trail-00)&rdquo;</td>
					<td><a href="https://datatracker.ietf.org/doc/draft-sharif-agent-audit-trail/" target="_blank">https://datatracker.ietf.org/doc/draft-sharif-agent-audit-trail/</a>
</td>
					<td>2026-03-29</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>6</td>
					<td>arXiv / Jun He et al.</td>
					<td>&ldquo;OpenKedge: Governing Agentic Mutation with Execution-Bound Safety and Evidence Chains&rdquo;</td>
					<td><a href="https://arxiv.org/abs/2604.08601" target="_blank">https://arxiv.org/abs/2604.08601</a>
</td>
					<td>2026-04-07</td>
					<td>Paper</td>
			</tr>
			<tr>
					<td>7</td>
					<td>HelpNetSecurity / Asqav</td>
					<td>&ldquo;Asqav: Open-Source SDK for Cryptographic Audit Trails for AI Agents&rdquo;</td>
					<td><a href="https://www.helpnetsecurity.com/2026/04/09/asqav-ai-agent-audit-trail/" target="_blank">https://www.helpnetsecurity.com/2026/04/09/asqav-ai-agent-audit-trail/</a>
</td>
					<td>2026-04-09</td>
					<td>Blog</td>
			</tr>
			<tr>
					<td>8</td>
					<td>TierZero.ai</td>
					<td>&ldquo;Your AI Agents Are Changing State. There Is No Audit Trail.&rdquo;</td>
					<td><a href="https://www.tierzero.ai/blog/ai-agent-audit-trail/" target="_blank">https://www.tierzero.ai/blog/ai-agent-audit-trail/</a>
</td>
					<td>2026-05-01</td>
					<td>Blog</td>
			</tr>
			<tr>
					<td>9</td>
					<td>EU AI Act (artificialintelligenceact.eu)</td>
					<td>&ldquo;Article 19: Retention of Logs EU Artificial Intelligence Act&rdquo;</td>
					<td><a href="https://artificialintelligenceact.eu/article/19/" target="_blank">https://artificialintelligenceact.eu/article/19/</a>
</td>
					<td>2024-08-01</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>10</td>
					<td>Vector Labs</td>
					<td>&ldquo;AI Agents Need Identity, Permissions, and Audit Trails&rdquo;</td>
					<td><a href="https://vector-labs.ai/insights/ai-agents-need-identity-permissions-and-audit-trails-the-engineering-architecture-most-teams-are-missing" target="_blank">https://vector-labs.ai/insights/ai-agents-need-identity-permissions-and-audit-trails-the-engineering-architecture-most-teams-are-missing</a>
</td>
					<td>2026-03-01</td>
					<td>Blog</td>
			</tr>
			<tr>
					<td>11</td>
					<td>Microsoft (Agent Governance Toolkit)</td>
					<td>&ldquo;OWASP Agentic Security Initiative Reference Architecture (AGT)&rdquo;</td>
					<td><a href="https://microsoft.github.io/agent-governance-toolkit/compliance/owasp-agentic-top10-architecture/" target="_blank">https://microsoft.github.io/agent-governance-toolkit/compliance/owasp-agentic-top10-architecture/</a>
</td>
					<td>2026-03-01</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>12</td>
					<td>Digital Applied</td>
					<td>&ldquo;Agent Audit Trail Design: 7 Best Practices for 2026&rdquo;</td>
					<td><a href="https://www.digitalapplied.com/blog/agent-audit-trail-design-7-best-practices-2026" target="_blank">https://www.digitalapplied.com/blog/agent-audit-trail-design-7-best-practices-2026</a>
</td>
					<td>2026-05-09</td>
					<td>Blog</td>
			</tr>
			<tr>
					<td>13</td>
					<td>AWS Documentation</td>
					<td>&ldquo;Locking Objects with S3 Object Lock&rdquo;</td>
					<td><a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html" target="_blank">https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html</a>
</td>
					<td>2026-06-01</td>
					<td>Documentation</td>
			</tr>
	</tbody>
</table>
<h2 id="image-credits">Image Credits</h2>
<ul>
<li><strong>Cover photo</strong>: Image generated with flux-pro-1.1 (Agents&rsquo; Codex AI illustration)</li>
</ul>
]]></content:encoded><media:content url="https://agentscodex.com/images/covers/2026-06-26-cryptographic-audit-trails-verifiable-action-logs-ai-agents/cover.jpg" medium="image"/><media:thumbnail url="https://agentscodex.com/images/covers/2026-06-26-cryptographic-audit-trails-verifiable-action-logs-ai-agents/cover.jpg"/></item></channel></rss>