pub struct Permission {
pub permission_type: PermissionType,
pub destination: PermissionDestination,
pub mode: Option<PermissionModeName>,
pub behavior: Option<PermissionBehavior>,
pub rules: Option<Vec<PermissionRule>>,
}Expand description
A permission to grant for “remember this decision” functionality.
When responding to a tool permission request, you can include permissions that should be granted to avoid repeated prompts for similar actions.
§Example
use claude_codes::{Permission, PermissionModeName, PermissionDestination};
// Grant permission for a specific bash command
let perm = Permission::allow_tool("Bash", "npm test");
// Grant permission to set a mode for the session
let mode_perm = Permission::set_mode(PermissionModeName::AcceptEdits, PermissionDestination::Session);Fields§
§permission_type: PermissionTypeThe type of permission (e.g., addRules, setMode)
destination: PermissionDestinationWhere to apply this permission (e.g., session, project)
mode: Option<PermissionModeName>The permission mode (for setMode type)
behavior: Option<PermissionBehavior>The behavior (for addRules type, e.g., allow, deny)
rules: Option<Vec<PermissionRule>>The rules to add (for addRules type)
Implementations§
Source§impl Permission
impl Permission
Sourcepub fn allow_tool(
tool_name: impl Into<String>,
rule_content: impl Into<String>,
) -> Self
pub fn allow_tool( tool_name: impl Into<String>, rule_content: impl Into<String>, ) -> Self
Create a permission to allow a specific tool with a rule pattern.
§Example
use claude_codes::Permission;
// Allow "npm test" bash command for this session
let perm = Permission::allow_tool("Bash", "npm test");
// Allow reading from /tmp directory
let read_perm = Permission::allow_tool("Read", "/tmp/**");Sourcepub fn allow_tool_with_destination(
tool_name: impl Into<String>,
rule_content: impl Into<String>,
destination: PermissionDestination,
) -> Self
pub fn allow_tool_with_destination( tool_name: impl Into<String>, rule_content: impl Into<String>, destination: PermissionDestination, ) -> Self
Create a permission to allow a tool with a specific destination.
§Example
use claude_codes::{Permission, PermissionDestination};
// Allow for the entire project, not just session
let perm = Permission::allow_tool_with_destination("Bash", "npm test", PermissionDestination::Project);Sourcepub fn set_mode(
mode: PermissionModeName,
destination: PermissionDestination,
) -> Self
pub fn set_mode( mode: PermissionModeName, destination: PermissionDestination, ) -> Self
Create a permission to set a mode (like acceptEdits or bypassPermissions).
§Example
use claude_codes::{Permission, PermissionModeName, PermissionDestination};
// Accept all edits for this session
let perm = Permission::set_mode(PermissionModeName::AcceptEdits, PermissionDestination::Session);Sourcepub fn from_suggestion(suggestion: &PermissionSuggestion) -> Self
pub fn from_suggestion(suggestion: &PermissionSuggestion) -> Self
Create a permission from a PermissionSuggestion.
This is useful when you want to grant a permission that Claude suggested.
§Example
use claude_codes::{Permission, PermissionSuggestion, PermissionType, PermissionDestination, PermissionModeName};
// Convert a suggestion to a permission for the response
let suggestion = PermissionSuggestion {
suggestion_type: PermissionType::SetMode,
destination: PermissionDestination::Session,
mode: Some(PermissionModeName::AcceptEdits),
behavior: None,
rules: None,
};
let perm = Permission::from_suggestion(&suggestion);Trait Implementations§
Source§impl Clone for Permission
impl Clone for Permission
Source§fn clone(&self) -> Permission
fn clone(&self) -> Permission
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more