Audit log
arcodash keeps an append-only audit log of administrative and security-relevant actions in your organization. Reading it requires admin access.
What’s recorded
Every event carries:
| Field | Meaning |
|---|---|
action |
What happened, e.g. user.disabled, group.role_attached (full list below). |
user_id |
Who did it. null for system-driven events, or a failed login where the account could not be identified. |
object_type / object_id |
What it happened to, e.g. "group" / 42. null only for a failed login, which has no identified target. |
additional_properties |
Action-specific detail as JSON, for example, group.member_added records the user_id that was added. |
created_at |
When it happened. |
Actions recorded today (the log is broader than administration):
- Users:
user.invited,user.invitation_resent,user.invitation_revoked,user.updated,user.disabled,user.api_key_regenerated,user.api_keys_revoked,user.password_changed,user.groups_synced - Sign-in:
user.login,user.login_failed,user.logout - Groups:
group.created,group.updated,group.deleted,group.member_added,group.member_removed,group.data_source_assigned,group.data_source_removed,group.data_source_access_restricted_set,group.role_attached,group.role_detached - Roles and permissions:
role.created,role.updated,role.deleted,permission.granted,permission.revoked,object.visibility_changed - Connectors:
data_source.created,data_source.updated,data_source.deleted,data_source.paused,data_source.resumed - Dashboards:
dashboard.created,dashboard.updated,dashboard.layout_saved,dashboard.published,dashboard.unpublished,dashboard.discarded,dashboard.archived,dashboard.share_token_minted,dashboard.link_rotated,dashboard.link_revoked - Queries and visualizations:
query.created,query.updated,query.published,query.unpublished,query.discarded,query.reverted,query.restored,query.forked,query.deleted,query.result_downloaded,query.executed,query.execution_failed,query.execution_cancelled,visualization.created,visualization.updated,visualization.deleted,widget.created,widget.updated,widget.deleted - Monitors:
monitor.created,monitor.updated,monitor.deleted,monitor.muted,monitor.unmuted,monitor.snoozed,monitor.snooze_cleared,monitor.acknowledged,monitor.state_changed,monitor.escalated - Notifications:
destination.created,destination.updated,destination.deleted,destination.tested,notification.delivery_failed - Schedules and runs:
schedule.created,schedule.updated,schedule.deleted,run.triggered,run.result_downloaded - Embeds and public links:
embed.created,embed.revoked,embed.public_paused,embed.public_resumed - Organization and AI settings:
organization.updated, plusai_settings.*events for provider keys, model, budget, and feature toggles
What’s not recorded
The audit log is not a complete history of everything. Read-only activity such as viewing a dashboard or browsing a query is not recorded, and neither is accepting an invitation or creating an organization.
For a query’s own version history, see Versions, drafts, and publishing; that is per-query, not a searchable organization-wide log.
Filtering
The audit log is paginated (page, page_size, capped at 250 per page, 25 by default) and can be
filtered by any combination of:
user_id: everything one person did.action: every occurrence of a specific action, e.g. allgroup.role_attachedevents.object_type: every event against a given kind of object, e.g. all"data_source"events.
Combine filters to narrow further; user_id + object_type answers “what did this admin do to
connectors,” for example.
Where to go next
- System status, the operational counterpart to the audit log, for what’s happening right now rather than what already happened.
- Data handling & privacy, what arcodash stores, caches, and encrypts, including what an audit entry does and doesn’t contain.