-
Notifications
You must be signed in to change notification settings - Fork 3
Durable permission-decision audit trail (approvals, sandbox scope, hook verdicts) #656
Copy link
Copy link
Open
Labels
area:securitySecurity boundaries, permissions, secrets, and hardeningSecurity boundaries, permissions, secrets, and hardeningarea:storagePersistence, threads, memories, and migrationPersistence, threads, memories, and migrationenhancementNew feature or requestNew feature or requestpriority:p2Important issue to address soonImportant issue to address soonsecuritySecurity vulnerability or hardeningSecurity vulnerability or hardeningstatus:needs-verificationLikely implemented or stale; verify acceptance criteria before closingLikely implemented or stale; verify acceptance criteria before closing
Milestone
Description
Activity
Metadata
Metadata
Assignees
Labels
area:securitySecurity boundaries, permissions, secrets, and hardeningSecurity boundaries, permissions, secrets, and hardeningarea:storagePersistence, threads, memories, and migrationPersistence, threads, memories, and migrationenhancementNew feature or requestNew feature or requestpriority:p2Important issue to address soonImportant issue to address soonsecuritySecurity vulnerability or hardeningSecurity vulnerability or hardeningstatus:needs-verificationLikely implemented or stale; verify acceptance criteria before closingLikely implemented or stale; verify acceptance criteria before closing
Summary
Persist an append-only, exportable, machine-readable log of every control-plane decision — tool approvals/denials, "remember" grants, sandbox-scope classifications, and hook allow/block verdicts — separate from the conversation transcript.
What #644 / #647 already cover
The filesystem-native chat store (#644, landing via #647) already gives an append-only, machine-readable, exportable substrate for the conversation: the
events.jsonlspine + byte-preserving OKF message files + per-projectcatalog.jsonl+ content hashing + a Phase-6 export reconciliation. So "what the agent did" (tool calls + their results) is already auditable and evaluatable.What it does not cover — the gap
The permission/decision layer around those tool calls is not persisted anywhere durable:
src/main/services/approval.ts,src/renderer/views/approval-dialog.ts(in-memory for the session only).src/main/services/safety-classifier.ts.src/main/services/cursor-hooks.ts.src/main/project-sandbox/.None of these are queryable once the session ends, so you can't answer "what did I approve, when, at what scope, and did I make it sticky?"
Scope
src/shared/threads/patterns; land it under~/.copse), keyed back to thread/turn.Related
#644 / #647 (thread-spine substrate), #645 (OKF knowledge store), #639 (hooks parity).