Audit trail

Every privileged action in your Workforce organization, recorded with who, what, when, and from where

The audit trail is an append-only record of every privileged action taken in your Workforce organization: members invited, roles changed, API keys rotated, Groups remapped, security rules edited, routing policies changed, skills published, plus the handful of reads worth recording on their own, such as a log search. It is the artifact your security review asks for, and the evidence you pull when you need to know who changed what and when.

It is not activity. What an employee’s AI client did lives in Tool call logs and LLM calls; model requests and tool calls are never audit events. The audit trail is administrative change.

Open Settings → Audit trail. Reading and exporting it needs the View audit trail permission. The filter bar takes three things: date (before, after, or between), event type, and the user who acted. Filters are held in the URL, so a filtered view is a link you can send someone. Click a row for the event detail and, on updates, the full field-level diff.

What’s captured

Each entry stores a snapshot of the actor and the target, denormalized at write time, so the row stays readable after the user, role, or resource it names has been deleted.

FieldWhat it holds
event_typeWhat was done, such as ROLE_UPDATED or SECURITY_RULE_UPDATED
event_descriptionA human-readable summary, with a change summary on updates
created_atWhen the event was recorded, UTC with timezone
user_name / user_emailThe dashboard member who acted, or empty for system-driven events such as SCIM
role_nameTheir role at the moment of the event, surviving a later rename
Resource type and IDWhat was changed: employee, Group, Tool Pack, rule, routing policy, member
SourceWeb dashboard, API, or system
ip_addressThe actor’s IP, from CF-Connecting-IP when present, otherwise the request socket
url / methodThe HTTP path and verb behind the action
request_bodyThe validated request body, for handlers that are not auth-adjacent. See Sensitive fields.

The table is append-only. Entries are never modified after they are written, and nothing can be backfilled: an event is emitted inside the transaction that performs the mutation, or not at all. Failed actions mostly write nothing, because the mutation never began, with the exception of LOGIN_FAILED and MFA_VERIFICATION_FAILED.

Event catalog

Event types are uppercase strings, and the same value works as an ?event_type= filter on the audit-log endpoint. The authoritative list is the event_type enum on the audit-log endpoint in the API reference: it is generated from the source and picks up new values as features ship, so read it there before you hard-code a filter. The dashboard’s event-type dropdown is generated from the same source, and the newest event types can land in the record before they reach the dropdown, so filter on the endpoint when the dropdown does not offer the one you want.

