Audit log

The audit log is your workspace’s append-only answer to “who did what, and when?” Every security-relevant or destructive action a person (or automation) takes — inviting a member, rotating an LLM credential, deleting an agent, revoking an API key — is recorded as an event that only admins can read.

At a glance

WhereAudit Log in the left nav (admin group)
Key API routeGET /audit
Who can readCompany admins only — members and viewers get 403
ScopeCompany-wide: covers events across all your orgs and agents
Retention shapeAppend-only; events are never edited or deleted by the application

What gets recorded

Events are named <target>.<verb> and grouped by the surface they touch:

AreaActions
Membersmember.invite, member.update, member.remove, member.resend_invite, member.bulk_persona
Sign-in securityauth.invite_accepted, auth.password_change, auth.password_reset_requested, auth.password_reset
API keysapi_key.create, api_key.revoke
LLM connectionsllm_connection.create, llm_connection.update, llm_connection.delete
Judges & evalsjudge.create, judge.delete, judge_version.create, judge_deployment.create, judge_deployment.update, eval_run.start, eval_run.cancel
Datasetsdataset.create, dataset.update, dataset.delete, dataset.version_create
Enrichmentsenrichment.create, enrichment.update, enrichment.delete, enrichment_run.start
Topicstopic_space.create, topic.update, topic.merge, topic.split
Orgs & agentsorg.create, org.update, project.create, project.update, project.delete
Views (personas)persona.create, persona.update, persona.delete
Onboardingtenant.onboarding_step_ack, tenant.onboarding_complete

A failed password-reset request for an unknown email is deliberately not recorded — logging it would let an audit reader enumerate which addresses exist. Only resets issued for real, active accounts appear.

Sign-ins live on their own tab. Logins, failed logins, throttles, logouts, rejected sessions, and operator impersonation are recorded as security events and shown under Sign-in activity on this same page, not in the workspace activity list below. The split is: this log answers who did what inside your company; security events answer who authenticated, and who tried. Authentication rejections happen before a company is even resolved, so they cannot be filed under one.

What each entry contains

FieldMeaning
WhencreatedAt — UTC timestamp of the event
WhoactorId, actorName, and actorType (user, operator, service, scheduler, automated, system)
Whataction (the dotted verb) and a human-readable summary
TargettargetType, targetId, targetName — the resource that was affected
WhereorgId / projectId when the event is scoped below the company
Outcomestatus: success, failure, or denied
Contextmetadata (structured extra detail, e.g. before/after values), plus the caller’s ipAddress and userAgent

The Audit Log page (and GET /audit) supports:

  • Time range — the standard picker; defaults to the last 30 days.
  • Facet filters — action, actor type, and target type dropdowns, populated from the values actually present in your log (plus actorId, orgId, projectId, and status as API parameters).
  • Free-text search — q matches against the summary, target name, and action.
  • Sorting and paging — sortable by time, action, actor, target, or status; pages of up to 500 events (100 by default).

Picking a filter never collapses the other dropdowns — facets are computed over the full time-scoped log, so you can pivot between filters freely.

Audit log vs. Activity feed

These answer different questions:

Audit log (this page)Activity feed
QuestionWho changed what?What background work ran?
ContentsSecurity-relevant mutations: members, keys, connections, judges, datasets, orgs/agents, authEval, clustering, and enrichment runs — durations, target counts, success rates
AudienceAdmins onlyMembers
ShapeAppend-only event trailOperational run history

(Platform operators additionally have their own separate log covering company provisioning and lifecycle — that never appears in a tenant’s audit log.)

How it works

  • Events are written after the primary action commits, on a separate connection, and the write is best-effort — an audit hiccup can never roll back or block the action itself.
  • The log lives inside your company’s physically isolated storage, and reads are additionally scoped to your company, so no other tenant’s events can ever appear.
  • Reading is gated by an admin-only permission; there is no API to modify or delete entries.