All options you can pass when launching Claude Code from the terminal. Run claude —help to see the full list.
Pass CLI flags when you launch Claude Code:
claude [flags] [prompt]
Run claude --help to see all available flags in your installed version.
Flags that configure session behavior (like --model and --permission-mode) can also be changed mid-session with the corresponding slash commands: /model and /permissions.
Resume the most recent conversation in the current directory without prompting for a session to resume.
claude --continueclaude -c "now add tests for that"
-r, --resume [session-id]
Resume a conversation by session ID. Without a value, opens an interactive picker where you can search through past sessions. Accepts an optional search term to filter the list.
# Open interactive pickerclaude --resume# Resume by session IDclaude --resume 550e8400-e29b-41d4-a716-446655440000# Open picker filtered by search termclaude --resume "auth refactor"
--fork-session
When used with --continue or --resume, creates a new session branched from the resumed conversation rather than continuing it in place.
claude --resume <session-id> --fork-session
-n, --name <name>
Set a display name for the session. The name appears in /resume and in the terminal title.
claude --name "auth-refactor"
--session-id <uuid>
Use a specific UUID as the session ID instead of a generated one. Must be a valid UUID. Cannot be used with --continue or --resume unless --fork-session is also specified.
claude --session-id 550e8400-e29b-41d4-a716-446655440000
--no-session-persistence
Disable session persistence. The session will not be saved to disk and cannot be resumed. Only works with --print.
Claude prompts before running commands and making edits
acceptEdits
File edits are applied automatically; shell commands still require approval
plan
Claude proposes a plan and waits for your approval before acting
bypassPermissions
All actions run without prompts — intended for sandboxed automated environments only
claude --permission-mode acceptEditsclaude --permission-mode plan "refactor the payment module"claude --permission-mode bypassPermissions # only in isolated sandboxes
bypassPermissions disables all confirmation prompts. Only use it inside Docker containers, CI sandboxes, or other isolated environments with no internet access.
--dangerously-skip-permissions
Bypass all permission checks. Claude takes all actions (file edits, shell commands) without asking. Equivalent to --permission-mode bypassPermissions.
claude --dangerously-skip-permissions -p "run the full test suite and fix failures"
Only use this in sandboxed environments with no internet access. Claude Code enforces this: the flag is rejected when running with root/sudo privileges, or outside a Docker or bubblewrap container.
--allow-dangerously-skip-permissions
Make bypassing all permission checks available as an option during the session, without enabling it by default. Useful for automated pipelines that may need to escalate mid-session.
claude --allow-dangerously-skip-permissions -p "..."
--allowed-tools <tools...>
Aliases:--allowedToolsComma- or space-separated list of tools Claude is allowed to use. Tools not in this list are blocked.
claude --allowed-tools "Bash(git:*) Edit Read"claude --allowed-tools Bash,Edit,Read
Tool patterns support glob-style matching: Bash(git:*) permits any git command; Edit(src/**) permits edits under src/.
--disallowed-tools <tools...>
Aliases:--disallowedToolsComma- or space-separated list of tools Claude is not allowed to use.
claude --disallowed-tools "Bash(rm:*)"
--tools <tools...>
Specify the exact set of built-in tools available for the session. Use "" to disable all tools, default to enable all tools, or name specific tools.
# Disable all toolsclaude --tools ""# Enable only Bash and Readclaude --tools "Bash Read"# Enable the default setclaude --tools default
Add one or more directories to the tool access context. Claude will be able to read and edit files in these directories in addition to the current working directory.
claude --add-dir /shared/libs --add-dir /shared/config
Useful for monorepos or projects where related code lives outside the current directory.
--system-prompt <prompt>
Override the default system prompt with a custom prompt. Cannot be used with --system-prompt-file.
claude --system-prompt "You are a security auditor. Focus only on vulnerabilities."
--append-system-prompt <text>
Append text to the default system prompt. Unlike --system-prompt, this preserves Claude’s built-in instructions and adds to them.
claude --append-system-prompt "Always suggest test cases for every function you write."
--mcp-config <configs...>
Load MCP servers from one or more JSON config files or inline JSON strings. Multiple values are space-separated.
# Load from a fileclaude --mcp-config ./mcp-servers.json# Load from multiple filesclaude --mcp-config ./local-tools.json ./db-tools.json# Pass inline JSONclaude --mcp-config '{"mcpServers":{"filesystem":{"command":"npx","args":["@modelcontextprotocol/server-filesystem","/tmp"]}}}'
Include all hook lifecycle events in the output stream. Only works with --output-format stream-json.
claude -p "run task" --output-format stream-json --include-hook-events
--max-turns <n>
Limit the number of agentic turns in non-interactive mode. Claude stops after this many turns even if the task is incomplete. Only works with --print.
claude -p "refactor this module" --max-turns 10
--max-budget-usd <amount>
Set a maximum dollar amount to spend on API calls. Claude stops when the budget is reached. Only works with --print.
claude -p "large analysis task" --max-budget-usd 2.50
--json-schema <schema>
Provide a JSON Schema for structured output validation. Claude’s response will be validated against this schema.
claude -p "extract the function names" \ --output-format json \ --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'
Create a new git worktree for this session. Optionally specify a name for the worktree branch. Accepts a PR number or GitHub PR URL to create a worktree from that PR.
claude --worktreeclaude --worktree feature-authclaude --worktree "#142"
--tmux
Create a tmux session alongside the worktree. Requires --worktree. Uses iTerm2 native panes when available; pass --tmux=classic to force standard tmux behavior.
Enable debug mode. Optionally pass a filter to restrict which debug categories are shown.
# Show all debug outputclaude --debug# Show only api and hooks categoriesclaude --debug "api,hooks"# Exclude specific categoriesclaude --debug "!file,!1p"
--debug-file <path>
Write debug logs to a specific file path instead of displaying them inline. Implicitly enables debug mode.
claude --debug-file /tmp/claude-debug.log
--bare
Minimal mode. Skips hooks, LSP, plugin sync, attribution, auto-memory, background prefetches, keychain reads, and CLAUDE.md auto-discovery. Sets CLAUDE_CODE_SIMPLE=1.Authentication is limited to ANTHROPIC_API_KEY or apiKeyHelper via --settings (OAuth and keychain are not used).Use --bare in scripted pipelines where startup latency matters and the features it disables are not needed. You can still provide context explicitly:
claude --bare \ --system-prompt "$(cat context.md)" \ --add-dir /project/libs \ --mcp-config ./tools.json \ -p "perform the analysis"
Common flag patterns for scripting and automation:
# Non-interactive with JSON outputclaude -p "list all exported types" --output-format json# Bypass permissions in CI (sandboxed environment only)claude -p "run full test suite and fix failures" --dangerously-skip-permissions# Resume last session and continue non-interactivelyclaude --continue -p "now write the tests for that"# Use a custom MCP config with strict isolationclaude --mcp-config ./ci-mcp.json --strict-mcp-config -p "analyze the schema"# Append to system prompt without replacing itclaude --append-system-prompt "Always output TypeScript, not JavaScript."