Audit Log

How SikkerKey records every operation in an append-only audit trail.

Every operation in SikkerKey writes to an append-only audit log. Secret reads, authentication failures, permission changes, machine registrations, team invites, session management. Every entry records who did what, from where, and when.

What Gets Recorded

Each audit entry contains:

FieldDescription
ActionThe operation type (e.g. secret_read, auth_failure)
User IDThe vault owner's ID (if applicable)
Machine IDThe machine that performed the action (if applicable)
Secret IDThe secret involved (if applicable)
Source IPThe IP address the request came from
DetailHuman-readable description of what happened
TimestampMillisecond-precision Unix timestamp

Action Reference

Secret Actions

ActionWhen it fires
secret_readA machine successfully read a secret
secret_read_deniedA machine tried to read a secret it doesn't have access to
secret_createA secret was created from the dashboard
secret_updateA secret's value was replaced or rolled back
secret_deleteA secret was deleted
secret_rotateA machine rotated a secret via the SDK
secret_rotate_deniedA machine tried to rotate a secret it doesn't have access to
secret_note_updateA secret's note was edited

Machine Actions

ActionWhen it fires
machine_registerA new machine was registered via bootstrap
machine_approveA pending machine was approved
machine_denyA pending machine was denied and removed
machine_revokeAn approved machine was revoked and removed
machine_renameA machine was renamed

Project Actions

ActionWhen it fires
project_createA new project was created
project_updateA project was renamed or its description changed
project_deleteA project and all its contents were deleted
project_machine_addA machine was added to a project
project_machine_removeA machine was removed from a project

Access Control Actions

ActionWhen it fires
permission_grantA machine was granted access to secrets in a project
bootstrap_token_createA new bootstrap token was generated

Team Actions

ActionWhen it fires
team_inviteAn invite was sent to a user
team_invite_acceptedA user accepted a vault invite
team_invite_declinedA user declined a vault invite
team_invite_cancelledThe owner cancelled a pending invite
team_member_removeA team member was removed from the vault
team_permission_updateA team member's permissions were changed
team_joinedLogged on the invitee's audit when they join a vault

Authentication Actions

ActionWhen it fires
auth_failureA machine authentication attempt failed (missing headers, unknown machine, disabled machine, invalid signature, etc.)
login_successA user logged in via password
oauth_loginA user logged in via OAuth (GitHub)
user_registerA new user account was created

Account Actions

ActionWhen it fires
password_changeA user changed or set their password
2fa_enableTwo-factor authentication was enabled
2fa_disableTwo-factor authentication was disabled
session_revokeA user revoked a specific session
session_revoke_allA user revoked all other sessions

Real-Time Updates

When an audit entry is recorded, it is immediately pushed to the vault owner's dashboard via Server-Sent Events (SSE). The audit log page updates in real time without polling or page refresh.

Email Alerts

If the vault owner has email alerts configured for an action, an email is dispatched asynchronously when that action fires. This is non-blocking and does not delay the original request. Alert preferences are managed from the Alerts page.

For example, if you enable alerts for auth_failure, you receive an email every time a machine authentication attempt fails against your vault.

Dashboard Filtering

The audit log page supports filtering and searching:

FilterWhat it does
SearchSearches the detail text (debounced, 300ms)
ActionFilter by specific action type from a dropdown
Source IPFilter by exact source IP address
Time rangeFilter to last hour, 24 hours, 7 days, or 30 days

Filters are combined with AND logic. All filtering is done server-side with pagination. Click Clear to reset all filters.

Pagination

The audit log is paginated at 50 entries per page. The total entry count is shown at the bottom. Filters apply to the total count and pagination adjusts accordingly.

Team Member Actions

When a team member performs an action on a shared project (creating a secret, adding a machine, etc.), the audit entry is recorded on the vault owner's audit log with the team member's username in the detail string. For example:

  • "Secret 'db-password' created by team member 'alice'"
  • "Machine removed from project by 'bob'"

This gives the vault owner full visibility over what team members are doing in their shared projects.

What the Audit Log Does Not Contain

  • Decrypted secret values: the audit log records that a secret was read, created, or rotated, but never the plaintext value.
  • Passphrases: the passphrase is never logged.
  • Private keys: machine private keys are never transmitted to SikkerKey, so they cannot appear in the audit log.