Audit Logging
Audit Logging is a feature of Temporal Cloud that provides forensic access information for a variety of operations in the Temporal Cloud control plane.
Audit Logging answers "who, when, and what" questions about Temporal Cloud resources. These answers can help you evaluate the security of your organization, and they can provide information that you need to satisfy audit and compliance requirements.
You need the Account Owner or Global Administrator role to view audit logs via UI, use the API, or to configure an Audit Log sink.
Audit Logging does NOT capture data plane events, like Workflow Start, Workflow Terminate, Schedule Create, etc. Instead, explore the Export feature, which does let you send closed Workflow Histories to external storage.
Which events are supported by Audit Logging?
- Account
ChangeAccountPlanType
: Change Account Plan TypeUpdateAccountAPI
: Configure Audit Logging, Configure Observability Endpoint
- API Keys
CreateAPIKey
: Create API KeyDeleteAPIKey
: Delete API KeyUpdateAPIKey
: Update API Key
- Connectivity Rules
CreateConnectivityRule
: Create Connectivity RuleDeleteConnectivityRule
: Delete Connectivity Rule
- Namespace
CreateNamespaceAPI
: Create NamespaceDeleteNamespaceAPI
: Delete NamespaceFailoverNamespacesAPI
: Failover (for High Availability Namespaces)RenameCustomSearchAttributeAPI
: Rename Custom Search AttributeUpdateNamespaceAPI
: Includes retention period changes, replica edits, authentication method updates, custom search attribute updates, and connectivity rule bindings
- Namespace Export
CreateNamespaceExportSink
: Create Namespace Export SinkDeleteNamespaceExportSink
: Delete Namespace Export SinkUpdateNamespaceExportSink
: Update Namespace Export SinkValidateNamespaceExportSink
: Validate Namespace Export Sink
- Nexus Endpoint
CreateNexusEndpoint
: Create Nexus EndpointDeleteNexusEndpoint
: Delete Nexus EndpointUpdateNexusEndpoint
: Update Nexus Endpoint
- Service Accounts
CreateServiceAccount
: Create Service AccountCreateServiceAccountAPIKey
: Create Service Account API KeyDeleteServiceAccount
: Delete Service AccountUpdateServiceAccount
: Update Service Account
- User
CreateUserAPI
: Create UsersDeleteUserAPI
: Delete UsersInviteUsersAPI
: Invite UsersSetUserNamespaceAccessAPI
: Set User Namespace AccessUpdateIdentityNamespacePermissionsAPI
: Update Identity Namespace PermissionsUpdateUserAPI
: Update User Account-level RolesUpdateUserNamespacePermissionsAPI
: Update User Namespace Permissions
- User Groups
CreateUserGroup
: Create User GroupDeleteUserGroup
: Delete User GroupSetUserGroupNamespaceAccess
: Set User Group Namespace AccessUpdateUserGroup
: Update User Group
Audit Log format
The following fields are deprecated and are planned for removal on or after April 1 2026.
user_email
. This field is duplicated byprincipal.name
for principals of typeuser
. Other principal types do not have associated emails.level
. This field is duplicated bystatus
.caller_ip_address
. This field is replaced byx_forwarded_for
.details
. This field is replaced byraw_details
that includes request details.category
. This field is no longer used.
Audit Logs use the following JSON format:
{
"operation": // Operation that was performed
"principal": // Information about who initiated the operation
"details": // DEPRECATED, see raw_details
"raw_details": // details about the request
"user_email": // DEPRECATED, use principal.user where applicable
"x_forwarded_for": // the IP address making the call
"caller_ip_address": // DEPRECATED, use x_forwarded_for
"category": // DEPRECATED, no longer used
"emit_time": // Time the operation was recorded
"level": // DEPRECATED, use status
"log_id": // Unique ID of the log entry
"request_id": // Optional async request id set by the user when sending a request
"status": // Status, such as OK or ERROR
"version": // Version of the log entry
}
The X-Forwarded-For
format is a comma-separated list of IP addresses which should be evaluated from the last to the first, until meeting the first untrusted IP address of the list. This allows for instance to consider proxies in the path.
Temporal provides the caller IP address in that format to allow customers to identify a caller IP address even if one (or more proxies) are in the network path to reach Temporal Cloud.
Example of an Audit Log
[
{
"operation": "UserLogin",
"status": "OK",
"version": 2,
"logId": "edb3aa3e-78c4-48fc-9c7e-2078c6989775",
"xForwardedFor": "10.1.2.3",
"asyncOperationId": "",
"emitTime": {
"$typeName": "google.protobuf.Timestamp",
"seconds": 1759436617,
"nanos": 48000000
},
"principal": {
"type": "user",
"id": "",
"name": "user@email.com",
"apiKeyId": ""
}
},
{
"operation": "UserLogin",
"status": "OK",
"version": 2,
"logId": "5fe6a81e-8d3c-4f4d-88a5-52db864c9ea5",
"xForwardedFor": "10.1.2.3",
"asyncOperationId": "",
"emitTime": {
"seconds": 1759178573,
"nanos": 671000000
},
"principal": {
"type": "user",
"id": "",
"name": "user@email.com",
"apiKeyId": ""
}
}
]
How to configure an Audit Log sink
Audit logging can be configured in AWS Kinesis or GCP Pub/Sub.
How to troubleshoot Audit Log sink
The Audit Logging page of the Temporal Cloud UI provides the current status of an Audit Log sink.
- If an error is detected, a summary of the error appears below the page title.
- If the Audit Log sink is functioning normally, an On badge appears next to the page heading.
After an Admin Operation is performed, users can see Audit Log messages flow through the stream.
Upon successful configuration of the Audit Log sink and set up of a stream, you will receive events within the hour of setup. Temporal is able to retain Audit Log information for up to 30 days. To retrieve logs up to the past 30 days, you will need to file a request.
If you experience an issue with an Audit Log sink, we can provide the missing audit information. Open a support ticket to request assistance.
How to delete an Audit Log sink
To delete an Audit Log sink, follow these steps:
- In the Temporal Cloud UI, select Settings.
- On the Settings page, select Integrations.
- In the Audit Logging card, select Configure Audit Logs.
- At the bottom of the Audit Logging page, choose Delete.
After you confirm the deletion, the Audit Log Sink is removed from your account and logs stop flowing to your stream.
Audit Log UI and API access is currently in public preview.
View an Audit Log
An Audit Log can be viewed in the Temporal Cloud UI.
- In the Temporal Cloud UI, select Settings.
- On the Settings page, select Audit Logging.
Up to 1000 events can be downloaded from the Audit Log UI to a local file.
Access an Audit Log via API
An Audit Log can be accessed using the Temporal Cloud Ops API. Use the API to access an Audit Log if you wish to make dashboards for viewing an Audit Log outside of Temporal Cloud. If your goal is to export an Audit Log, it is better to use an Audit Log sink and capture each entry as it is generated.
Audit logs are accessible for the past 30 days using the API.
The API allows:
- StartTimeInclusive: Filter for UTC time >= (defaults to 30 days ago) - optional
- EndTimeExclusive: Filter for UTC time < (defaults to current time) - optional
- PageSize: Cannot exceed 1000. Defaults to 100. - optional
- PageToken: The page token if this is continuing from another response - optional