use codex_protocol::protocol::AskForApproval; use codex_protocol::protocol::SandboxPolicy; /// A simple preset pairing an approval policy with a sandbox policy. #[derive(Debug, Clone)] pub struct ApprovalPreset { /// Stable identifier for the preset. pub id: &'static str, /// Display label shown in UIs. pub label: &'static str, /// Short human description shown next to the label in UIs. pub description: &'static str, /// Approval policy to apply. pub approval: AskForApproval, /// Sandbox policy to apply. pub sandbox: SandboxPolicy, } /// Built-in list of approval presets that pair approval and sandbox policy. /// /// Keep this UI-agnostic so it can be reused by both TUI and MCP server. pub fn builtin_approval_presets() -> Vec { vec![ ApprovalPreset { id: "read-only", label: "Read Only", description: "Codex can read files in the current workspace. Approval is required to edit files or access the internet.", approval: AskForApproval::OnRequest, sandbox: SandboxPolicy::new_read_only_policy(), }, ApprovalPreset { id: "auto", label: "Default", description: "Codex can read and edit files in the current workspace, and run commands. Approval is required to access the internet or edit other files. (Identical to Agent mode)", approval: AskForApproval::OnRequest, sandbox: SandboxPolicy::new_workspace_write_policy(), }, ApprovalPreset { id: "full-access", label: "Full Access", description: "Codex can edit files outside this workspace and access the internet without asking for approval. Exercise caution when using.", approval: AskForApproval::Never, sandbox: SandboxPolicy::DangerFullAccess, }, ] }