Skip to content

EU AI Act: high-risk (Annex III) obligations now apply from 2 December 2027 — Regulation (EU) 2026/1744 moved the original August 2026 date. See if you’re ready →

§ PLATFORM / AUDIT TRAIL

An audit trail your auditor can check.

Logs say what happened. An audit trail also has to show that nothing was changed afterwards. Execlave writes every blocked agent action, every pause and every governance change to an append-only table, links each row to the one before it with a SHA-256 hash, and seals the chain with signed checkpoints. Export it, and anyone can recompute the hashes.

§ CAPABILITIES

Evidence that holds up when someone checks it

An auditor rarely asks whether you log. They ask how you know the log is complete and unchanged.

Evidence that holds up when someone checks it

01 / Capability

Hash-chained rows

Each row stores a SHA-256 hash of its action, actor, resource, state before and after, result, metadata and timestamp, together with the hash of the row before it. Editing, removing or reordering a row breaks the chain at that point.

02 / Capability

Append-only in the database

Database triggers reject every UPDATE and DELETE on the audit table, and the API connects as a database role that cannot switch them off. The protection lives in the database, not in application code that could skip it.

03 / Capability

Signed checkpoints

Hourly by default, the tip of each organization's chain is signed with an RSA-PSS key and linked to the previous checkpoint. Verification checks every signature against the chain it sealed, so a recomputed history no longer matches what was signed.

04 / Capability

Exports an auditor can use

Admins export the trail as CSV or JSON from the dashboard. The compliance package, available through the API, adds the chain status, coverage counts, step-by-step verification instructions and a SHA-256 hash of the package.

§ WHAT IS RECORDED

What lands in the trail

Every decision that changes what an agent may do gets its own row. Allowed calls are counted instead of logged one by one, so the trail stays readable and still shows how many calls were checked.

What lands in the trail

A policy violationOne row per violated policy: the agent, the policy, its version and enforcement mode, and whether the action was blocked or only flagged.
A call from a paused agentA denial row with the reason kill_switch, for every call the agent attempts while it is paused.
Pause and resumeWho did it, when, the reason, and the agent's status before and after.
A human approval decisionWho approved or rejected the action, the policy that required approval, and, when one is issued, the hash of the authorization certificate.
Every other enforcement decisionOne rollup row per organization and hour, counting allowed, blocked, approval-required and unknown-agent decisions.
Enforcement bypass windowsWhen the JavaScript SDK could not reach Execlave and let calls through, it reports the window afterwards as an enforcement.bypassed row.
Governance changesPolicies, API keys, roles, members, workspaces, integrations, budget rules and settings: who changed what, and when.
Prompt releasesPrompt versions created, approved, rejected, deployed and rolled back, and who did each step.
Budget circuit breakerA row each time a budget rule trips, with the rule and the action it took.

§ VERIFY IT YOURSELF

How to verify an Execlave audit trail

Steps two to four need only the exported file and a SHA-256 tool. They are the instructions the compliance package ships with.

How to verify an Execlave audit trail

  1. Export the compliance package

    As an organization admin, call GET /api/v1/audit-logs/package/export with a date range. It returns the entries, the chain status, coverage counts and a package hash.

  2. Recompute each entry's hash

    For each entry, compute SHA-256 over its fields in the order its hash version defines, with JSON fields serialized as key-sorted canonical JSON, and compare the result with content_hash.

  3. Check the links

    For each pair of consecutive entries, check that the later entry's previous_hash equals the earlier entry's content_hash. An inserted, removed or reordered entry fails here.

  4. Check the package hash

    Compute SHA-256 over the entries array and compare it with package_hash. A match shows the file was not edited after export.

  5. Check the signed checkpoints

    Call GET /api/v1/audit-logs/chain/verify. It replays the whole chain and checks every checkpoint signature against the point in the chain it sealed.

Entries written under the first hash version can have their links checked but not always their content hash. The package counts them separately as legacy entries instead of hiding them.

§ QUESTIONS

AI agent audit trails, answered

AI agent audit trails, answered

What is an AI agent audit trail?

An AI agent audit trail is a chronological, tamper-evident record of what agents were and were not allowed to do, and of every human decision that changed their permissions. Unlike application logs, it is built to show afterwards that no record was altered or removed.

What does Execlave record when an agent acts?

Every policy violation gets its own row with the agent, the policy, the policy version and whether the action was blocked. Allowed actions are counted in hourly rollups instead of being written one by one. Pauses, resumes and governance changes record who acted, when and why.

How is the audit trail made tamper-evident?

Three layers. Database triggers reject updates and deletes. Each row carries a SHA-256 hash of its own content and of the previous row, so an edit breaks the chain. Signed checkpoints seal the tip of the chain, so even a fully recomputed chain no longer matches what was signed.

Can an audit record ever be changed or deleted?

Not through the application or the API. The exceptions are narrow and deliberate: rows age out at the end of the retention period, erasing a user under the GDPR clears their IP address, user agent and email from their rows (fields outside the hash), and deleting an organization at the end of the service deletes its trail.

Is every audit record signed?

No. Checkpoints are signed, not individual rows: hourly by default, the tip of the chain is signed with RSA-PSS and SHA-256. The rows themselves are protected by the hash chain. Compliance reports generated from the trail are signed as a whole; the audit package export carries a SHA-256 hash, not a signature.

Does the audit trail cover EU AI Act Article 12?

Article 12 requires high-risk AI systems to allow the automatic recording of events over their lifetime, so that their operation can be traced. Execlave records those events for the agents it governs and keeps the record verifiable. Whether your system meets Article 12 depends on everything you log and keep; the trail supports that, it does not decide it.

Who can read the audit trail?

Organization admins and owners. Each organization's rows are isolated by PostgreSQL row-level security, so one customer's trail is never visible to another.

§ COMPARISON

An audit trail vs. the logs you already have

Application logs and tracing tools answer different questions. They show what ran and how fast. An audit trail has to show what was allowed, who decided, and that the record is intact.

An audit trail vs. the logs you already have

AspectApplication logsTracing and observabilityExeclave audit trail
Built to showWhat the code didHow a request performedWhat an agent was allowed to do, and who decided
Edits and deletesPossible with write accessDepends on the vendorRejected by database triggers
Proof nothing is missingNot built inNot built inSHA-256 hash chain and signed checkpoints
Blocked actionsOnly if the code logs themAs spans, if instrumentedOne row per violation, with the policy version
Auditor exportRaw log filesDashboards and an APIA package with verification steps

Start the record before an auditor asks for it

Register an agent and every block, pause and policy change is on the record from the first request. Cloud or self-hosted.