Skip to main content
Audit logs provide a queryable record of all actions in your organization: who performed an operation, on which resource, and when. Use them for security monitoring, compliance reporting, and troubleshooting.
Available on the Enterprise plan. Contact sales to learn more.

Access requirements

Organization admins and members with the Audit Log Reader role can access audit logs. Regular members cannot access audit logs, even for resources they own.

Entry structure

Each entry contains:
  • Actor: Who (user, service account, runner, or system)
  • Subject: What resource and type
  • Action: Operation performed (e.g., “Environment created”)
  • Timestamp: When
  • Organization: Which org
  • Kind: The typed event kind when structured details are available

What gets logged

All create, update, and delete operations on:
Veto Exec enforcement entries are in preview and only appear for organizations where this preview is enabled.
Veto Exec enforcement events appear as environment audit entries when enabled. Their kinds distinguish blocked and audited executions:
  • AUDIT_LOG_ENTRY_KIND_AGENT_SECURITY_EXEC_BLOCKED
  • AUDIT_LOG_ENTRY_KIND_AGENT_SECURITY_EXEC_AUDITED
The action includes the kernel-resolved filename and full executable digest when reported:
  • Filename and digest: Veto Exec blocked: <filename> (<hash>)
  • Filename only: Veto Exec blocked: <filename>
  • Digest only: Veto Exec blocked: <hash>
  • Neither: Veto Exec blocked an executable
Audited events use audited in place of blocked. The entry timestamp records when Ona received the event. Veto Exec details include the reported event data except process.cmdline, which is omitted because it may contain credentials or other sensitive data. Actor types:

Querying audit logs

CLI

The ona CLI (pre-installed in all environments) is the simplest way to query audit logs.
Filter by actor:
Filter by subject:
Filter by time range:
Combine filters:
Export formats:
Example output:

API

For programmatic access and SIEM integration, use the REST API.
The examples use https://app.gitpod.io. If your organization uses a custom domain, replace this origin with your organization’s dashboard domain. Basic request:
Filter by actor:
Filter by subject:
Pagination:
Response format:
ListAuditLogs returns summary fields and the optional kind. It does not return the details payload. Retrieve one entry with typed details:
For a Veto Exec entry, the response contains a vetoExec details case:
The details field is optional. Clients must handle entries without details and unknown future detail types.

Real-time event monitoring

For real-time notifications instead of historical queries, use the WatchEvents API. This streaming endpoint pushes events as they occur. Use it for dashboards, automation triggers, and live monitoring.

Key differences

WatchEvents with Python

Install the official SDK:
The GITPOD_API_KEY environment variable should contain your Personal Access Token. You only receive events for resources you have read access to.
Watch organization events:
Watch environment-specific events:
Async usage:

Event operations

  • RESOURCE_OPERATION_CREATE - Resource created
  • RESOURCE_OPERATION_UPDATE - Resource modified
  • RESOURCE_OPERATION_UPDATE_STATUS - Status changed only
  • RESOURCE_OPERATION_DELETE - Resource deleted

Other languages

For languages without an official SDK, use gRPC/Connect-compatible clients: Endpoint: POST https://app.gitpod.io/api/gitpod.v1.EventService/WatchEvents Headers:
  • Content-Type: application/json
  • Accept: application/jsonl
  • Authorization: Bearer YOUR_API_KEY
Request body (organization scope):
Request body (environment scope):
See the WatchEvents API reference for details.

Common use cases

Security monitoring

Compliance reporting

Troubleshooting

Resource lifecycle tracking

Best practices

Regular monitoring
  • Export audit logs periodically to external storage for long-term retention
  • Integrate with your SIEM for centralized security monitoring
  • Establish baseline patterns and investigate anomalies
Access control
  • Grant Organization Admin role only to users who need audit log access
  • Use dedicated service accounts for automated log collection
  • Rotate Personal Access Tokens regularly
Filtering & analysis
  • Prioritize monitoring security-sensitive resource types
  • Combine multiple filter criteria to narrow results
  • Export to JSON/YAML for integration with analysis tools

Limitations

  • Retention: Audit logs are retained according to your organization’s data retention policy
  • Rate limits: API requests subject to standard rate limiting
  • Filter limits: Maximum 25 values per filter type per request
  • Pagination: Maximum 100 entries per page