Skip to content

Audit Logs

Every state-changing operation and sensitive read is logged. Audit logs are immutable and cannot be deleted.

coldrune audit list --org my-org
coldrune audit list --org my-org --action secret.set
coldrune audit list --org my-org --actor <user-id>
coldrune audit list --org my-org --resource-type secret
coldrune audit list --org my-org --limit 20 --after <cursor>

The cursor value is returned in the previous response when more entries are available.

ActionTrigger
auth.loginLogin code requested
auth.logoutSession invalidated
org.create / org.update / org.deleteOrganization changes
org.member_invite / org.member_remove / org.member_role_updateMembership changes
project.create / project.update / project.deleteProject changes
env.create / env.deleteEnvironment changes
secret.set / secret.read / secret.deleteSecret operations
acl.grant / acl.revokeAccess rule changes
service_account.create / service_account.revokeService account changes

Each log entry includes:

  • Actor: user email or service account name
  • Action: what happened
  • Resource: type and ID of the affected resource
  • Organization: which org context
  • IP address: client IP (from reverse proxy X-Real-Ip header)
  • Metadata: action-specific context (e.g., secret key name, version number)
  • Timestamp: UTC

Audit logs require org admin role or superadmin.

curl "http://localhost:7100/api/orgs/my-org/audit-logs?action=secret.set&limit=20" \
  -H 'Authorization: Bearer <token>'

Response:

{
  "data": [
    {
      "id": "...",
      "actor_type": "user",
      "actor_name": "alice@example.com",
      "action": "secret.set",
      "resource_type": "secret",
      "resource_id": "...",
      "ip_address": "203.0.113.1",
      "metadata": {"key": "DB_PASSWORD", "version": 2},
      "created_at": "2026-04-01T12:00:00Z"
    }
  ],
  "pagination": {
    "total": 142,
    "limit": 20,
    "has_next": true,
    "next_cursor": "..."
  }
}