Claude Code Cli Reference
CLI commands
| Command | Description | Example |
|---|---|---|
claude |
Start interactive REPL | claude |
claude "query" |
Start REPL with initial prompt | claude "explain this project" |
claude -p "query" |
Query via SDK, then exit | claude -p "explain this function" |
cat file | claude -p "query" |
Process piped content | cat logs.txt | claude -p "explain" |
claude -c |
Continue most recent conversation | claude -c |
claude -c -p "query" |
Continue via SDK | claude -c -p "Check for type errors" |
claude -r "<session-id>" "query" |
Resume session by ID | claude -r "abc123" "Finish this PR" |
claude update |
Update to latest version | claude update |
claude mcp |
Configure Model Context Protocol (MCP) servers | See the Claude Code MCP documentation. |
CLI flags
Customize Claude Code's behavior with these command-line flags:
| Flag | Description | Example |
|---|---|---|
--add-dir |
Add additional working directories for Claude to access (validates each path exists as a directory) | claude --add-dir ../apps ../lib |
--agents |
Define custom subagents dynamically via JSON (see below for format) | claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}' |
--allowedTools |
A list of tools that should be allowed without prompting the user for permission, in addition to settings.json files | "Bash(git log:*)" "Bash(git diff:*)" "Read" |
--disallowedTools |
A list of tools that should be disallowed without prompting the user for permission, in addition to settings.json files | "Bash(git log:*)" "Bash(git diff:*)" "Edit" |
--print, -p |
Print response without interactive mode (see SDK documentation for programmatic usage details) | claude -p "query" |
--system-prompt |
Replace the entire system prompt with custom text (works in both interactive and print modes; added in v2.0.14) | claude --system-prompt "You are a Python expert" |
--system-prompt-file |
Load system prompt from a file, replacing the default prompt (print mode only; added in v1.0.54) | claude -p --system-prompt-file ./custom-prompt.txt "query" |
--append-system-prompt |
Append custom text to the end of the default system prompt (works in both interactive and print modes; added in v1.0.55) | claude --append-system-prompt "Always use TypeScript" |
--output-format |
Specify output format for print mode (options: text, json, stream-json) |
claude -p "query" --output-format json |
--input-format |
Specify input format for print mode (options: text, stream-json) |
claude -p --output-format json --input-format stream-json |
--include-partial-messages |
Include partial streaming events in output (requires --print and --output-format=stream-json) |
claude -p --output-format stream-json --include-partial-messages "query" |
--verbose |
Enable verbose logging, shows full turn-by-turn output (helpful for debugging in both print and interactive modes) | claude --verbose |
--max-turns |
Limit the number of agentic turns in non-interactive mode | claude -p --max-turns 3 "query" |
--model |
Sets the model for the current session with an alias for the latest model (sonnet or opus) or a model's full name |
claude --model claude-sonnet-4-5-20250929 |
--permission-mode |
Begin in a specified permission mode | claude --permission-mode plan |
--permission-prompt-tool |
Specify an MCP tool to handle permission prompts in non-interactive mode | claude -p --permission-prompt-tool mcp_auth_tool "query" |
--resume |
Resume a specific session by ID, or by choosing in interactive mode | claude --resume abc123 "query" |
--continue |
Load the most recent conversation in the current directory | claude --continue |
--dangerously-skip-permissions |
Skip permission prompts (use with caution) | claude --dangerously-skip-permissions |
Tip: The
--output-format jsonflag is particularly useful for scripting and automation, allowing you to parse Claude's responses programmatically.
Agents flag format
The --agents flag accepts a JSON object that defines one or more custom subagents. Each subagent requires a unique name (as the key) and a definition object with the following fields:
| Field | Required | Description |
|---|---|---|
description |
Yes | Natural language description of when the subagent should be invoked |
prompt |
Yes | The system prompt that guides the subagent's behavior |
tools |
No | Array of specific tools the subagent can use (e.g., ["Read", "Edit", "Bash"]). If omitted, inherits all tools |
model |
No | Model alias to use: sonnet, opus, or haiku. If omitted, uses the default subagent model |
Example:
claude --agents '{
"code-reviewer": {
"description": "Expert code reviewer. Use proactively after code changes.",
"prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
},
"debugger": {
"description": "Debugging specialist for errors and test failures.",
"prompt": "You are an expert debugger. Analyze errors, identify root causes, and provide fixes."
}
}'
For more details on creating and using subagents, see the subagents documentation.
System prompt flags
Claude Code provides three flags for customizing the system prompt, each serving a different purpose:
| Flag | Behavior | Modes | Use Case |
|---|---|---|---|
--system-prompt |
Replaces entire default prompt | Interactive + Print | Complete control over Claude's behavior and instructions |
--system-prompt-file |
Replaces with file contents | Print only | Load prompts from files for reproducibility and version control |
--append-system-prompt |
Appends to default prompt | Interactive + Print | Add specific instructions while keeping default Claude Code behavior |
When to use each:
-
--system-prompt: Use when you need complete control over Claude's system prompt. This removes all default Claude Code instructions, giving you a blank slate.bashclaude --system-prompt "You are a Python expert who only writes type-annotated code" -
--system-prompt-file: Use when you want to load a custom prompt from a file, useful for team consistency or version-controlled prompt templates.bashclaude -p --system-prompt-file ./prompts/code-review.txt "Review this PR" -
--append-system-prompt: Use when you want to add specific instructions while keeping Claude Code's default capabilities intact. This is the safest option for most use cases.bashclaude --append-system-prompt "Always use TypeScript and include JSDoc comments"
Note:
--system-promptand--system-prompt-fileare mutually exclusive. You cannot use both flags simultaneously.
Tip: For most use cases,
--append-system-promptis recommended as it preserves Claude Code's built-in capabilities while adding your custom requirements. Use--system-promptor--system-prompt-fileonly when you need complete control over the system prompt.
For detailed information about print mode (-p) including output formats,
streaming, verbose logging, and programmatic usage, see the
SDK documentation.
See also
- Interactive mode - Shortcuts, input modes, and interactive features
- Slash commands - Interactive session commands
- Quickstart guide - Getting started with Claude Code
- Common workflows - Advanced workflows and patterns
- Settings - Configuration options
- SDK documentation - Programmatic usage and integrations