pub struct ExtensionPolicy {
pub mode: ExtensionPolicyMode,
pub max_memory_mb: u32,
pub default_caps: Vec<String>,
pub deny_caps: Vec<String>,
pub per_extension: HashMap<String, ExtensionOverride>,
pub exec_mediation: ExecMediationPolicy,
pub secret_broker: SecretBrokerPolicy,
}Fields§
§mode: ExtensionPolicyMode§max_memory_mb: u32§default_caps: Vec<String>§deny_caps: Vec<String>§per_extension: HashMap<String, ExtensionOverride>Per-extension overrides keyed by extension ID.
exec_mediation: ExecMediationPolicyExec mediation policy (SEC-4.3). Controls command-level allow/deny after capability-level exec is granted.
secret_broker: SecretBrokerPolicySecret broker policy (SEC-4.3). Controls redaction of secret env vars and prevents raw disclosure when policy forbids it.
Implementations§
Source§impl ExtensionPolicy
impl ExtensionPolicy
Sourcepub fn evaluate(&self, capability: &str) -> PolicyCheck
pub fn evaluate(&self, capability: &str) -> PolicyCheck
Evaluate policy for a capability without extension context.
Equivalent to evaluate_for(capability, None).
Sourcepub fn evaluate_for(
&self,
capability: &str,
extension_id: Option<&str>,
) -> PolicyCheck
pub fn evaluate_for( &self, capability: &str, extension_id: Option<&str>, ) -> PolicyCheck
Evaluate policy for a capability with optional extension context.
Applies the full precedence chain documented above.
Sourcepub fn has_override(&self, extension_id: &str) -> bool
pub fn has_override(&self, extension_id: &str) -> bool
Check whether a specific extension has any overrides configured.
Sourcepub fn from_profile(profile: PolicyProfile) -> Self
pub fn from_profile(profile: PolicyProfile) -> Self
Create a policy from a named profile.
Sourcepub fn explain_effective_policy(
&self,
extension_id: Option<&str>,
) -> PolicyExplanation
pub fn explain_effective_policy( &self, extension_id: Option<&str>, ) -> PolicyExplanation
Produce a structured explanation of the effective policy for all
known capabilities. This is the runtime-callable counterpart to the
CLI --explain-extension-policy flag — it can be invoked at any
point during execution to inspect the live policy state.
Sourcepub fn is_valid_downgrade(from: &Self, to: &Self) -> ProfileTransitionCheck
pub fn is_valid_downgrade(from: &Self, to: &Self) -> ProfileTransitionCheck
Verify that a profile transition from from to to produces a
strictly tighter policy for dangerous capabilities. Returns true
if the downgrade is valid (all dangerous caps that were denied in
from are still denied in to, AND to denies at least as many).
Trait Implementations§
Source§impl Clone for ExtensionPolicy
impl Clone for ExtensionPolicy
Source§fn clone(&self) -> ExtensionPolicy
fn clone(&self) -> ExtensionPolicy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExtensionPolicy
impl Debug for ExtensionPolicy
Source§impl Default for ExtensionPolicy
impl Default for ExtensionPolicy
Source§impl<'de> Deserialize<'de> for ExtensionPolicywhere
ExtensionPolicy: Default,
impl<'de> Deserialize<'de> for ExtensionPolicywhere
ExtensionPolicy: Default,
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>,
Auto Trait Implementations§
impl Freeze for ExtensionPolicy
impl RefUnwindSafe for ExtensionPolicy
impl Send for ExtensionPolicy
impl Sync for ExtensionPolicy
impl Unpin for ExtensionPolicy
impl UnsafeUnpin for ExtensionPolicy
impl UnwindSafe for ExtensionPolicy
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
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 moreSource§impl<T> ModelDump for Twhere
T: Serialize,
impl<T> ModelDump for Twhere
T: Serialize,
Source§fn model_dump(&self, options: DumpOptions) -> Result<Value, Error>
fn model_dump(&self, options: DumpOptions) -> Result<Value, Error>
Source§fn model_dump_json(&self) -> Result<String, Error>
fn model_dump_json(&self) -> Result<String, Error>
Source§fn model_dump_json_pretty(&self) -> Result<String, Error>
fn model_dump_json_pretty(&self) -> Result<String, Error>
Source§fn model_dump_json_with_options(
&self,
options: DumpOptions,
) -> Result<String, Error>
fn model_dump_json_with_options( &self, options: DumpOptions, ) -> Result<String, Error>
Source§impl<T> ModelValidate for Twhere
T: DeserializeOwned,
impl<T> ModelValidate for Twhere
T: DeserializeOwned,
Source§fn model_validate(
input: impl Into<ValidateInput>,
options: ValidateOptions,
) -> Result<T, ValidationError>
fn model_validate( input: impl Into<ValidateInput>, options: ValidateOptions, ) -> Result<T, ValidationError>
Source§fn model_validate_json(json: &str) -> Result<Self, ValidationError>
fn model_validate_json(json: &str) -> Result<Self, ValidationError>
Source§fn model_validate_dict(
dict: HashMap<String, Value>,
) -> Result<Self, ValidationError>
fn model_validate_dict( dict: HashMap<String, Value>, ) -> Result<Self, ValidationError>
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().