# Audit log

URL: /systems/trust-and-governance/audit-log · Id: `capability:audit-log`

> Audit log keeps every Action with who took it, for whom, under which Mandate and with what result, append-only and hash-chained.

Audit log answers who did what, for whom, through which [Interface](/business/nouns/interface) and under which [Permission](/business/nouns/permission), for every [Action](/business/nouns/action). It reads the [Event](/business/nouns/event) history, which is append-only and hash-chained, so its completeness is provable.

## Contract
- Every write records `by` (the [Worker](/business/nouns/worker)), `for` (the principal), `via` (the Interface), the key, the session, the [Mandate](/business/nouns/mandate) it ran under and the definition [Version](/business/nouns/version).
- A refused call is recorded too: an Action born `refused`, naming the rule that refused it.
- Events are never edited or deleted. A correction is a new Event that points at the old one.
- Each namespace chains its Events by sequence number and hash. Every hour the chain heads roll up from [Startup](/business/nouns/startup) to [Studio](/business/nouns/studio) to platform, and the root is published.
- Anyone holding a published root verifies a namespace's history offline, without trusting the platform.
- Model calls, with their full request and response, and every browser step are part of the record.
- Any record read with `?audit=1` returns its history inline.

## Verbs
| Verb | Object | Event |
| --- | --- | --- |
| [Action.list](/business/nouns/action/list) | [Action](/business/nouns/action) | None. |
| [Event.list](/business/nouns/event/list) | [Event](/business/nouns/event) | None. |

## Interfaces
- [API](/code/api/reference)
- [SDK](/code/sdk/reference)
- [CLI](/code/cli/reference)
- [MCP](/code/mcp/reference)

## Example
```bash
# A bookkeeping service traces who voided one client's invoice.
npx startup-builder show /invoices/invoice_311/actions

2026-10-14T09:12:03Z  Invoice.void      by agent_billing  for customer_88  via api  mandate_12  done
2026-10-14T09:11:58Z  Approval.approve  by human_dana                      via app              done
2026-10-14T09:10:41Z  Invoice.void      by agent_support  for customer_88  via api               refused  forbidden
```