cli-options.md 4.2 KB

CLI Options Reference

Complete reference for Claude Code CLI flags.

Core Options

Input/Output

Flag Short Description
--print -p Non-interactive mode (required for headless)
--output-format Output format: text, json, stream-json
--verbose -v Enable verbose/debug logging
--quiet -q Suppress non-essential output

Session Management

Flag Short Description
--resume -r Resume conversation by session ID
--continue -c Continue most recent conversation
--session-id Specify session ID for new session

Prompt Configuration

Flag Description
--append-system-prompt Append text to system prompt
--prepend-system-prompt Prepend text to system prompt
--system-prompt Replace entire system prompt

Tool Control

Flag Description
--allowedTools Comma-separated list of allowed tools
--disallowedTools Comma-separated list of denied tools
--mcp-config Path to MCP server configuration JSON

Permission Control

Flag Description
--permission-mode Permission handling mode

Permission modes:

  • default - Ask for permission (blocks in headless)
  • acceptEdits - Auto-accept file modifications
  • bypassPermissions - Skip all permission prompts

Model Selection

Flag Description
--model Model to use: sonnet, opus, haiku

Usage Examples

Basic Headless

# Simple query
claude -p "What is 2+2?"

# With file context
cat file.py | claude -p "Explain this code"

# From file
claude -p "$(cat prompt.txt)"

Tool Restrictions

# Read-only mode
claude -p "Analyze codebase" \
  --allowedTools "Read,Grep,Glob,WebFetch,WebSearch" \
  --disallowedTools "Write,Edit,Bash,Task"

# Specific tools only
claude -p "Search for bugs" \
  --allowedTools "Read,Grep"

Session Continuation

# Start session, capture ID
result=$(claude -p "Start analysis" --output-format json)
session_id=$(echo "$result" | jq -r '.session_id')

# Continue with context
claude -r "$session_id" "What did you find?"

# Continue most recent
claude -c "Add more details"

System Prompt Modification

# Add context
claude -p "Review code" \
  --append-system-prompt "Focus on security vulnerabilities. Output findings as markdown."

# Full replacement
claude -p "Hello" \
  --system-prompt "You are a helpful assistant that only speaks in haiku."

MCP Integration

# Use MCP servers from config
claude -p "Query the database" \
  --mcp-config ./mcp-servers.json

# With specific tools
claude -p "Fetch from GitHub" \
  --mcp-config ./mcp-servers.json \
  --allowedTools "mcp__github__*"

Debugging

# Verbose output
claude -p "Debug this" --verbose

# Debug mode (shows internal operations)
claude --debug -p "Analyze"

Input Methods

Stdin Piping

# Pipe file content
cat error.log | claude -p "Explain these errors"

# Pipe command output
git diff | claude -p "Review this diff"

# Heredoc
claude -p "$(cat <<EOF
Analyze this data:
- Item 1
- Item 2
EOF
)"

File Input

# Read prompt from file
claude -p "$(cat prompt.md)"

# With context files
claude -p "Review: $(cat src/main.ts)"

Exit Codes

Code Meaning
0 Success
1 General error
2 Invalid arguments

Environment Variables

Variable Description
ANTHROPIC_API_KEY API key for Claude
CLAUDE_PROJECT_DIR Override project directory
NO_COLOR Disable colored output

Flag Combinations

CI/CD Pipeline

claude -p "Run tests and report" \
  --permission-mode acceptEdits \
  --output-format json \
  --allowedTools "Bash,Read,Write"

Security Audit

claude -p "Security review" \
  --allowedTools "Read,Grep,WebSearch" \
  --disallowedTools "Write,Edit,Bash" \
  --append-system-prompt "Report vulnerabilities in JSON format"

Documentation Generation

claude -p "Generate API docs" \
  --permission-mode acceptEdits \
  --allowedTools "Read,Write,Glob" \
  --output-format json