AreaEventFires when
Sign-in and MFALOGIN_SUCCESS / LOGIN_FAILED / LOGOUTA dashboard sign-in succeeds or fails, or a member signs out
Sign-in and MFAMFA_ENABLED / MFA_DISABLED / MFA_DEVICE_CHANGEDA member turns MFA on, turns it off, or re-enrolls an authenticator
Sign-in and MFAMFA_VERIFICATION_FAILEDAn MFA code is rejected at sign-in
Sign-in and MFAMFA_ADMIN_RESETAn admin clears a member’s MFA enrollment
Sign-in and MFAMFA_REQUIRED_ENABLED / MFA_REQUIRED_DISABLEDThe organization starts or stops requiring MFA
Members and rolesUSER_INVITED / USER_INVITATION_ACCEPTED / USER_INVITATION_CANCELLEDInvitation lifecycle for a dashboard member
Members and rolesUSER_CREATED / USER_UPDATEDA member is added, or their details or role change
Members and rolesUSER_ENABLED / USER_DISABLEDA member’s dashboard access is restored or suspended
Members and rolesUSER_PASSWORD_RESETA member’s password is reset
Members and rolesROLE_CREATED / ROLE_UPDATED / ROLE_DELETEDCustom role lifecycle
Single sign-onSSO_PROVIDER_CREATED / SSO_PROVIDER_UPDATED / SSO_PROVIDER_DELETEDAn identity provider connection is configured, edited, or removed
Single sign-onSSO_LOGIN_REQUIRED_ON / SSO_LOGIN_REQUIRED_OFFWhether members must sign in through the identity provider is turned on or off
SCIM provisioningSCIM_TOKEN_CREATED / SCIM_TOKEN_REVOKEDThe SCIM bearer token is generated or revoked
SCIM provisioningSCIM_USER_PROVISIONED / SCIM_USER_UPDATED / SCIM_USER_REACTIVATED / SCIM_USER_DEPROVISIONEDYour identity provider creates, updates, reactivates, or deactivates an employee
SCIM provisioningSCIM_USER_ACCESS_UPDATEDOne employee’s tool access changes
SCIM provisioningSCIM_GROUP_CREATED / SCIM_GROUP_UPDATED / SCIM_GROUP_DELETEDGroup lifecycle from the identity provider
SCIM provisioningSCIM_GROUP_ACCESS_UPDATEDA Group’s tool access changes
SCIM provisioningSCIM_DEFAULT_ACCESS_UPDATEDThe default access for an employee whose Group has no mapping changes
Access requestsSCIM_TOOL_ACCESS_REQUEST_CREATEDAn employee requests a tool they do not have
Access requestsSCIM_TOOL_ACCESS_REQUEST_APPROVED / SCIM_TOOL_ACCESS_REQUEST_DENIEDA reviewer approves or denies a request
Access requestsSCIM_TOOL_ACCESS_REQUEST_REVOKED / SCIM_TOOL_ACCESS_REQUEST_CANCELEDAn approved grant is withdrawn, or the requester cancels
Keys and tokensPRODUCTION_API_KEY_CREATED / PRODUCTION_API_KEY_REVOKED / PRODUCTION_API_KEY_REGENERATEDA production key is created, revoked, or regenerated in place, which is how it rotates
Keys and tokensTEST_API_KEY_CREATED / TEST_API_KEY_REGENERATED / TEST_API_KEY_REVOKED / TEST_API_KEY_DELETEDTest key lifecycle
Keys and tokensPERSONAL_ACCESS_TOKEN_GENERATED / PERSONAL_ACCESS_TOKEN_ROTATED / PERSONAL_ACCESS_TOKEN_REVOKEDA member’s own token for the CLI and the API is issued, rotated, or revoked
ConnectorsCONNECTOR_IMPORTED / CONNECTOR_UPDATED / CONNECTOR_DELETEDA custom MCP server is registered as a Connector, edited, or removed
ConnectorsCONNECTOR_AUTH_SCOPE_RULE_CREATED / CONNECTOR_AUTH_SCOPE_RULE_UPDATED / CONNECTOR_AUTH_SCOPE_RULE_DELETEDAn OAuth scope override on a Connector changes
ConnectorsAPPLICATION_CREDENTIAL_CREATED / APPLICATION_CREDENTIAL_UPDATED / APPLICATION_CREDENTIAL_DELETEDYour own OAuth app for a Connector is added, edited, or removed
Employee connectionsCREDENTIAL_CREATED / CREDENTIAL_UPDATED / CREDENTIAL_DELETEDAn employee’s connection to a Connector is stored, changed, or revoked
Employee connectionsWORKFORCE_CREDENTIAL_UPSERTED / WORKFORCE_CREDENTIAL_DELETEDThe same, when the change came through the Workforce console
EmployeesREGISTERED_USER_CREATED / REGISTERED_USER_UPDATED / REGISTERED_USER_DELETEDAn employee record is created, changed, or deleted
Tool PacksTOOL_PACK_CREATED / TOOL_PACK_UPDATED / TOOL_PACK_DELETEDTool Pack lifecycle and configuration changes
Security rulesSECURITY_RULE_CREATED / SECURITY_RULE_UPDATED / SECURITY_RULE_DELETEDA Security Gateway rule or per-Tool-Pack override is created, edited, or deleted
Model accessWORKFORCE_BLOCKLIST_RULE_CREATED / WORKFORCE_BLOCKLIST_RULE_UPDATED / WORKFORCE_BLOCKLIST_RULE_DELETEDA model blocklist rule changes
RoutingWORKFORCE_ROUTING_POLICY_CREATED / WORKFORCE_ROUTING_POLICY_UPDATED / WORKFORCE_ROUTING_POLICY_DELETEDRouting policy lifecycle
RoutingWORKFORCE_GROUP_ROUTING_UPDATED / WORKFORCE_EMPLOYEE_ROUTING_UPDATEDA Group’s or one employee’s routing assignment changes
ModelsWORKFORCE_MODEL_CONTROLS_UPDATED / WORKFORCE_MODEL_COMPRESSION_UPDATED / WORKFORCE_GROUP_MODELS_UPDATEDModel controls, compression, or a Group’s model access changes
ModelsWORKFORCE_MODEL_MIGRATION_CREATED / WORKFORCE_MODEL_MIGRATION_UPDATEDA model migration is created or moves through its lifecycle
BudgetWORKFORCE_GROUP_BUDGET_UPDATEDA Group’s budget changes
Employee keysWORKFORCE_EMPLOYEE_KEY_REVEALED / WORKFORCE_EMPLOYEE_KEY_ROTATEDAn employee’s Gateway key is shown or rotated
EvalsEVAL_RUN_STARTEDAn eval run is triggered
SkillsSKILL_DRAFTED / SKILL_SUBMITTEDA skill is saved as a draft, or submitted for review
SkillsSKILL_APPROVED / SKILL_REJECTEDAn admin approves or rejects a submission
SkillsSKILL_PUBLISHED / SKILL_UNPUBLISHED / SKILL_REPUBLISHEDA skill or version is published, hidden from agents, or brought back
SkillsSKILL_ENABLED / SKILL_DISABLED / SKILL_DELETEDA Merge-provided skill is turned on or off for the organization, or a skill is deleted
SkillsSKILL_EDITEDA published skill is edited
SkillsSKILL_RETRIEVEDAn agent loads a skill with retrieve_skill
KnowledgeSYNCED_KNOWLEDGE_SOURCE_CONNECTED / SYNCED_KNOWLEDGE_SOURCE_DISCONNECTEDA synced knowledge source is connected or disconnected
InsightsINSIGHT_ACTION_EXECUTED / INSIGHT_ACTION_DISMISSEDAn Insights finding’s action is applied or dismissed
Desktop clientDESKTOP_DEVICE_ENROLLED / DESKTOP_DEVICE_RE_ENROLLEDA device enrolls with the Workforce desktop client, or enrolls again
Desktop clientDESKTOP_DEVICE_IDENTITY_RESOLVEDA device is matched to an employee
Desktop clientDESKTOP_PANEL_CONFIGUREDThe client’s panel configuration changes
Desktop clientDESKTOP_TOOL_AUTH_STARTEDAn employee starts authenticating a Connector from the desktop client
Desktop clientDESKTOP_GATEWAY_CREDENTIAL_ISSUEDAn employee mints a per-device Gateway key from the menu bar
Desktop clientDESKTOP_ENROLLMENT_TOKEN_CREATED / DESKTOP_ENROLLMENT_TOKEN_REVOKEDAn admin mints or revokes an organization enrollment token
WebhooksOUTBOUND_WEBHOOK_CREATED / OUTBOUND_WEBHOOK_UPDATED / OUTBOUND_WEBHOOK_DELETEDOutbound webhook subscription lifecycle
WebhooksOUTBOUND_WEBHOOK_VERIFICATION_KEY_REFRESHED / INBOUND_WEBHOOK_SETTINGS_UPDATEDThe delivery verification key rotates, or inbound webhook settings change
Log accessTOOL_CALL_LOGS_SEARCHED / TOOL_CALL_LOG_DETAIL_VIEWEDA member searches the tool call logs, or opens one call
Log accessAPI_LOGS_SEARCHED / API_LOG_DETAIL_VIEWEDA member searches the API request logs, or opens one request
Log accessWORKFORCE_LLM_LOGS_SEARCHED / WORKFORCE_LLM_LOG_DETAIL_VIEWED / WORKFORCE_LLM_LOG_PAYLOAD_VIEWEDA member searches the LLM calls, opens one request, or opens its payload
Log accessWORKFORCE_SECURITY_ALERTS_SEARCHEDA member searches the security alerts
Log accessAUDIT_LOG_EXPORTEDA member exports the audit trail
Chat sessionsCHAT_SESSION_CREATED / CHAT_SESSION_ENDEDAn agent chat session starts or ends
OrganizationWORKFORCE_ACTIVATEDWorkforce is activated for the organization
OrganizationWORKFORCE_LOG_PAYLOADS_UPDATEDPayload logging is turned on or off
OrganizationORGANIZATION_CLAIMED / ORGANIZATION_CLAIM_REISSUEDThe organization’s first admin claim is redeemed or reissued
BillingBILLING_PAYMENT_METHOD_ADDED / BILLING_PAYMENT_METHOD_UPDATEDA payment method is added or changed
BillingBILLING_PLAN_CHANGED / BILLING_SUBSCRIPTION_CANCELLED / ORG_SWITCHED_TO_EMPLOYEES_PROThe plan changes, the subscription is canceled, or the organization moves to the employees plan
BillingBILLING_USER_SNAPSHOT_SUBMITTEDA user-count snapshot is submitted for billing

