pub enum SessionEvent {
Show 16 variants
Miss,
ComplianceMiss,
ComplianceHit,
EditConsulted,
EditBlocked,
FloorConsultMiss,
PolicyConsultMiss,
PolicyConsultHit,
PolicySteered,
CodexShellMiss,
CodexShellBlocked,
UnclassifiedPolicyLiteralBypass,
Bootstrap,
PromptNudge,
WrappedDbClientMiss,
TombstoneBypassedDeny,
}Expand description
Session analytics event types. Each maps to a daily aggregation key prefix.
Hit is NOT included — it has richer side effects and uses the separate
ConsultationHit command.
Variants§
Miss
ComplianceMiss
ComplianceHit
EditConsulted
Claude edit gate: an edit DEFERRED because a recent consultation receipt
exists. Records AllowAfterReceipt with an edit-specific reason code, so
the audit trail proves the edit (not just the read) was preceded by a
consult (Plane 2 evidence).
EditBlocked
Claude edit gate: an edit was DENIED (stale or shell-evaded — no recent
consult). Records Deny with an edit-specific reason code.
FloorConsultMiss
Enterprise floor mandate: an unconsulted access to a consult-required path was DENIED.
Records Deny with reason floor_consult_required (distinct from gotcha denies).
PolicyConsultMiss
Local policy denied an unconsulted governed action.
PolicyConsultHit
Local policy allowed an action after its receipt was present.
PolicySteered
Local policy injected steering context without changing the decision.
CodexShellMiss
CodexShellBlocked
Codex PRE-hook (codex-pre-bash / codex-pre-apply-patch) BLOCKED an
unconsulted access — the shell command or patch never ran. Records
Deny, unlike SessionEvent::CodexShellMiss, which the POST-bash
hook fires after the fact when nothing was denied.
UnclassifiedPolicyLiteralBypass
An unclassified command mentioned a meaningful literal from an active policy trigger; records a bypass signal without changing the decision.
Bootstrap
PromptNudge
WrappedDbClientMiss
Post-bash observed a command that passed is_schema_introspection but
whose leading word did not classify as db_client — an upstream
PreToolUse hook rewrote it (observed live: rtk psql …). The
consultation receipt this command should mint never mints, so a
db_client policy stays permanently unsatisfiable: a deadlock, not a
bypass. Diagnostic only; does not change any decision.
TombstoneBypassedDeny
The FileDeleted tombstone bypass fired on a caller-confirmed
deletion, suppressing a deny a qualifying confirmed gotcha would
otherwise have produced. Records BypassDetected — the decision
stayed Tombstone (allow), but the suppression is enforcement-
relevant and must reach the hash-chained log.
Trait Implementations§
Source§impl Clone for SessionEvent
impl Clone for SessionEvent
Source§fn clone(&self) -> SessionEvent
fn clone(&self) -> SessionEvent
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionEvent
impl Debug for SessionEvent
Source§impl<'de> Deserialize<'de> for SessionEvent
impl<'de> Deserialize<'de> for SessionEvent
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for SessionEvent
Source§impl PartialEq for SessionEvent
impl PartialEq for SessionEvent
Source§impl Serialize for SessionEvent
impl Serialize for SessionEvent
impl StructuralPartialEq for SessionEvent
Auto Trait Implementations§
impl Freeze for SessionEvent
impl RefUnwindSafe for SessionEvent
impl Send for SessionEvent
impl Sync for SessionEvent
impl Unpin for SessionEvent
impl UnsafeUnpin for SessionEvent
impl UnwindSafe for SessionEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> Fruit for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more