pub enum DenyReason {
UserDeny {
entity: EntityRef,
user_id: UserId,
justification: Option<String>,
},
RoleDeny {
entity: EntityRef,
role: String,
justification: Option<String>,
},
NotAssigned {
entity: EntityRef,
user_id: UserId,
roles: Vec<String>,
},
UnknownEntity {
entity: EntityRef,
},
HookUnavailable {
policy: String,
},
PolicyViolation {
policy: String,
detail: Cow<'static, str>,
},
SecretLeak {
pattern_id: SecretPatternId,
pattern_name: Cow<'static, str>,
location: SecretLocation,
},
ScopeViolation {
tool: McpToolName,
required: AccessScope,
},
ToolBlocked {
tool: McpToolName,
list_id: String,
},
RateLimitExceeded {
window: RateLimitWindow,
retry_after_ms: u64,
},
}Expand description
Structured deny rationale.
Variants cover both the user→entity resolver
(UserDeny, RoleDeny, NotAssigned, UnknownEntity),
the hook plane (HookUnavailable), and the tool-use governance chain
(SecretLeak, ScopeViolation, ToolBlocked, RateLimitExceeded). The
human-readable #[error] strings double as the reason column in the
governance_decisions audit row.
Variants§
UserDeny
RoleDeny
NotAssigned
UnknownEntity
PolicyViolation
Deny issued by an extension authz hook (via register_authz_hook!
or AppContextBuilder::with_authz_hook). The outer
AuthzDecision::Deny.policy carries the policy identifier
(e.g. "abac.itar"); detail is the human-readable reason.
SecretLeak
ScopeViolation
ToolBlocked
RateLimitExceeded
Trait Implementations§
Source§impl Clone for DenyReason
impl Clone for DenyReason
Source§fn clone(&self) -> DenyReason
fn clone(&self) -> DenyReason
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for DenyReason
impl Debug for DenyReason
Source§impl<'de> Deserialize<'de> for DenyReason
impl<'de> Deserialize<'de> for DenyReason
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Display for DenyReason
impl Display for DenyReason
Source§impl Error for DenyReason
impl Error for DenyReason
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Source§impl PartialEq for DenyReason
impl PartialEq for DenyReason
Source§fn eq(&self, other: &DenyReason) -> bool
fn eq(&self, other: &DenyReason) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for DenyReason
impl Serialize for DenyReason
impl Eq for DenyReason
impl StructuralPartialEq for DenyReason
Auto Trait Implementations§
impl Freeze for DenyReason
impl RefUnwindSafe for DenyReason
impl Send for DenyReason
impl Sync for DenyReason
impl Unpin for DenyReason
impl UnsafeUnpin for DenyReason
impl UnwindSafe for DenyReason
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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
Compare self to
key and return true if they are equal.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>
Converts
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>
Converts
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