CLI Reference
Complete reference for Claude Code command-line interface.
When to Use
- "What CLI flags are available?"
- "How do I use headless mode?"
- "Claude in automation/CI/CD"
- "Output format options"
- "System prompt via CLI"
- "How do I spawn agents properly?"
Core Commands
| Command |
Description |
Example |
claude |
Start interactive REPL |
claude |
claude "query" |
REPL with initial prompt |
claude "explain this project" |
claude -p "query" |
Headless mode (SDK) |
claude -p "explain function" |
cat file | claude -p |
Process piped content |
cat logs.txt | claude -p "explain" |
claude -c |
Continue most recent |
claude -c |
claude -c -p "query" |
Continue via SDK |
claude -c -p "check types" |
claude -r "id" "query" |
Resume session |
claude -r "auth" "finish PR" |
claude update |
Update version |
claude update |
claude mcp |
Configure MCP servers |
See MCP docs |
Session Control
| Flag |
Description |
Example |
--continue, -c |
Load most recent conversation |
claude --continue |
--resume, -r |
Resume session by ID/name |
claude --resume auth-refactor |
--session-id |
Use specific UUID |
claude --session-id "550e8400-..." |
--fork-session |
Create new session on resume |
claude --resume abc --fork-session |
Headless Mode (Critical for Agents)
| Flag |
Description |
Example |
--print, -p |
Non-interactive, exit after |
claude -p "query" |
--output-format |
text, json, stream-json |
claude -p --output-format json |
--max-turns |
Limit agentic turns |
claude -p --max-turns 100 "query" |
--verbose |
Full turn-by-turn output |
claude --verbose |
--dangerously-skip-permissions |
Skip permission prompts |
claude -p --dangerously-skip-permissions |
--include-partial-messages |
Include streaming events |
claude -p --output-format stream-json --include-partial-messages |
--input-format |
Input format (text/stream-json) |
claude -p --input-format stream-json |
Tool Control
| Flag |
Description |
Example |
--allowedTools |
Auto-approve these tools |
"Bash(git log:*)" "Read" |
--disallowedTools |
Block these tools |
"Bash(rm:*)" "Edit" |
--tools |
Only allow these tools |
--tools "Bash,Edit,Read" |
Subagent Definition (--agents flag)
Define custom subagents inline via JSON:
claude --agents '{
"code-reviewer": {
"description": "Expert code reviewer. Use proactively after code changes.",
"prompt": "You are a senior code reviewer. Focus on code quality and security.",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
},
"debugger": {
"description": "Debugging specialist for errors and test failures.",
"prompt": "You are an expert debugger. Analyze errors and provide fixes."
}
}'
Agent Fields
| Field |
Required |
Description |
description |
Yes |
When to invoke this agent |
prompt |
Yes |
System prompt for behavior |
tools |
No |
Allowed tools (inherits all if omitted) |
model |
No |
sonnet, opus, or haiku |
Key Insight
When Lead uses Task tool, it auto-spawns from these definitions. No manual spawn needed.
System Prompt Customization
| Flag |
Behavior |
Modes |
--system-prompt |
Replace entire prompt |
Interactive + Print |
--system-prompt-file |
Replace from file |
Print only |
--append-system-prompt |
Append to default (recommended) |
Interactive + Print |
Use --append-system-prompt for most cases - preserves Claude Code capabilities.
Model Selection
| Flag |
Description |
Example |
--model |
Set model for session |
--model claude-sonnet-4-5 |
--fallback-model |
Fallback if default overloaded |
--fallback-model sonnet |
Aliases: sonnet, opus, haiku
MCP Configuration
| Flag |
Description |
Example |
--mcp-config |
Load MCP servers from JSON |
--mcp-config ./mcp.json |
--strict-mcp-config |
Only use these MCP servers |
--strict-mcp-config --mcp-config ./mcp.json |
Advanced Flags
| Flag |
Description |
Example |
--add-dir |
Add working directories |
--add-dir ../apps ../lib |
--agent |
Specify agent for session |
--agent my-custom-agent |
--permission-mode |
Start in permission mode |
--permission-mode plan |
--permission-prompt-tool |
MCP tool for permissions |
--permission-prompt-tool mcp_auth |
--plugin-dir |
Load plugins from directory |
--plugin-dir ./my-plugins |
--settings |
Load settings from file/JSON |
--settings ./settings.json |
--setting-sources |
Which settings to load |
--setting-sources user,project |
--betas |
Beta API headers |
--betas interleaved-thinking |
--debug |
Enable debug mode |
--debug "api,hooks" |
--ide |
Auto-connect to IDE |
--ide |
--chrome |
Enable Chrome integration |
--chrome |
--no-chrome |
Disable Chrome for session |
--no-chrome |
--enable-lsp-logging |
Verbose LSP debugging |
--enable-lsp-logging |
--version, -v |
Output version |
claude -v |
Output Formats
JSON (for parsing)
claude -p "query" --output-format json
# {"result": "...", "session_id": "...", "usage": {...}}
Streaming (for real-time monitoring)
claude -p "query" --output-format stream-json
# Newline-delimited JSON events
Structured Output (schema validation)
claude -p "Extract data" \
--output-format json \
--json-schema '{"type":"object","properties":{...}}'
Headless Agent Pattern (CRITICAL)
Proper headless agent spawn:
claude -p "$TASK_PROMPT" \
--session-id "$UUID" \
--dangerously-skip-permissions \
--max-turns 100 \
--output-format stream-json \
--agents '{...}' \
--append-system-prompt "Context: ..."
Missing any of these causes hangs:
--session-id - Track the session
--dangerously-skip-permissions - Headless requires this
--max-turns - Prevents infinite loops
Common Patterns
CI/CD Automation
claude -p "Run tests and fix failures" \
--dangerously-skip-permissions \
--max-turns 50 \
--output-format json | jq '.result'
Piped Input
cat error.log | claude -p "Find root cause"
gh pr diff | claude -p "Review for security"
Multi-turn Session
id=$(claude -p "Start task" --output-format json | jq -r '.session_id')
claude -p "Continue" --resume "$id"
Stream Monitoring
claude -p "Long task" \
--output-format stream-json \
--include-partial-messages | while read -r line; do
echo "$line" | jq '.type'
done
Keyboard Shortcuts (Interactive)
| Shortcut |
Action |
Ctrl+C |
Cancel current |
Ctrl+D |
Exit |
Ctrl+R |
Reverse search history |
Esc Esc |
Rewind changes |
Shift+Tab |
Toggle permission mode |
Quick Commands
| Prefix |
Action |
/ |
Slash command |
! |
Bash mode |
# |
Add to memory |
@ |
File mention |