pub struct Permission {
pub permission_type: String,
pub destination: String,
pub mode: Option<String>,
pub behavior: Option<String>,
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;
// 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("acceptEdits", "session");Fields§
§permission_type: StringThe type of permission (e.g., “addRules”, “setMode”)
destination: StringWhere to apply this permission (e.g., “session”, “project”)
mode: Option<String>The permission mode (for setMode type)
behavior: Option<String>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: impl Into<String>,
) -> Self
pub fn allow_tool_with_destination( tool_name: impl Into<String>, rule_content: impl Into<String>, destination: impl Into<String>, ) -> Self
Create a permission to allow a tool with a specific destination.
§Example
use claude_codes::Permission;
// Allow for the entire project, not just session
let perm = Permission::allow_tool_with_destination("Bash", "npm test", "project");Sourcepub fn set_mode(mode: impl Into<String>, destination: impl Into<String>) -> Self
pub fn set_mode(mode: impl Into<String>, destination: impl Into<String>) -> Self
Create a permission to set a mode (like acceptEdits or bypassPermissions).
§Example
use claude_codes::Permission;
// Accept all edits for this session
let perm = Permission::set_mode("acceptEdits", "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};
// Convert a suggestion to a permission for the response
let suggestion = PermissionSuggestion {
suggestion_type: "setMode".to_string(),
destination: "session".to_string(),
mode: Some("acceptEdits".to_string()),
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