tui: pass active permission profiles through app commands

This commit is contained in:
Michael Bolin
2026-05-15 13:08:38 -07:00
parent fcaccf38b7
commit aa5fa65f85
19 changed files with 184 additions and 70 deletions
@@ -1,3 +1,7 @@
use codex_protocol::models::ActivePermissionProfile;
use codex_protocol::models::BUILT_IN_PERMISSION_PROFILE_DANGER_FULL_ACCESS;
use codex_protocol::models::BUILT_IN_PERMISSION_PROFILE_READ_ONLY;
use codex_protocol::models::BUILT_IN_PERMISSION_PROFILE_WORKSPACE;
use codex_protocol::models::PermissionProfile;
use codex_protocol::protocol::AskForApproval;
@@ -12,6 +16,8 @@ pub struct ApprovalPreset {
pub description: &'static str,
/// Approval policy to apply.
pub approval: AskForApproval,
/// Built-in permission profile selected by this preset.
pub active_permission_profile: ActivePermissionProfile,
/// Permission profile to apply.
pub permission_profile: PermissionProfile,
}
@@ -26,6 +32,9 @@ pub fn builtin_approval_presets() -> Vec<ApprovalPreset> {
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,
active_permission_profile: ActivePermissionProfile::new(
BUILT_IN_PERMISSION_PROFILE_READ_ONLY,
),
permission_profile: PermissionProfile::read_only(),
},
ApprovalPreset {
@@ -33,6 +42,9 @@ pub fn builtin_approval_presets() -> Vec<ApprovalPreset> {
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,
active_permission_profile: ActivePermissionProfile::new(
BUILT_IN_PERMISSION_PROFILE_WORKSPACE,
),
permission_profile: PermissionProfile::workspace_write(),
},
ApprovalPreset {
@@ -40,6 +52,9 @@ pub fn builtin_approval_presets() -> Vec<ApprovalPreset> {
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,
active_permission_profile: ActivePermissionProfile::new(
BUILT_IN_PERMISSION_PROFILE_DANGER_FULL_ACCESS,
),
permission_profile: PermissionProfile::Disabled,
},
]