CLI reference ↗
noOriginal Documentation
Documentation Index#
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt Use this file to discover all available pages before exploring further.
Complete reference for Claude Code command-line interface, including commands and flags.
CLI commands#
You can start sessions, pipe content, resume conversations, and manage updates with these commands:
| Command | Description | Example |
|---|---|---|
claude | Start interactive session | claude |
claude "query" | Start interactive session 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 in current directory | claude -c |
claude -c -p "query" | Continue via SDK | claude -c -p "Check for type errors" |
claude -r "<session>" "query" | Resume session by ID or name | claude -r "auth-refactor" "Finish this PR" |
claude update | Update to latest version | claude update |
claude auth login | Sign in to your Anthropic account. Use --email to pre-fill your email address and --sso to force SSO authentication | claude auth login --email user@example.com --sso |
claude auth logout | Log out from your Anthropic account | claude auth logout |
claude auth status | Show authentication status as JSON. Use --text for human-readable output. Exits with code 0 if logged in, 1 if not | claude auth status |
claude agents | List all configured subagents, grouped by source | claude agents |
claude mcp | Configure Model Context Protocol (MCP) servers | See the Claude Code MCP documentation. |
claude remote-control | Start a Remote Control session to control Claude Code from Claude.ai or the Claude app while running locally. See Remote Control for flags | claude remote-control |
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 |
--agent | Specify an agent for the current session (overrides the agent setting) | claude --agent my-custom-agent |
--agents | Define custom subagents dynamically via JSON (see below for format) | claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}' |
--allow-dangerously-skip-permissions | Enable permission bypassing as an option without immediately activating it. Allows composing with --permission-mode (use with caution) | claude --permission-mode plan --allow-dangerously-skip-permissions |
--allowedTools | Tools that execute without prompting for permission. See permission rule syntax for pattern matching. To restrict which tools are available, use --tools instead | "Bash(git log *)" "Bash(git diff *)" "Read" |
--append-system-prompt | Append custom text to the end of the default system prompt (works in both interactive and print modes) | claude --append-system-prompt "Always use TypeScript" |
--append-system-prompt-file | Load additional system prompt text from a file and append to the default prompt (print mode only) | claude -p --append-system-prompt-file ./extra-rules.txt "query" |
--betas | Beta headers to include in API requests (API key users only) | claude --betas interleaved-thinking |
--chrome | Enable Chrome browser integration for web automation and testing | claude --chrome |
--continue, -c | Load the most recent conversation in the current directory | claude --continue |
--dangerously-skip-permissions | Skip all permission prompts (use with caution) | claude --dangerously-skip-permissions |
--debug | Enable debug mode with optional category filtering (for example, "api,hooks" or "!statsig,!file") | claude --debug "api,mcp" |
--disable-slash-commands | Disable all skills and commands for this session | claude --disable-slash-commands |
--disallowedTools | Tools that are removed from the model’s context and cannot be used | "Bash(git log *)" "Bash(git diff *)" "Edit" |
--fallback-model | Enable automatic fallback to specified model when default model is overloaded (print mode only) | claude -p --fallback-model sonnet "query" |
--fork-session | When resuming, create a new session ID instead of reusing the original (use with --resume or --continue) | claude --resume abc123 --fork-session |
--from-pr | Resume sessions linked to a specific GitHub PR. Accepts a PR number or URL. Sessions are automatically linked when created via gh pr create | claude --from-pr 123 |
--ide | Automatically connect to IDE on startup if exactly one valid IDE is available | claude --ide |
--init | Run initialization hooks and start interactive mode | claude --init |
--init-only | Run initialization hooks and exit (no interactive session) | claude --init-only |
--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" |
--input-format | Specify input format for print mode (options: text, stream-json) | claude -p --output-format json --input-format stream-json |
--json-schema | Get validated JSON output matching a JSON Schema after agent completes its workflow (print mode only, see structured outputs) | claude -p --json-schema '{"type":"object","properties":{...}}' "query" |
--maintenance | Run maintenance hooks and exit | claude --maintenance |
--max-budget-usd | Maximum dollar amount to spend on API calls before stopping (print mode only) | claude -p --max-budget-usd 5.00 "query" |
--max-turns | Limit the number of agentic turns (print mode only). Exits with an error when the limit is reached. No limit by default | claude -p --max-turns 3 "query" |
--mcp-config | Load MCP servers from JSON files or strings (space-separated) | claude --mcp-config ./mcp.json |
--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-6 |
--no-chrome | Disable Chrome browser integration for this session | claude --no-chrome |
--no-session-persistence | Disable session persistence so sessions are not saved to disk and cannot be resumed (print mode only) | claude -p --no-session-persistence "query" |
--output-format | Specify output format for print mode (options: text, json, stream-json) | claude -p "query" --output-format json |
--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" |
--plugin-dir | Load plugins from directories for this session only (repeatable) | claude --plugin-dir ./my-plugins |
--print, -p | Print response without interactive mode (see Agent SDK documentation for programmatic usage details) | claude -p "query" |
--remote | Create a new web session on claude.ai with the provided task description | claude --remote "Fix the login bug" |
--resume, -r | Resume a specific session by ID or name, or show an interactive picker to choose a session | claude --resume auth-refactor |
--session-id | Use a specific session ID for the conversation (must be a valid UUID) | claude --session-id "550e8400-e29b-41d4-a716-446655440000" |
--setting-sources | Comma-separated list of setting sources to load (user, project, local) | claude --setting-sources user,project |
--settings | Path to a settings JSON file or a JSON string to load additional settings from | claude --settings ./settings.json |
--strict-mcp-config | Only use MCP servers from --mcp-config, ignoring all other MCP configurations | claude --strict-mcp-config --mcp-config ./mcp.json |
--system-prompt | Replace the entire system prompt with custom text (works in both interactive and print modes) | claude --system-prompt "You are a Python expert" |
--system-prompt-file | Load system prompt from a file, replacing the default prompt (print mode only) | claude -p --system-prompt-file ./custom-prompt.txt "query" |
--teleport | Resume a web session in your local terminal | claude --teleport |
--teammate-mode | Set how agent team teammates display: auto (default), in-process, or tmux. See set up agent teams | claude --teammate-mode in-process |
--tools | Restrict which built-in tools Claude can use (works in both interactive and print modes). Use "" to disable all, "default" for all, or tool names like "Bash,Edit,Read" | claude --tools "Bash,Edit,Read" |
--verbose | Enable verbose logging, shows full turn-by-turn output (helpful for debugging in both print and interactive modes) | claude --verbose |
--version, -v | Output the version number | claude -v |
--worktree, -w | Start Claude in an isolated git worktree at <repo>/.claude/worktrees/<name>. If no name is given, one is auto-generated | claude -w feature-auth |
The --output-format json flag 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, for example ["Read", "Edit", "Bash"]. If omitted, inherits all tools. Supports Agent(agent_type) syntax |
disallowedTools | No | Array of tool names to explicitly deny for this subagent |
model | No | Model alias to use: sonnet, opus, haiku, or inherit. If omitted, defaults to inherit |
skills | No | Array of skill names to preload into the subagent’s context |
mcpServers | No | Array of MCP servers for this subagent. Each entry is a server name string or a {name: config} object |
maxTurns | No | Maximum number of agentic turns before the subagent stops |
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 four 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 |
--append-system-prompt-file | Appends file contents to default prompt | Print only | Load additional instructions from files while keeping defaults |
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.claude --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.claude -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.claude --append-system-prompt "Always use TypeScript and include JSDoc comments"--append-system-prompt-file: use when you want to append instructions from a file while keeping Claude Code’s defaults. Useful for version-controlled additions.claude -p --append-system-prompt-file ./prompts/style-rules.txt "Review this PR"
--system-prompt and --system-prompt-file are mutually exclusive. The append flags can be used together with either replacement flag.
For most use cases, --append-system-prompt or --append-system-prompt-file is recommended as they preserve Claude Code’s built-in capabilities while adding your custom requirements. Use --system-prompt or --system-prompt-file only when you need complete control over the system prompt.
See also#
- Chrome extension - Browser automation and web testing
- Interactive mode - Shortcuts, input modes, and interactive features
- Quickstart guide - Getting started with Claude Code
- Common workflows - Advanced workflows and patterns
- Settings - Configuration options
- Agent SDK documentation - Programmatic usage and integrations