From 3726d82f08ffcf3e84cc97e96290c91a7b73c6c7 Mon Sep 17 00:00:00 2001 From: argenis de la rosa Date: Sun, 1 Mar 2026 14:55:27 -0500 Subject: [PATCH] feat(autonomy): expand practical defaults for real-world workflows --- src/config/schema.rs | 14 ++++++++++---- src/security/policy.rs | 10 ++++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/config/schema.rs b/src/config/schema.rs index 9a2d5b2f0..f31b8622c 100644 --- a/src/config/schema.rs +++ b/src/config/schema.rs @@ -3368,6 +3368,10 @@ impl Default for AutonomyConfig { "git".into(), "npm".into(), "cargo".into(), + "mkdir".into(), + "touch".into(), + "cp".into(), + "mv".into(), "ls".into(), "cat".into(), "grep".into(), @@ -3401,8 +3405,8 @@ impl Default for AutonomyConfig { "~/.aws".into(), "~/.config".into(), ], - max_actions_per_hour: 20, - max_cost_per_day_cents: 500, + max_actions_per_hour: 100, + max_cost_per_day_cents: 1000, require_approval_for_medium_risk: true, block_high_risk_commands: true, shell_env_passthrough: vec![], @@ -9417,10 +9421,12 @@ mod tests { assert_eq!(a.level, AutonomyLevel::Supervised); assert!(a.workspace_only); assert!(a.allowed_commands.contains(&"git".to_string())); + assert!(a.allowed_commands.contains(&"mkdir".to_string())); + assert!(a.allowed_commands.contains(&"touch".to_string())); assert!(a.allowed_commands.contains(&"cargo".to_string())); assert!(a.forbidden_paths.contains(&"/etc".to_string())); - assert_eq!(a.max_actions_per_hour, 20); - assert_eq!(a.max_cost_per_day_cents, 500); + assert_eq!(a.max_actions_per_hour, 100); + assert_eq!(a.max_cost_per_day_cents, 1000); assert!(a.require_approval_for_medium_risk); assert!(a.block_high_risk_commands); assert!(a.shell_env_passthrough.is_empty()); diff --git a/src/security/policy.rs b/src/security/policy.rs index 31335942f..91a65584d 100644 --- a/src/security/policy.rs +++ b/src/security/policy.rs @@ -141,6 +141,10 @@ impl Default for SecurityPolicy { "git".into(), "npm".into(), "cargo".into(), + "mkdir".into(), + "touch".into(), + "cp".into(), + "mv".into(), "ls".into(), "cat".into(), "grep".into(), @@ -177,8 +181,8 @@ impl Default for SecurityPolicy { "~/.config".into(), ], allowed_roots: Vec::new(), - max_actions_per_hour: 20, - max_cost_per_day_cents: 500, + max_actions_per_hour: 100, + max_cost_per_day_cents: 1000, require_approval_for_medium_risk: true, block_high_risk_commands: true, shell_env_passthrough: vec![], @@ -1657,6 +1661,8 @@ mod tests { assert!(p.is_command_allowed("ls")); assert!(p.is_command_allowed("git status")); assert!(p.is_command_allowed("cargo build --release")); + assert!(p.is_command_allowed("mkdir -p docs")); + assert!(p.is_command_allowed("touch notes.md")); assert!(p.is_command_allowed("cat file.txt")); assert!(p.is_command_allowed("grep -r pattern .")); assert!(p.is_command_allowed("date"));