pub trait Approvable<Req>: Send + Sync {
type ApprovalKey: Hash + Eq + Clone + Debug + Serialize + Send + Sync;
// Required methods
fn approval_key(&self, req: &Req) -> Self::ApprovalKey;
fn start_approval_async<'a>(
&'a mut self,
req: &'a Req,
ctx: ApprovalCtx<'a>,
) -> BoxFuture<'a, ReviewDecision>;
// Provided methods
fn sandbox_mode_for_first_attempt(&self, _req: &Req) -> SandboxOverride { ... }
fn should_bypass_approval(
&self,
policy: AskForApproval,
already_approved: bool,
) -> bool { ... }
fn exec_approval_requirement(
&self,
_req: &Req,
) -> Option<ExecApprovalRequirement> { ... }
fn wants_no_sandbox_approval(&self, policy: AskForApproval) -> bool { ... }
}Expand description
Trait for tools that require approval (from Codex)
Required Associated Types§
Required Methods§
Sourcefn approval_key(&self, req: &Req) -> Self::ApprovalKey
fn approval_key(&self, req: &Req) -> Self::ApprovalKey
Generate an approval key for the request
Sourcefn start_approval_async<'a>(
&'a mut self,
req: &'a Req,
ctx: ApprovalCtx<'a>,
) -> BoxFuture<'a, ReviewDecision>
fn start_approval_async<'a>( &'a mut self, req: &'a Req, ctx: ApprovalCtx<'a>, ) -> BoxFuture<'a, ReviewDecision>
Start the approval process asynchronously (from Codex)
Provided Methods§
Sourcefn sandbox_mode_for_first_attempt(&self, _req: &Req) -> SandboxOverride
fn sandbox_mode_for_first_attempt(&self, _req: &Req) -> SandboxOverride
Some tools may request to skip the sandbox on the first attempt
Sourcefn should_bypass_approval(
&self,
policy: AskForApproval,
already_approved: bool,
) -> bool
fn should_bypass_approval( &self, policy: AskForApproval, already_approved: bool, ) -> bool
Check if approval should be bypassed
Sourcefn exec_approval_requirement(
&self,
_req: &Req,
) -> Option<ExecApprovalRequirement>
fn exec_approval_requirement( &self, _req: &Req, ) -> Option<ExecApprovalRequirement>
Return custom exec approval requirement, or None for default
Sourcefn wants_no_sandbox_approval(&self, policy: AskForApproval) -> bool
fn wants_no_sandbox_approval(&self, policy: AskForApproval) -> bool
Decide if we can request approval for no-sandbox execution
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".