claude-code-sdk-rust 0.2.0

Async Rust SDK for the Claude Code CLI: streaming agent turns, tool use, and sessions.
Documentation
use std::collections::HashMap;

use super::*;

#[derive(Debug, Clone)]
pub struct ClaudeAgentOptions {
    pub tools: Vec<String>,
    pub tools_set: bool,
    pub tools_preset: Option<ToolsPreset>,
    pub allowed_tools: Vec<String>,
    pub system_prompt: Option<String>,
    pub system_prompt_preset: Option<SystemPromptPreset>,
    pub system_prompt_file: Option<SystemPromptFile>,
    pub mcp_servers: HashMap<String, MCPServerConfig>,
    pub mcp_servers_config: Option<String>,
    pub permission_mode: Option<PermissionMode>,
    pub continue_conversation: bool,
    pub resume: Option<String>,
    pub session_id: Option<String>,
    pub fork_session: bool,
    pub max_turns: Option<i32>,
    pub max_budget_usd: Option<f64>,
    pub task_budget: Option<TaskBudget>,
    pub disallowed_tools: Vec<String>,
    pub model: Option<String>,
    pub fallback_model: Option<String>,
    pub betas: Vec<SdkBeta>,
    pub permission_prompt_tool_name: Option<String>,
    pub cwd: Option<String>,
    pub cli_path: Option<String>,
    pub settings: Option<String>,
    pub add_dirs: Vec<String>,
    pub env: HashMap<String, String>,
    pub extra_args: HashMap<String, Option<String>>,
    pub max_buffer_size: Option<usize>,
    pub user: Option<String>,
    pub include_partial_messages: bool,
    pub include_hook_events: bool,
    pub strict_mcp_config: bool,
    pub setting_sources: Option<Vec<SettingSource>>,
    pub skills: Option<SkillsConfig>,
    pub sandbox: Option<SandboxSettings>,
    pub plugins: Vec<SDKPluginConfig>,
    pub max_thinking_tokens: Option<i32>,
    pub thinking: Option<ThinkingConfig>,
    pub effort: Option<String>,
    pub output_format: Option<serde_json::Map<String, serde_json::Value>>,
    pub enable_file_checkpointing: bool,
    pub stderr: Option<StderrCallback>,
    pub can_use_tool: Option<CanUseToolCallback>,
    pub sdk_mcp_servers: HashMap<String, crate::mcp::SimpleMCPServer>,
    pub hooks: HookMap,
    pub agents: HashMap<String, AgentDefinition>,
    pub session_store: Option<crate::session_store::SessionStoreHandle>,
    pub session_store_flush: SessionStoreFlushMode,
    pub load_timeout_ms: i32,
}

impl Default for ClaudeAgentOptions {
    fn default() -> Self {
        Self {
            tools: Vec::new(),
            tools_set: false,
            tools_preset: None,
            allowed_tools: Vec::new(),
            system_prompt: None,
            system_prompt_preset: None,
            system_prompt_file: None,
            mcp_servers: HashMap::new(),
            mcp_servers_config: None,
            permission_mode: None,
            continue_conversation: false,
            resume: None,
            session_id: None,
            fork_session: false,
            max_turns: None,
            max_budget_usd: None,
            task_budget: None,
            disallowed_tools: Vec::new(),
            model: None,
            fallback_model: None,
            betas: Vec::new(),
            permission_prompt_tool_name: None,
            cwd: None,
            cli_path: None,
            settings: None,
            add_dirs: Vec::new(),
            env: HashMap::new(),
            extra_args: HashMap::new(),
            max_buffer_size: None,
            user: None,
            include_partial_messages: false,
            include_hook_events: false,
            strict_mcp_config: false,
            setting_sources: None,
            skills: None,
            sandbox: None,
            plugins: Vec::new(),
            max_thinking_tokens: None,
            thinking: None,
            effort: None,
            output_format: None,
            enable_file_checkpointing: false,
            stderr: None,
            can_use_tool: None,
            sdk_mcp_servers: HashMap::new(),
            hooks: HashMap::new(),
            agents: HashMap::new(),
            session_store: None,
            session_store_flush: SessionStoreFlushMode::Batched,
            load_timeout_ms: 60_000,
        }
    }
}