Skip to main content

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.