pub enum OutputSanitization {
None,
SanitizeTokens,
Quarantine,
SanitizeTagged(&'static str),
SanitizeWithNotice {
tag: &'static str,
notice: &'static str,
},
}Expand description
Automatic prompt-injection sanitization policy applied to tool outputs.
Secure by default: the default is OutputSanitization::SanitizeTokens.
Raw, unmodified output requires an explicit opt-out.
Configure it on a tool via:
#[llm_tool(quarantine)]/#[llm_tool(sanitize = "tag")]for stronger envelopes#[llm_tool(sanitization = "none")](orsanitize = false) to opt outRustTool::OUTPUT_SANITIZATIONon manual impls
ToolRegistry::with_output_floor enforces a
registry-wide minimum (also SanitizeTokens by default), so a single tool that opts out
still gets the floor unless the registry floor is lowered too.
Or on individual return values / struct fields via Sanitized<T>
and Untrusted<T> (Quarantined<T>).
Variants§
None
Do not modify the tool output. Must be chosen explicitly.
SanitizeTokens
Neutralize all known LLM control/turn/tool delimiters (DELIMITER_RULES)
and breakout tags in-place without adding outer XML boundary tags (already-valid
boundary envelopes are preserved unchanged). This is the default.
Quarantine
Neutralize all known LLM control/turn/tool delimiters (DELIMITER_RULES)
and idempotently wrap the output in a <tool_output_quarantine> XML envelope
via quarantine_tool_output.
SanitizeTagged(&'static str)
Neutralize control delimiters and wrap output in a <tag> boundary envelope
with the default boundary notice.
SanitizeWithNotice
Neutralize control delimiters and wrap output in a <tag> boundary envelope
with a custom boundary notice.
Implementations§
Source§impl OutputSanitization
impl OutputSanitization
Sourcepub const fn at_least(self, floor: Self) -> Self
pub const fn at_least(self, floor: Self) -> Self
Return the more protective of self and floor.
Ties keep self, so a tool’s own envelope (e.g. a custom tag) is never
replaced by an equally strong floor.
Sourcepub const fn is_none(&self) -> bool
pub const fn is_none(&self) -> bool
Returns true if the policy is OutputSanitization::None.
Sourcepub const fn sanitizes_tokens(self) -> bool
pub const fn sanitizes_tokens(self) -> bool
Returns true if this policy neutralizes control tokens.
Sourcepub const fn is_quarantined(self) -> bool
pub const fn is_quarantined(self) -> bool
Returns true if this policy wraps output in an XML boundary envelope.
Sourcepub fn apply(self, output: ToolOutput) -> ToolOutput
pub fn apply(self, output: ToolOutput) -> ToolOutput
Apply this sanitization policy to a ToolOutput.
Trait Implementations§
Source§impl Clone for OutputSanitization
impl Clone for OutputSanitization
impl Copy for OutputSanitization
Source§impl Debug for OutputSanitization
impl Debug for OutputSanitization
Source§impl Default for OutputSanitization
impl Default for OutputSanitization
Source§impl<'de> Deserialize<'de> for OutputSanitization
impl<'de> Deserialize<'de> for OutputSanitization
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 OutputSanitization
Source§impl Hash for OutputSanitization
impl Hash for OutputSanitization
Source§impl JsonSchema for OutputSanitization
impl JsonSchema for OutputSanitization
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for OutputSanitization
impl PartialEq for OutputSanitization
Source§impl Serialize for OutputSanitization
impl Serialize for OutputSanitization
impl StructuralPartialEq for OutputSanitization
Auto Trait Implementations§
impl Freeze for OutputSanitization
impl RefUnwindSafe for OutputSanitization
impl Send for OutputSanitization
impl Sync for OutputSanitization
impl Unpin for OutputSanitization
impl UnsafeUnpin for OutputSanitization
impl UnwindSafe for OutputSanitization
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<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.