Skip to main content

NonInteractivePolicy

Struct NonInteractivePolicy 

Source
pub struct NonInteractivePolicy { /* private fields */ }
Expand description

Adapts any inner policy to a non-interactive semantics: when the inner policy returns PolicyDecision::Ask, it is downgraded to PolicyDecision::Deny; Allow / Deny are passed through unchanged.

Used for nested turns of a subagent (spawn_agent) — the subagent has no human present to answer permission requests. If Ask were allowed into the main loop, it would permanently hang on PermissionGate. Wrapping with this policy ensures the sub-turn never blocks and never escalates privileges: the subagent’s actual authorization is always ≤ that of the wrapped parent policy (what the parent would Ask, the child directly Denys).

This is a separate gate from “tool allowlist trimming”: the allowlist determines which tools the subagent sees, while this policy determines how much access is granted at runtime on those tools.

Implementations§

Trait Implementations§

Source§

impl SandboxPolicy for NonInteractivePolicy

Source§

fn classify(&self, ctx: PolicyCtx<'_>) -> PolicyDecision

Source§

fn record(&self, _ctx: PolicyCtx<'_>, _outcome: RecordedOutcome)

A write-back hook invoked after the user responds to an Ask. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoMaybeUndefined<T> for T

Source§

impl<T> IntoOption<T> for T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more