Skip to main content

Audit log events

The audit log captures a structured record of every state-modifying administrative action in Agent Router. Each entry is immutable, cannot be edited or deleted by any user, and supports compliance frameworks such as SOC 2 and ISO 27001. This page documents the wire schema returned by the management API and shown in Admin Dashboard exports: the fields on every entry, how actions and resources are named, and how to join related rows. For the surface that browses the log, see Audit Agent Router activity. For the OpenAPI operations that query entries, see QueryAuditLogs and GetAuditLog.


Event envelope

Every audit entry mirrors a row of the audit_logs table. The management API exposes that row as AuditLogEntry (JSON field names are camelCase; OpenAPI also documents snake_case titles such as action_type).

FieldTypeDescription
idstringServer-generated audit entry UUID (primary key)
timestampstring (RFC 3339, UTC)When the audited action occurred
createdAtstring (RFC 3339, UTC)When the audit row was persisted (defaults to the event time)
userIdstringId of the user that performed the action; empty for system actions
userEmailstringEmail of the acting user, captured at write time
actorTypestringActor category (for example user, system, or service_account)
actionTypestringAction performed (for example CREATE, UPDATE, DELETE, CREATE_SECRET, or SET_GUARDRAIL_STATUS)
resourceTypestringType of the affected resource (for example secret, provider, guardrail, or api_key)
resourceIdstringId of the affected resource
successbooleanWhether the action succeeded
statusCodeintegerHTTP status code of the response
errorMessagestringError detail when the action failed; empty on success
sourceIpstringClient IP the request originated from
userAgentstringUser-Agent header of the originating request
httpMethodstringHTTP method of the originating request (for example POST)
endpointstringRequest path or RPC endpoint that triggered the action
correlationIdstringCorrelation id grouping related entries from one operation
metadataobjectAdditional structured context attached to the entry
requestParamsobjectRequest path or query parameters captured for the action
requestBodyobjectRequest body captured for the action (sensitive values may be redacted)
responseDataobjectResponse payload captured for the action

userId, userEmail, and actorType answer who. actionType, resourceType, and resourceId answer what and to which thing. metadata, requestBody, requestParams, and responseData carry operation-specific context. correlationId joins related rows from one administrative call, and can be used with other telemetry that shares the same identifier.

The Admin Dashboard Audit Logs table projects a subset of these fields (timestamp, actor, action, resource, source, and result). The UI may show a human-readable resource label next to resourceId; that label is a presentation detail, not a separate wire field on AuditLogEntry.


Action and resource vocabulary

actionType and resourceType are stable strings that dashboard filters and SIEM consumers use. They are not dotted <resource>.<verb> names.

Action types

Many mutations use a verb-plus-resource form such as CREATE_SECRET, UPDATE_GUARDRAIL, or DELETE_DATAPLANE. Shorter verbs such as CREATE, UPDATE, DELETE, and UPGRADE also appear. Representative values include:

actionTypeTypical when
CREATE_SECRET / DELETE_SECRET / ROTATE_SECRETSecret lifecycle
CREATE_GUARDRAIL / UPDATE_GUARDRAIL / DELETE_GUARDRAIL / SET_GUARDRAIL_STATUSGuardrail lifecycle and enablement
CREATE_GUARDRAIL_RULE / UPDATE_GUARDRAIL_RULE / DELETE_GUARDRAIL_RULEGuardrail rule changes
CREATE_GUARDRAIL_PROVIDER / UPDATE_GUARDRAIL_PROVIDER / DELETE_GUARDRAIL_PROVIDERGuardrail provider changes
ADD_PROJECT_MODEL / REMOVE_PROJECT_MODELProject model catalogue changes
ADD_PROJECT_PROVIDER / REMOVE_PROJECT_PROVIDERProject provider attachment
CREATE_CLIENT_KEY / ADD_CLIENT_KEY / ROTATE_CLIENT_KEY / DISABLE_CLIENT_KEY / ENABLE_CLIENT_KEY / DESTROY_CLIENT_KEYAPI key and client-key lifecycle
CREATE_PROJECT / UPDATE_PROJECT / DELETE_PROJECTProject lifecycle
ADD_PROJECT_MEMBER / UPDATE_PROJECT_MEMBER / REMOVE_PROJECT_MEMBERProject membership
CREATE_DATAPLANE / UPDATE_DATAPLANE / DELETE_DATAPLANE / SET_DATAPLANE_URLData plane lifecycle
CREATE_PROJECT_GATEWAY / UPDATE_PROJECT_GATEWAY / DELETE_PROJECT_GATEWAYProject gateway lifecycle
ATTACH_PROJECT_GATEWAY_PROJECT / DETACH_PROJECT_GATEWAY_PROJECTGateway-to-project binding
CREATE_TELEMETRY_CONFIG / UPDATE_TELEMETRY_CONFIG / DELETE_TELEMETRY_CONFIGTelemetry and SIEM forward configuration
UPSERT_SYSTEM_SETTING / UPSERT_PROJECT_SETTING / DELETE_PROJECT_SETTINGSettings changes

This table is representative, not exhaustive. New management APIs can introduce additional actionType values; filter on observed values from QueryAuditLogs or the Audit Logs UI when building SIEM rules.

Resource types

resourceTypeResource family
secretStored secrets
guardrail / guardrail_rule / guardrail_providerGuardrails
project / project_member / project_model / project_provider / project_setting / project_mcp_serverProject-scoped resources
project_gatewayProject gateways
dataplaneData planes
client / client_keyClients and API keys
user_tokenUser tokens
service_accountService accounts
customerCustomers
telemetry_configTelemetry forward configs
system_settingDeployment-global settings
mcp_routeMCP route status

Example event

{
"id": "8f14e45f-ceea-467f-a8f0-6b2a1c3d4e5f",
"timestamp": "2026-07-25T19:11:11Z",
"createdAt": "2026-07-25T19:11:11Z",
"userId": "c631d6d5-afb2-41fe-a284-eaf7be377c14",
"userEmail": "[email protected]",
"actorType": "user",
"actionType": "CREATE_SECRET",
"resourceType": "secret",
"resourceId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"success": true,
"statusCode": 200,
"errorMessage": "",
"sourceIp": "203.0.113.10",
"userAgent": "Mozilla/5.0",
"httpMethod": "POST",
"endpoint": "/v1/secrets",
"correlationId": "corr-7c9e6679-7425-40de-944b-e07fc1f90ae7",
"metadata": {
"name": "0-salesforce"
},
"requestParams": {},
"requestBody": {},
"responseData": {}
}

Sensitive values in requestBody, responseData, and metadata may be redacted. Credential material is not written in cleartext to the audit log.


Coverage and immutability

Two properties of the audit log are worth asserting for compliance and integrity purposes.

  • Coverage. Every state-modifying administrative action generates an audit event. There is no path through the Admin Dashboard that changes Agent Router state without leaving a record.
  • Immutability. Audit entries cannot be edited or deleted by any user, regardless of role. There is no "delete from the log" operation anywhere in Agent Router. Signed Merkle checkpoints support tamper-evidence for sealed windows of the log; see the Admin API's audit checkpoint operations.

Retention is configured per deployment. For long-horizon retention beyond the in-Console window, export the audit stream to an external SIEM or log store; see Export audit decisions to SIEM.