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

  1. --system-prompt: Completely take over the system prompt and clear default instructions
    claude --system-prompt "You are a Python expert who only writes type-annotated code"
  2. --system-prompt-file: Read prompt from file, suitable for standardized scenarios
    claude -p --system-prompt-file ./prompts/code-review.txt "Review this PR"
  3. --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。

Other extensions