# CLI Startup Flags Best Practice

Reference for Claude Code startup flags, top-level subcommands, and startup environment variables when launching Claude Code from the terminal.
---
## Table of Contents
1. [Session Management](#session-management)
2. [Model & Configuration](#model--configuration)
3. [Permissions & Security](#permissions--security)
4. [Output & Format](#output--format)
5. [System Prompt](#system-prompt)
6. [Agent & Subagent](#agent--subagent)
7. [MCP & Plugins](#mcp--plugins)
8. [Directory & Workspace](#directory--workspace)
9. [Budget & Limits](#budget--limits)
10. [Integration](#integration)
11. [Initialization & Maintenance](#initialization--maintenance)
12. [Debug & Diagnostics](#debug--diagnostics)
13. [Settings Override](#settings-override)
14. [Version & Help](#version--help)
15. [Subcommands](#subcommands)
16. [Environment Variables](#environment-variables)
---
## Session Management
| Flag | Short | Description |
|------|-------|-------------|
| `--continue` | `-c` | Continue the most recent conversation in the current directory |
| `--resume` | `-r` | Resume a specific session by ID or name, or show interactive picker |
| `--from-pr ` | | Resume sessions linked to a specific GitHub PR |
| `--fork-session` | | Create a new session ID when resuming (use with `--resume` or `--continue`) |
| `--session-id ` | | Use a specific session ID (must be valid UUID) |
| `--no-session-persistence` | | Disable session persistence (print mode only) |
| `--remote` | | Create a new web session on claude.ai |
| `--teleport` | | Resume a web session in your local terminal |
---
## Model & Configuration
| Flag | Short | Description |
|------|-------|-------------|
| `--model ` | | Set model with alias (`sonnet`, `opus`, `haiku`) or full model ID |
| `--fallback-model ` | | Auto-fallback model when default is overloaded (print mode only) |
| `--betas ` | | Beta headers to include in API requests (API key users only) |
---
## Permissions & Security
| Flag | Short | Description |
|------|-------|-------------|
| `--dangerously-skip-permissions` | | Skip ALL permission prompts. Use with extreme caution |
| `--allow-dangerously-skip-permissions` | | Enable permission bypassing as an option without activating it |
| `--permission-mode ` | | Begin in specified permission mode: `default`, `plan`, `acceptEdits`, `bypassPermissions` |
| `--allowedTools ` | | Tools that execute without prompting (permission rule syntax) |
| `--disallowedTools ` | | Tools removed from model context entirely |
| `--tools ` | | Restrict which built-in tools Claude can use (use `""` to disable all) |
| `--permission-prompt-tool ` | | Specify MCP tool to handle permission prompts in non-interactive mode |
---
## Output & Format
| Flag | Short | Description |
|------|-------|-------------|
| `--print` | `-p` | Print response without interactive mode (headless/SDK mode) |
| `--output-format ` | | Output format: `text`, `json`, `stream-json` |
| `--input-format ` | | Input format: `text`, `stream-json` |
| `--json-schema ` | | Get validated JSON matching schema (print mode only) |
| `--include-partial-messages` | | Include partial streaming events (requires `--print` and `--output-format=stream-json`) |
| `--verbose` | | Enable verbose logging with full turn-by-turn output |
---
## System Prompt
| Flag | Short | Description |
|------|-------|-------------|
| `--system-prompt ` | | Replace entire system prompt with custom text |
| `--system-prompt-file ` | | Load system prompt from file, replacing default (print mode only) |
| `--append-system-prompt ` | | Append custom text to default system prompt |
| `--append-system-prompt-file ` | | Append file contents to default prompt (print mode only) |
---
## Agent & Subagent
| Flag | Short | Description |
|------|-------|-------------|
| `--agent ` | | Specify an agent for the current session |
| `--agents ` | | Define custom subagents dynamically via JSON |
| `--teammate-mode ` | | Set agent team display: `auto`, `in-process`, `tmux` |
---
## MCP & Plugins
| Flag | Short | Description |
|------|-------|-------------|
| `--mcp-config ` | | Load MCP servers from JSON file or string |
| `--strict-mcp-config` | | Only use MCP servers from `--mcp-config`, ignore all others |
| `--plugin-dir ` | | Load plugins from directory for this session only (repeatable) |
---
## Directory & Workspace
| Flag | Short | Description |
|------|-------|-------------|
| `--add-dir ` | | Add additional working directories for Claude to access |
| `--worktree` | `-w` | Start Claude in an isolated git worktree (branched from HEAD) |
---
## Budget & Limits
| Flag | Short | Description |
|------|-------|-------------|
| `--max-budget-usd ` | | Maximum dollar amount for API calls before stopping (print mode only) |
| `--max-turns ` | | Limit number of agentic turns (print mode only) |
---
## Integration
| Flag | Short | Description |
|------|-------|-------------|
| `--chrome` | | Enable Chrome browser integration for web automation |
| `--no-chrome` | | Disable Chrome browser integration for this session |
| `--ide` | | Automatically connect to IDE on startup if exactly one valid IDE available |
---
## Initialization & Maintenance
| Flag | Short | Description |
|------|-------|-------------|
| `--init` | | Run initialization hooks and start interactive mode |
| `--init-only` | | Run initialization hooks and exit (no interactive session) |
| `--maintenance` | | Run maintenance hooks and exit |
---
## Debug & Diagnostics
| Flag | Short | Description |
|------|-------|-------------|
| `--debug ` | | Enable debug mode with optional category filtering (e.g., `"api,hooks"`) |
---
## Settings Override
| Flag | Short | Description |
|------|-------|-------------|
| `--settings ` | | Path to settings JSON file or JSON string to load |
| `--setting-sources ` | | Comma-separated list of sources to load: `user`, `project`, `local` |
| `--disable-slash-commands` | | Disable all skills and slash commands for this session |
---
## Version & Help
| Flag | Short | Description |
|------|-------|-------------|
| `--version` | `-v` | Output the version number |
| `--help` | `-h` | Show help information |
---
## Subcommands
These are top-level commands run as `claude `:
| Subcommand | Description |
|------------|-------------|
| `claude` | Start interactive REPL |
| `claude "query"` | Start REPL with initial prompt |
| `claude agents` | List configured agents |
| `claude auth` | Manage Claude Code authentication |
| `claude doctor` | Run diagnostics from the command line |
| `claude install` | Install or switch Claude Code native builds |
| `claude mcp` | Configure MCP servers (`add`, `remove`, `list`, `get`, `enable`) |
| `claude plugin` | Manage Claude Code plugins |
| `claude remote-control` | Manage remote control sessions |
| `claude setup-token` | Create a long-lived token for subscription usage |
| `claude update` / `claude upgrade` | Update to the latest version |
---
## Environment Variables
These startup-only environment variables are set in your shell before launching Claude Code (they cannot be configured via `settings.json`):
| Variable | Description |
|----------|-------------|
| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` | Enable experimental agent teams |
| `CLAUDE_CODE_TMPDIR` | Override temp directory for internal files |
| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` | Enable additional directory CLAUDE.md loading |
| `DISABLE_AUTOUPDATER=1` | Disable auto-updates |
| `CLAUDE_CODE_EFFORT_LEVEL` | Control thinking depth — see [Settings Reference](./claude-settings.md#environment-variables-via-env) |
| `USE_BUILTIN_RIPGREP=0` | Use system ripgrep instead of built-in (Alpine Linux) |
| `CLAUDE_CODE_SIMPLE` | Enable simple mode (Bash + Edit tools only). Also configurable via `env` key — see [Settings Reference](./claude-settings.md#environment-variables-via-env) |
| `CLAUDE_BASH_NO_LOGIN=1` | Skip login shell for BashTool |
For environment variables configurable via the `"env"` key in `settings.json` (including `MAX_THINKING_TOKENS`, `CLAUDE_CODE_SHELL`, `CLAUDE_CODE_ENABLE_TASKS`, `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`, `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`, and more), see the [Claude Settings Reference](./claude-settings.md#environment-variables-via-env).
---
## Sources
- [Claude Code CLI Reference](https://code.claude.com/docs/en/cli-reference)
- [Claude Code Headless Mode](https://code.claude.com/docs/en/headless)
- [Claude Code Setup](https://code.claude.com/docs/en/setup)
- [Claude Code CHANGELOG](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md)
- [Claude Code Common Workflows](https://code.claude.com/docs/en/common-workflows)