Module 06: CLI Options
Configuring Claude clients with the fluent builder and CLIOptions.
What You’ll Learn
- Two approaches to configuration: fluent builder vs CLIOptions
- Common configuration options (model, system prompt, timeout, limits)
- Model ID constants for convenience
- When to use each approach
Two Configuration Approaches
Approach 1: Fluent Builder
Configure everything inline with method chaining:
Approach 2: Pre-built CLIOptions
Build options separately, then pass to client:
Model ID Constants
The SDK provides constants for model IDs:
Configuration Options Reference
Model Configuration
Limits and Budget
Session Configuration
Tradeoffs
- Fluent builder vs CLIOptions: Fluent builder is more discoverable but options cannot be reused. CLIOptions can be shared across clients or loaded from configuration.
- maxTokens: Setting too low truncates responses mid-sentence. Setting too high increases latency and cost. Start without limits, then tune based on actual usage.
- timeout: Claude may need several minutes for complex multi-tool tasks. Short timeouts cause failures that appear as connection errors.
- Model selection: Haiku is 10-20x cheaper than Opus but may require more specific prompts for complex tasks.
systemPrompt vs appendSystemPrompt: Using systemPrompt() replaces Claude Code’s default instructions, which may affect tool usage behavior. Always prefer appendSystemPrompt() to add constraints without losing defaults. Only use systemPrompt() when you explicitly want to replace all default instructions.
Source Code
View on GitHub
Running the Example
Next Module
Module 07: Tool Permissions - Control which tools Claude can use.