# Audit Logging CleverAgents records security-relevant operations in an `audit_log` table for compliance, post-hoc analysis, and diagnostics. ## Event Types | Event Type | Trigger | Details Captured | |---|---|---| | `plan_applied` | `agents plan apply` | Plan ID, project, files changed, validation results | | `plan_cancelled` | `agents plan cancel` | Plan ID, reason, resources released | | `resource_modified` | Tool write during Execute | Resource ID, modification type, tool name | | `correction_applied` | `agents plan correct` | Correction ID, original decision, mode, guidance | | `config_changed` | `agents config set` | Key, old/new values (masked if secret) | | `entity_deleted` | `agents delete` | Entity type, entity name, cascade effects | | `session_created` | `agents session create` | Session ID, actor name | ## CLI Commands ### `agents audit list` List audit entries with optional filters. ```bash # List recent entries agents audit list # Filter by plan agents audit list --plan 01HXYZ123 # Filter by project and time range agents audit list --project myproject --since 2026-02-01T00:00:00 # Filter by event type with limit agents audit list --type plan_applied --limit 10 ``` ### `agents audit show ` Display a single entry with full metadata and JSON details. ```bash agents audit show 42 ``` ### `agents audit prune` Delete entries older than the retention period. ```bash # Use configured retention (default: keep indefinitely) agents audit prune --yes # Override retention to 90 days agents audit prune --days 90 --yes ``` ### `agents audit count` Display the total number of audit log entries. ```bash agents audit count ``` ## Configuration | Setting | Environment Variable | Default | Description | |---|---|---|---| | `audit_retention_days` | `CLEVERAGENTS_AUDIT_RETENTION_DAYS` | `0` | Days to retain entries. `0` = keep indefinitely. | ## Database Schema ```sql CREATE TABLE audit_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, event_type TEXT NOT NULL, plan_id TEXT, project_name TEXT, actor_name TEXT, user_identity TEXT, details TEXT NOT NULL, -- JSON created_at TEXT NOT NULL ); CREATE INDEX idx_audit_event ON audit_log(event_type); CREATE INDEX idx_audit_plan ON audit_log(plan_id) WHERE plan_id IS NOT NULL; CREATE INDEX idx_audit_created ON audit_log(created_at); ``` ## Retention Policy By default, audit logs are retained indefinitely (`audit_retention_days=0`) for compliance purposes. Use `agents audit prune` to manually remove old entries, or set a non-zero retention to enable periodic pruning. ## Recording Events The `AuditService.record()` method writes events: ```python from cleveragents.application.services.audit_service import AuditService from cleveragents.config.settings import get_settings service = AuditService(settings=get_settings()) service.record( event_type="plan_applied", plan_id="01HXYZ123", project_name="my-project", actor_name="openai/gpt-4o", details={"files_changed": 3, "validation_passed": True}, ) ```