use codex_protocol::models::PermissionProfile; use codex_protocol::protocol::AskForApproval; /// A simple preset pairing an approval policy with a permission profile. #[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, /// Permission profile to apply. pub permission_profile: PermissionProfile, } /// Built-in list of approval presets that pair approval and permissions. /// /// 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, permission_profile: PermissionProfile::read_only(), }, 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, permission_profile: PermissionProfile::workspace_write(), }, 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, permission_profile: PermissionProfile::Disabled, }, ] }