claude_agent/session/state/
policy.rs

1//! Permission policies for sessions.
2
3use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
8#[serde(rename_all = "snake_case")]
9pub enum PermissionMode {
10    #[default]
11    Default,
12    AcceptEdits,
13    Bypass,
14    Plan,
15}
16
17#[derive(Clone, Debug, Default, Serialize, Deserialize)]
18pub struct PermissionPolicy {
19    pub mode: PermissionMode,
20    #[serde(default)]
21    pub allow: Vec<String>,
22    #[serde(default)]
23    pub deny: Vec<String>,
24    #[serde(default)]
25    pub tool_limits: HashMap<String, ToolLimits>,
26}
27
28#[derive(Clone, Debug, Default, Serialize, Deserialize)]
29pub struct ToolLimits {
30    pub timeout_ms: Option<u64>,
31    pub max_output_size: Option<usize>,
32}