pub enum Request {
Propose(ProposedCommand),
Resolve(Resolution),
Observe(Observation),
Record(ProposedCommand),
ListPending,
PendingStatus {
id: String,
},
Approve {
id: String,
},
Deny {
id: String,
},
Status,
AuthBegin {
op: String,
},
Shutdown {
op: String,
nonce: String,
proof: String,
},
}Expand description
A request from interception to the daemon.
Variants§
Propose(ProposedCommand)
“Here is a command I’m about to run — what’s the verdict?”
Resolve(Resolution)
“A human resolved a held command; record it (and maybe remember it).”
Observe(Observation)
“I observed a filesystem change that bypassed interception — just record it.” The backstop sends these so the daemon’s single writer keeps the hash chain intact.
Record(ProposedCommand)
“A human (no AI agent) already ran this shell command — record it for the audit trail.” Passive session recording: the daemon classifies it (so a destructive command is flagged in the timeline) but never blocks or snapshots, because by the time we hear about it the command has run.
ListPending
“List the commands currently held for approval.”
PendingStatus
“What is the status of this queued command?” (pending/approved/denied).
Approve
“A human approved this queued command id.”
Deny
“A human denied this queued command id.”
Status
“What is the daemon’s runtime status?” — currently the active scorer, so callers can tell whether the local model loaded or it’s on the heuristic fallback.
AuthBegin
“I want to perform a privileged operation op (e.g. shutdown) — give me a
challenge.” The daemon replies with a Response::Challenge. Auth is
enforced by the daemon, against the vault IT loaded at startup, so the
caller’s environment can’t point the check at a different/empty vault.
Shutdown
“Here is the challenge proof for op; do it.” Currently only shutdown.