Model provider credentials reuse the same CREDENTIAL_* names as employee Connector connections. The resource type on the row is what tells them apart.

The skills events are described alongside the flows that write them in Publishing skills, Reviewing submissions, and How agents load skills.

What an update entry looks like

Update events pair an identifying prefix with a per-field diff, so you can scan the feed and see what changed without fetching the resource:

Updated Group Engineering with ID grp_4c81e2. Changed tool_packs: added Jira read-only; removed Salesforce

Every diffed value is truncated to 100 characters in the description. The event detail shows each changed field’s old and new value side by side.

Sensitive fields

Secret values never reach an audit row in the first place:

  • Auth-adjacent handlers omit the body. Credential, SSO, sign-in, password reset, and API key handlers record that the action happened, with the entity named in the description, and store no request payload.
  • Updates diff before mutating. Fields holding secrets are summarized as changed rather than rendering the old and new value, so the description carries no secret material.

Handlers that are not auth-adjacent do persist their validated request body as-is. If you handle especially sensitive configuration, review what those rows contain.

Investigation flow

Who changed this? Filter by event type, then read the resource column. Every event of that type comes back in order, with the user on each row.

What did this person do? Filter by user. You see everything that member touched across resources, which is the check to run before revoking an admin’s access.

Exporting

Export produces CSV of whatever filter is applied, so a compliance review that needs a 12-month window is a date filter and a download. The export itself is recorded as AUDIT_LOG_EXPORTED, so there is a trail of who pulled what.

