Claude Code CLI Reference Manual
I. CLI Commands
| Command | Description | Example |
|---|---|---|
claude |
Start interactive REPL | claude |
claude "query" |
Start REPL with initial prompt | claude "explain this project" |
claude -p "query" |
SDK query then exit | claude -p "explain this function" |
| cat file | claude -p "query" | Handle piped input | cat logs.txt | claude -p "explain" |
claude -c |
Continue most recent conversation in current directory | claude -c |
claude -c -p "query" |
Continue conversation via SDK | claude -c -p "Check for type errors" |
claude -r "<session>" "query" |
Resume session by ID/name | claude -r "auth-refactor" "Finish this PR" |
claude update |
Update to latest version | claude update |
claude mcp |
Configure MCP server | See detailsClaude Code MCP documentation |
II. CLI Flags
The following flags customize Claude Code runtime behavior:
| Flag | Description | Example |
|---|---|---|
--add-dir |
Add working directory (validates path automatically) | claude --add-dir ../apps ../lib |
--agent |
Specify session agent (overrides defaultagentsetting) |
claude --agent my-custom-agent |
--agents |
Define custom subagents in JSON | claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}' |
--allowedTools |
Tools usable without permission prompts (for restricting tools with--tools) |
"Bash(git log:*)" "Bash(git diff:*)" "Read" |
--append-system-prompt |
Append content to default system prompt (effective in both interactive/print modes) | claude --append-system-prompt "Always use TypeScript" |
--betas |
Add Beta headers to API requests (API key users only) | claude --betas interleaved-thinking |
--chrome |
Enable Chrome browser integration (web automation/testing) | claude --chrome |
--continue, -c |
Load most recent conversation in current directory | claude --continue |
--dangerously-skip-permissions |
Skip permission prompts (use with caution) | claude --dangerously-skip-permissions |
--debug |
Enable debug mode with category filtering (e.g."api,hooks") |
claude --debug "api,mcp" |
--disallowedTools |
Disable specified tools (removed from context) | "Bash(git log:*)" "Bash(git diff:*)" "Edit" |
--fallback-model |
Automatically switch when default model is overloaded (print mode only) | claude -p --fallback-model sonnet "query" |
--fork-session |
Generate new ID when resuming session (paired with--resume/--continue) |
claude --resume abc123 --fork-session |
--ide |
Automatically connect to available IDE | claude --ide |
--include-partial-messages |
Output includes partial stream events (requires pairing with--printand--output-format=stream-json) |
claude -p --output-format stream-json --include-partial-messages "query" |
--input-format |
Print mode input format (optionaltext/stream-json) |
claude -p --output-format json --input-format stream-json |
--json-schema |
Output validation results conforming to JSON Schema (print mode only) | claude -p --json-schema '{"type":"object","properties":{...}}' "query" |
--max-turns |
Limit agent turns (print mode only, exits with error when exceeded) | claude -p --max-turns 3 "query" |
--mcp-config |
Load MCP configuration from JSON file/string | claude --mcp-config ./mcp.json |
--model |
Specify session model (supports aliasessonnet/opusor full name) |
claude --model claude-sonnet-4-5-20250929 |
--no-chrome |
Disable Chrome integration | claude --no-chrome |
--output-format |
Print mode output format (optionaltext/json/stream-json) |
claude -p "query" --output-format json |
--permission-mode |
Start with specified permission mode | claude --permission-mode plan |
--permission-prompt-tool |
Specify permission prompt handling tool in non-interactive mode | claude -p --permission-prompt-tool mcp_auth_tool "query" |
--plugin-dir |
Load plugins from specified directory (reusable) | claude --plugin-dir ./my-plugins |
--print, -p |
Print response then exit (non-interactive mode) | claude -p "query" |
--resume, -r |
Resume session by ID/name, or bring up interactive selector | claude --resume auth-refactor |
--session-id |
Specify session ID (must be a valid UUID) | claude --session-id "550e8400-e29b-41d4-a716-446655440000" |
--setting-sources |
Specify settings source to load (comma-separateduser/project/local) |
claude --setting-sources user,project |
--settings |
Load custom JSON config file/string | claude --settings ./settings.json |
--strict-mcp-config |
Use only--mcp-configconfiguration, ignore other MCP settings |
claude --strict-mcp-config --mcp-config ./mcp.json |
--system-prompt |
Replace default system prompt (effective in both interactive/print modes) | claude --system-prompt "You are a Python expert" |
--system-prompt-file |
Load system prompt from file (replaces default, print mode only) | claude -p --system-prompt-file ./custom-prompt.txt "query" |
--tools |
Restrict available built-in tools (""disable all,"default"enable all) |
claude --tools "Bash,Edit,Read" |
--verbose |
Enable verbose logging to show full turn-by-turn output | claude --verbose |
--version, -v |
Output version number | claude -v |
Note:
--output-format jsonFlags are ideal for scripting and automation; you can programmatically parse Claude response output.
III. Extended Notes
3.1 Agent Flag Format
--agentsThe flag accepts a JSON object to define one or more custom subagents. Each subagent requires a unique name as the key, and the value is an object containing the following fields:
| Field | Required | Description |
|---|---|---|
description |
Yes | Describe the applicable scenarios for the subagent |
prompt |
Yes | System prompt defining the subagent's behavior |
tools |
no | Subagent-specific tool list (such as["Read", "Edit"], if omitted, inherits all tools) |
model |
no | Model used by the subagent (supportssonnet/opus/haiku, if omitted, the default model is used) |
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."
}
}'
System Prompt Flag
Claude Code provides 3 ways to customize the system prompt to meet different usage needs:
| Flag | Behavior | Applicable mode | Typical use case |
|---|---|---|---|
--system-prompt |
Replace default system prompt | Interactive + print | Fully customize Claude behavior instructions |
--system-prompt-file |
Load prompt from file and replace | Print only | Team-shared prompt templates, version control |
--append-system-prompt |
Append content to default prompt | Interactive + print | Keep default functionality, add personalized instructions |
Usage scenarios and examples
--system-prompt: Completely take over the system prompt and clear default instructionsclaude --system-prompt "You are a Python expert who only writes type-annotated code"
--system-prompt-file: Read prompt from file, suitable for standardized scenariosclaude -p --system-prompt-file ./prompts/code-review.txt "Review this PR"
--append-system-prompt: Keep default functionality, append custom requirements (recommended for most scenarios)claude --append-system-prompt "Always use TypeScript and include JSDoc comments"
Note:
--system-promptand--system-prompt-fileMutually exclusive, cannot be used at the same time.
Tip: Prioritize using--append-system-prompt, as it preserves Claude Code's built-in capabilities while meeting customization needs; only use the other two flags when full customization is required.
Print mode (-p) detailed usage (output format, streaming, programmatic integration, etc.), refer toSDK documentation。