- Duale AI
- Documentation
- Security
- Audit log evidence
Audit log: recorded events, coverage gaps, and verification
Lists which events Duale AI records in its audit log, identifies coverage gaps, and explains how to verify record content.
This page covers Duale AI audit log coverage, gaps, Tool Analytics, query limits, and hash verification of record content.
- Audit log coverage: recorded events and their content.
- Audit log gaps: events with no Platform record.
- Tool Analytics aggregate outcomes and their limits.
- Query capabilities, access tiers, and search limitations.
- Hash verification of record content and anchoring limits.
Summaries were generated by AI.
Use the audit log as supporting evidence for the events below. When a business, audit, contractual, legal, support, or recovery need depends on a missing event, the gap table identifies evidence an existing customer system can keep.
When you must retain an approval, decision, or exception, keep it in its existing change or business record. Platform records can support that record, but they do not contain the customer’s decision.
What Duale AI records
Use the audit log to support these events:
Use these entries as supporting evidence, then check the next section for the records that do not exist. Default policies explains why a supplied-policy definition diff does not prove that every Tenant member’s effective permissions changed. Credential lifecycle explains how to correlate recorded refusals and where the coverage stops.
An event marked success reports the outcome that the acting component reported. The record alone does not prove that the corresponding
state change committed; if that distinction matters, check the current resource state or the owning change record.
What Duale AI does not record
Each row is a record an auditor routinely assumes exists. None of them does.
Use Tool Analytics for aggregate outcomes
Tool Analytics in the Dashboard counts one final outcome for each requested Tool Call, not each retry, and aggregates those outcomes across the Tenant and by Tool Source, model-facing Tool name, and Agent Identity. The aggregates can show whether a Connection or Tool fails more often and which Agent Identities use it. They do not expose arguments or results, identify the effect of one call, or prove that the destination system changed.
Operate Tools owns the outcome categories, the confirmed success rate, and when that rate appears. Tool Call outcomes defines what each outcome means.
What you can query, and what you cannot
The Dashboard queries records by tenant, action, resource type, resource identifier, and time range. One page contains 100 records by default and at most 1,000. An export contains at most 100,000 records and uses JSONL or CSV.
There is no filter by acting person and no free-text search. A request for every event concerning one person cannot be answered through this query interface. If these records concern an identifiable person and your obligations include data-subject requests, plan that procedure around this limit.
Reads of the audit log are themselves recorded.
Audit operations use the Tenant-scoped resource audit:<tenant_id>. Querying records requires
audit:read_events, exporting them requires audit:export_events, and requesting a proof requires
audit:read_proof.
With the supplied human tiers, an Administrator can query and export records and request proofs. A Viewer can query records and request proofs but cannot export them. An Editor has no audit access.
You can verify record content, not append-only anchoring
When you request a proof for one event in the Dashboard, your browser checks the hash and shows the result. To check
records yourself, export them: each export row carries the exact canonical_event_data text and its content_hash.
Compute SHA-512 over the UTF-8 bytes of canonical_event_data, without parsing or reformatting it, and compare the
lowercase hexadecimal result with content_hash.
A match proves that the exact returned canonical text produces the returned stored hash. It detects a change to that text unless the hash changes with it.
The canonical text omits user_context, which can describe a person or Agent Identity together with request context,
or carry the exceptional audit-only system origin of a supplied-policy change. It never makes a service a Tenant
actor. Duale AI encrypts that object separately, but this hash check does not cover it. A matching hash verifies
none of those actor or request-context fields. Identity defines these distinctions.
You cannot verify the append-only anchoring independently today. The interface returns transaction values but no inclusion path and no independently trusted root. Treat that anchoring as an internal integrity control. Do not present it to an auditor as independently verified tamper evidence.
Link a Platform failure to your own records
When a Platform failure needs support or reconciliation, store each request, trace, or span identifier it carries with the owning business record, and include the available identifiers in a support request. Errors and reliability defines how the SDK exposes them.
When a business record must correlate a Task with Platform evidence, store the Task identifier when you submit the Task, not only after a failure. It is the durable link between those records.
Assign owners and record the change lists fields for a material change record.
Retain customer-held evidence only for its owning purpose and period. Do not copy prompts, credentials, or unrelated personal data merely to fill a Platform audit gap.
Contractual notification, data-return, deletion, audit, and availability terms belong to the legal documents, not to this record inventory.
Return to Security to place these records in the lifecycle of one Task.