The CSV carries the event ID, timestamp in ISO 8601 UTC, event type, actor email and ID, role, IP address, resource type and ID, source, and the JSON-encoded diff for update events. Cells beginning with =, +, -, @, a tab, or a carriage return are prefixed with a single quote to neutralize CSV injection.

For automated forwarding, the audit-trail export endpoint is documented in the API reference.

Data retention

One window covers audit events, Tool call logs, and the violation records behind Violations and alerts.

The default is 90 days. Some plans keep data longer, and an Enterprise contract can set a window of its own, so read the window that applies to you off your plan on Billing or off your contract.

Records belonging to an employee who has left follow the same window. Deprovisioning through SCIM revokes access immediately, and that employee’s audit entries and tool call history are kept until the window closes, then purged.

If your compliance requirements run longer than your window, export on a schedule and keep the results in your own systems. CSV export covers any filtered view, the audit-log endpoint covers audit events, and the log endpoints feed a warehouse or a SIEM.

What it doesn’t capture

The audit trail covers administrative actions in the dashboard and over the management API: changes to configuration and access, plus the few reads worth recording on their own. It does not include tool calls, model requests, or the OAuth steps that lead up to a CREDENTIAL_CREATED event. For the full picture, read it alongside Tool call logs and LLM calls.

Next

Decide who on your team can perform audited actions, and who can read the trail, in Team and roles.