Crate cc_sdk

Crate cc_sdk 

Source
Expand description

§Claude Code SDK for Rust

A Rust SDK for interacting with the Claude Code CLI, providing both simple query and interactive client interfaces.

§Features

  • Simple Query Interface: One-shot queries with the query function
  • Interactive Client: Stateful conversations with ClaudeSDKClient
  • Streaming Support: Async streaming of responses
  • Type Safety: Strongly typed messages and errors
  • Flexible Configuration: Extensive options for customization

§Quick Start

use cc_sdk::{query, Result};
use futures::StreamExt;

#[tokio::main]
async fn main() -> Result<()> {
    let mut messages = query("What is 2 + 2?", None).await?;
     
    while let Some(msg) = messages.next().await {
        println!("{:?}", msg?);
    }
     
    Ok(())
}

Re-exports§

pub use model_recommendation::ModelRecommendation;
pub use token_tracker::BudgetLimit;
pub use token_tracker::BudgetManager;
pub use token_tracker::BudgetStatus;
pub use token_tracker::TokenUsageTracker;
pub use types::ResultMessage;
pub use types::SystemMessage;
pub use transport::SubprocessTransport;

Modules§

model_recommendation
Model selection recommendations for token optimization
prelude
Prelude module for convenient imports
token_tracker
Token usage tracking and budget management
transport
Transport layer abstractions

Macros§

tool
Macro to define a tool with a simple syntax

Structs§

AgentDefinition
Agent definition for programmatic agents
AssistantContent
Assistant content structure for internal use
AssistantMessage
Assistant message content
AsyncHookJSONOutput
Async hook output for deferred execution
BaseHookInput
Base hook input fields present across many hook events
ClaudeCodeOptions
Configuration options for Claude Code SDK
ClaudeCodeOptionsBuilder
Builder for ClaudeCodeOptions
ClaudeSDKClient
Interactive client for bidirectional communication with Claude
ClaudeSDKClientWorking
Working interactive client
HookContext
Hook context
HookMatcher
Hook matcher configuration
InteractiveClient
Interactive client for stateful conversations with Claude
MessageBatcher
Message batcher for efficient processing
OptimizedClient
Optimized client with improved performance characteristics
PerformanceMetrics
Performance metrics collector
PermissionResultAllow
Permission result - Allow
PermissionResultDeny
Permission result - Deny
PermissionRuleValue
Permission rule value
PermissionUpdate
Permission update
PostToolUseHookInput
Input data for PostToolUse hook events
PostToolUseHookSpecificOutput
Hook-specific output for PostToolUse events
PreCompactHookInput
Input data for PreCompact hook events
PreToolUseHookInput
Input data for PreToolUse hook events
PreToolUseHookSpecificOutput
Hook-specific output for PreToolUse events
Query
Internal query handler with control protocol support
RetryConfig
Configuration for retry logic
SDKControlInitializeRequest
SDK Control Protocol - Initialize request
SDKControlInterruptRequest
SDK Control Protocol - Interrupt request
SDKControlMcpMessageRequest
SDK Control Protocol - MCP message request
SDKControlPermissionRequest
SDK Control Protocol - Permission request
SDKControlSetPermissionModeRequest
SDK Control Protocol - Set permission mode request
SDKHookCallbackRequest
SDK Hook callback request
SdkMcpServer
SDK MCP Server
SdkMcpServerBuilder
Builder for creating SDK MCP servers
SessionStartHookSpecificOutput
Hook-specific output for SessionStart events
SimpleInteractiveClient
Interactive client for stateful conversations with Claude
StopHookInput
Input data for Stop hook events
SubagentStopHookInput
Input data for SubagentStop hook events
SyncHookJSONOutput
Synchronous hook output with control and decision fields
TextContent
Text content block
ThinkingContent
Thinking content block
ToolDefinition
Tool definition
ToolInputSchema
Tool input schema definition
ToolPermissionContext
Tool permission context
ToolResult
Tool execution result
ToolResultContent
Tool result content block
ToolUseContent
Tool use content block
UserContent
User content structure for internal use
UserMessage
User message content
UserPromptSubmitHookInput
Input data for UserPromptSubmit hook events
UserPromptSubmitHookSpecificOutput
Hook-specific output for UserPromptSubmit events

Enums§

ClientMode
Client mode for different usage patterns
ContentBlock
Content block types
ContentValue
Content value for tool results
ControlProtocolFormat
Control protocol format for sending messages
ControlRequest
Control request types (legacy, keeping for compatibility)
ControlResponse
Control response types (legacy, keeping for compatibility)
HookInput
Union type for all hook inputs (discriminated by hook_event_name)
HookJSONOutput
Union type for hook outputs
HookSpecificOutput
Union type for hook-specific outputs (discriminated by hookEventName)
McpServerConfig
MCP (Model Context Protocol) server configuration
Message
Main message type enum
PermissionBehavior
Permission behavior
PermissionMode
Permission mode for tool execution
PermissionResult
Permission result
PermissionUpdateDestination
Permission update destination
PermissionUpdateType
Permission update type
SDKControlRequest
SDK Control Protocol request types
SdkError
Main error type for the Claude Code SDK
SdkToolResultContent
Tool result content types
SettingSource
Setting source for configuration loading
SystemPrompt
System prompt configuration

Traits§

CanUseTool
Tool permission callback trait
HookCallback
Hook callback trait with strongly-typed inputs and outputs
ToolHandler
Tool handler trait

Functions§

create_simple_tool
Helper function to create a simple text-based tool
query
Query Claude Code for one-shot or unidirectional streaming interactions.

Type Aliases§

ClaudeAgentOptions
Alias for ClaudeCodeOptions (matches Python SDK naming)
ClaudeAgentOptionsBuilder
Alias for ClaudeCodeOptionsBuilder (matches Python SDK naming)
ClaudeSDKClientDefault
Default interactive client - the recommended client for interactive use
Result
Result type alias for SDK operations