Skip to main content

CommandPolicy

Struct CommandPolicy 

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

A PermissionPolicy that governs ShellPermissionRequests by checking the executable name, working directory, and environment variables.

Denied executables and env keys are rejected immediately. Allowed executables pass. Unknown executables either require approval or are denied, depending on require_approval_for_unknown.

§Example

use agentkit_tools_core::CommandPolicy;

let policy = CommandPolicy::new()
    .allow_executable("git")
    .allow_executable("cargo")
    .deny_executable("rm")
    .deny_env_key("AWS_SECRET_ACCESS_KEY")
    .allow_cwd("/workspace")
    .require_approval_for_unknown(true);

Implementations§

Source§

impl CommandPolicy

Source

pub fn new() -> Self

Creates a new command policy with no rules and approval required for unknown executables.

Source

pub fn allow_executable(self, executable: impl Into<String>) -> Self

Adds an executable name to the allow-list.

Source

pub fn deny_executable(self, executable: impl Into<String>) -> Self

Adds an executable name to the deny-list.

Source

pub fn allow_cwd(self, cwd: impl Into<PathBuf>) -> Self

Adds a directory root that commands are allowed to run in.

Source

pub fn deny_env_key(self, key: impl Into<String>) -> Self

Adds an environment variable name to the deny-list.

Source

pub fn require_approval_for_unknown(self, value: bool) -> Self

When true (the default), executables not in the allow-list trigger an approval request instead of an outright denial.

Trait Implementations§

Source§

impl Default for CommandPolicy

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PermissionPolicy for CommandPolicy

Source§

fn evaluate(&self, request: &dyn PermissionRequest) -> PolicyMatch

Evaluate the request and return a match or PolicyMatch::NoOpinion.

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, 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, 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.