Skip to main content

claude_agent/session/state/
policy.rs

1//! Session-level permission configuration for storage.
2//!
3//! These types are simplified serializable versions for session persistence.
4//! For runtime permission checking with rules, see `crate::permissions::PermissionPolicy`.
5
6use std::collections::HashMap;
7
8use serde::{Deserialize, Serialize};
9
10#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
11#[serde(rename_all = "snake_case")]
12pub enum PermissionMode {
13    #[default]
14    Default,
15    AcceptEdits,
16    Bypass,
17    Plan,
18}
19
20/// Session-level permission configuration.
21///
22/// This is a simplified, serializable version for session storage.
23/// For runtime permission checking with rule patterns, use `crate::permissions::PermissionPolicy`.
24#[derive(Clone, Debug, Default, Serialize, Deserialize)]
25pub struct SessionPermissions {
26    pub mode: PermissionMode,
27    #[serde(default)]
28    pub allow: Vec<String>,
29    #[serde(default)]
30    pub deny: Vec<String>,
31    #[serde(default)]
32    pub tool_limits: HashMap<String, SessionToolLimits>,
33}
34
35/// Session-level tool limits for storage.
36///
37/// For detailed runtime limits with path-based rules, see `crate::permissions::ToolLimits`.
38#[derive(Clone, Debug, Default, Serialize, Deserialize)]
39pub struct SessionToolLimits {
40    pub timeout_ms: Option<u64>,
41    pub max_output_size: Option<usize>,
42}