use codex_core::protocol::AskForApproval; use codex_core::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 and answer questions. Codex requires approval to make edits, run commands, or access network.", approval: AskForApproval::OnRequest, sandbox: SandboxPolicy::ReadOnly, }, ApprovalPreset { id: "auto", label: "Auto", description: "Codex can read files, make edits, and run commands in the workspace. Codex requires approval to work outside the workspace or access network.", approval: AskForApproval::OnRequest, sandbox: SandboxPolicy::new_workspace_write_policy(), }, ApprovalPreset { id: "full-access", label: "Full Access", description: "Codex can read files, make edits, and run commands with network access, without approval. Exercise caution.", approval: AskForApproval::Never, sandbox: SandboxPolicy::DangerFullAccess, }, ] }