Where to find it
- Govern → Audit: every event in the environment. A tenant admin also sees the tenant’s own events here: users, roles, service accounts, API keys and sign-ins.
- The agent’s Audit tab: that agent’s events only.
Only admins of the environment can read the audit log, since it holds other people’s IP addresses and browsers. Members see a line saying so.
Reading an event
Each row reads as a sentence: who, what, and on what, for example ayse@example.com promoted v4 or deploy-bot started run r_812. Runs and agents link to their pages. Open a row to see:- What changed, from → to, field by field.
- Context: the action’s name (
version.promoted), how it came in (panel,api,agent,system), the API key used, on whose behalf an agent acted, the IP address, the browser, the request id, and any details of the action. - Chain position: the event’s number in the tenant’s chain and the start of its hash.
Filters
- Category chips: All · Deploys · Runs & reviews · Secrets & guardrails · Memory · Webhooks · Models · Evals · Access.
- Who: a person or service account, or AgentOS (automatic), Agents’ code, or Not signed in (for example a failed sign-in).
What is recorded
Not recorded: reads; the facts agents write to memory (memory keeps its own record of who wrote each fact); individual edits to dataset items; experiment runs one by one (
experiment.started covers them); the steps inside a run (the run’s timeline has them).
Tamper evidence
Three things protect the log:- Append-only. The database itself refuses to update or delete an event, whatever the application asks.
- A hash chain. Each tenant’s events are numbered 1, 2, 3… and every event carries an HMAC over its own fields and the previous event’s hash. Changing, removing or reordering any event breaks every hash after it.
- A check on every visit. Both audit pages recompute the tenant’s chain when they load and say either Log intact, with how many events were checked, or Log altered, naming the first event that can’t be trusted. Very long chains (over 100,000 events) are checked by your AgentOS operator instead of on every visit.
Export
Export CSV and Export JSON (JSON Lines, one event per line) download the filtered events, oldest first, up to 100,000 at a time. Every field is included, hashes too, so the chain can be checked outside AgentOS. Each export is itself recorded as anaudit.exported event.
To feed a SIEM or keep a copy elsewhere, pull the events over HTTP instead: see Audit API.
