pub struct SecurityPolicy {Show 14 fields
pub mode: SecurityMode,
pub spotlight_external: bool,
pub neutralize_special_tokens: bool,
pub destyle_untrusted: bool,
pub trifecta_gate: bool,
pub pin_mcp_schemas: bool,
pub authenticate_directives: bool,
pub taint_file_provenance: bool,
pub precise_exfil_gate: bool,
pub gate_secret_reads: bool,
pub detect_injection: bool,
pub guard_threshold_percent: u8,
pub guard_model: String,
pub trusted_mcp_servers: Vec<String>,
}Expand description
Resolved, runtime-readable security policy. Derived from SecurityConfig;
the default is spotlight-on.
Fields§
§mode: SecurityMode§spotlight_external: boolFrame untrusted external output in spotlight delimiters.
neutralize_special_tokens: boolNeutralize reserved chat-template special tokens inside untrusted spans so they cannot hijack turn segmentation (ChatBug / ChatInject / MetaBreak).
destyle_untrusted: boolDestyle forged turn/reasoning markers (role-label prefixes, <think> tags)
inside untrusted spans so they cannot read as a real turn or thought.
trifecta_gate: boolApply the lethal-trifecta gate (force approval when tainted context reaches an exfiltration-capable / destructive tool).
pin_mcp_schemas: boolPin + hash MCP tool schemas and require re-approval on change.
authenticate_directives: boolAuthenticate cross-agent / orchestration directives on the read path: a
directive-looking span (Orchestrator directive: …) that lacks a valid
process-scoped provenance stamp is tagged TrustLevel::Untrusted and
quarantined, so a forged directive embedded in an untrusted subagent
result cannot be obeyed as authoritative. Default OFF (net-new
enforcement); byte-identical behaviour when disabled.
taint_file_provenance: boolTrack untrusted-origin file provenance: a file written while untrusted content is in context (or by a fetch/clone/MCP step) is recorded, and a later read of it is classified untrusted so it flows into the same taint / trifecta gate. First-party file reads stay trusted. Default OFF (net-new enforcement); byte-identical behaviour when disabled.
precise_exfil_gate: boolNarrow the exfil axis of the lethal-trifecta gate to the real attack signature: fire only when the sink’s destination is attacker-originated (an endpoint seen in untrusted content) or the payload ships a secret, instead of on any exfil-capable tool while any untrusted content is in context. Cuts false confirmations on benign research/synthesis to a user-named destination. Default OFF (the coarse gate is byte-identical); when on it only ever narrows what gates (fail-safe on unknown sinks).
gate_secret_reads: boolAlso gate first-party secret/credential reads while tainted.
detect_injection: boolScore untrusted content with an injection classifier (Layer 2) and let a
flagged score tighten the trifecta gate. Implied by local-ml mode.
guard_threshold_percent: u8Flag threshold as a percent in [0, 100] (see SecurityConfig).
guard_model: StringNeural-classifier selector resolved by the host’s lazy loader seam (see
set_injection_classifier_loader). Empty keeps the heuristic.
trusted_mcp_servers: Vec<String>MCP servers the operator has explicitly trusted (skip taint + pin).
Implementations§
Source§impl SecurityPolicy
impl SecurityPolicy
pub fn from_config(config: &SecurityConfig) -> Self
pub fn is_off(&self) -> bool
pub fn server_is_trusted(&self, server: &str) -> bool
Trait Implementations§
Source§impl Clone for SecurityPolicy
impl Clone for SecurityPolicy
Source§fn clone(&self) -> SecurityPolicy
fn clone(&self) -> SecurityPolicy
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 SecurityPolicy
impl Debug for SecurityPolicy
Source§impl Default for SecurityPolicy
impl Default for SecurityPolicy
impl Eq for SecurityPolicy
Source§impl PartialEq for SecurityPolicy
impl PartialEq for SecurityPolicy
Source§fn eq(&self, other: &SecurityPolicy) -> bool
fn eq(&self, other: &SecurityPolicy) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for SecurityPolicy
Auto Trait Implementations§
impl Freeze for SecurityPolicy
impl RefUnwindSafe for SecurityPolicy
impl Send for SecurityPolicy
impl Sync for SecurityPolicy
impl Unpin for SecurityPolicy
impl UnsafeUnpin for SecurityPolicy
impl UnwindSafe for SecurityPolicy
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<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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);