Claude Code Guide - Setup, Commands, workflows, agents, skills & tips-n-tricks go from beginner to power user!
Claude Code Guide
For reference and contributions, visit the official Claude Code documentation_
Commands and provider model mappings change quickly; the linked official references remain authoritative.
| Section | Status | Other Resources | | ------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------- | | Getting Started | β | Claude-Code Docs | | Configuration & Environment Variables | β | Claude-Code via Discord | | Commands & Usage | β | Security Agents SKILL.md | | Interface & Input | β | Let Agent Create SKILL.md | | Advanced Features | β | 954+ Agent Skills | | Automation & Integration | β | No cost ai resources | | Help & Troubleshooting | β | 250+ Mermaid templates | | Third-Party Integrations | β | Discord Communication MCP |
Contents
Fast paths: Install Β· Commands Β· Config Β· MCP Β· Agents Β· Troubleshoot
| Area | Start here | Also useful | | --- | --- | --- | | Getting Started | Quick Start | Initial Setup, System Requirements | | Configuration | Environment Variables | Configuration Files | | Commands | Slash Commands | CLI Quick Reference | | Interface | Keyboard Shortcuts | Vim Mode | | Advanced Features | Plan Mode, Auto Mode, MCP | Sub Agents, Skills, Hooks | | Security | Security & Permissions | Dangerous Mode, Best Practices | | Automation | Automation & Scripting | PR Review, Issue Triage | | Help | Troubleshooting | Best Practices, Monitoring | | Third-Party Integrations | DeepSeek Integration | Provider Setup Examples |
Full content map
Getting Started
Enable completion alerts: run /config inside Claude Code and choose a notification channel such as Terminal bell.
Quick Start
[!TIP]
Run claude in a project directory to start the interface.>
Go to Help & Troubleshooting to fix issues...
Native installer (recommended; no Node.js required)
macOS, Linux, or WSL:
curl -fsSL https://claude.ai/install.sh | bash
Windows PowerShell:
irm https://claude.ai/install.ps1 | iex
Windows CMD:
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
Supported package managers (manual updates by default):
brew install --cask claude-code
winget install Anthropic.ClaudeCode
npm distribution (supported; Node.js 22+ is required to install):
npm install -g @anthropic-ai/claude-code
Verify the installation, then start Claude Code:
claude --version
claude doctor
claude
Native installs update themselves. Homebrew, WinGet, and the signed apt, dnf, and apk repositories follow their package manager's update flow. See the official setup guide for channels, version pinning, Linux repository setup, and signature verification. For an npm install, upgrade with npm install -g @anthropic-ai/claude-code@latest; do not use sudo npm install -g.
[!Tip]
Open Project Via Terminal Into VS Code / Cursor>
### $ - cd /path/to/project>
### $ - code .>
Make sure you have the (Claude Code extension) installed in your VS Code / Cursor
System Requirements
- OS: macOS 13+, Windows 10 1809+/Windows Server 2019+, Ubuntu 20.04+, Debian 10+, or Alpine Linux 3.19+. Native Windows, WSL 1, and WSL 2 are supported.
- Hardware: 4 GB+ RAM and an x64 or ARM64 processor
- Software: Git is optional on native Windows; without Git for Windows, Claude uses the PowerShell tool instead of Bash. Node.js 22+ is required only to install through npm; the installed CLI is a native binary.
- Internet: Connection for API calls
Initial Setup
Claude Code requires a Pro, Max, Team, Enterprise, or Console account; the free Claude.ai plan does not include Claude Code. The normal first-party flow is browser sign-in:
claude auth login # Claude subscription
claude auth login --console # Anthropic Console/API billing
claude auth status # Verify the active login
For API automation or a provider/gateway deployment, inject credentials from an OS key store or secret manager instead of committing them:
export ANTHROPICAPIKEY="$SECRETFROMYOUR_STORE" # bash/zsh: current process only
$env:ANTHROPICAPIKEY = $secretFromYourStore # PowerShell: current process only
[!Important]
A persistentANTHROPICAPIKEY,ANTHROPICAUTHTOKEN, or credential helper selects API/provider authentication even if you are logged in. Subscription-only features such as Remote Control, cloud sessions, claude.ai MCP connectors, and notification preferences then remain unavailable. Do not commit credentials; use your platform's secret storage.
Configuration & Environment
Environment Variables
Environment values can also be stored as strings under theenvkey in asettings.jsonfile. The official environment-variable reference is the exhaustive source.
[!Important]
On PowerShell, use $env:NAME = "value" for the current process. Persist secrets through an OS key store or secret manager, not a checked-in settings file.
# Authentication and routing: set only when API/provider billing is intentional
export ANTHROPICAPIKEY="$SECRETFROMYOUR_STORE"
export ANTHROPICAUTHTOKEN="$TOKENFROMYOUR_STORE"
export ANTHROPICBASEURL="https://gateway.example.com"
export ANTHROPICCUSTOMHEADERS="X-Trace-Id: 12345"
Model selection and provider alias overrides
export ANTHROPIC_MODEL="sonnet"
export ANTHROPICDEFAULTFABLE_MODEL="<provider-fable-model-id>"
export ANTHROPICDEFAULTOPUS_MODEL="<provider-opus-model-id>"
export ANTHROPICDEFAULTS
export ANTHROPICDEFAULTHAIKU_MODEL="<provider-haiku-model-id>"
Third-party provider selection (enable only one deployment path)
export CLAUDECODEUSE_BEDROCK=1
export ANTHROPICBEDROCKREGION_PREFIX=eu # Prefer eu/us/apac/jp/au/global cross-region inference on Bedrock
export CLAUDECODEUSE_VERTEX=1
export CLAUDECODEUSE_FOUNDRY=1
Timeouts and output budgets, in milliseconds/tokens
export APITIMEOUTMS=1200000
export BASHDEFAULTTIMEOUT_MS=120000
export BASHMAXTIMEOUT_MS=600000
export MCP_TIMEOUT=30000
export MCPTOOLTIMEOUT=60000
export MAXMCPOUTPUT_TOKENS=25000
export MAXTHINKINGTOKENS=0 # 0 disables fixed thinking where supported; positive values set a budget
Session, context, agents, and accessibility
export CLAUDECODESIMPLE=1
export CLAUDECODESAFE_MODE=1
export CLAUDECODEDISABLE1MCONTEXT=1 # Clamp native-1M models to 200K via autocompaction; warns if the clamp is not enforced
export CLAUDECODEDISABLEUNKNOWNMODELWINDOWENFORCEMENT=1 # Opt out of enforcing the assumed context window for unknown model IDs
export CLAUDECODEMAXCONCURRENTSUBAGENTS=20
export CLAUDECODEMAXSUBAGENTSPAWN_DEPTH=3
export CLAUDECODEFORWARDSUBAGENTTEXT=1
export CLAUDEAXSCREEN_READER=1
Feature and administration controls
export CLAUDECODEEXPERIMENTALAGENTTEAMS=1
export CLAUDECODEADDITIONALDIRECTORIESCLAUDE_MD=1
export CLAUDECODEENABLEGATEWAYMODEL_DISCOVERY=1
export CLAUDECODEPACKAGEMANAGERAUTO_UPDATE=1
export ENABLECLAUDEAIMCP_SERVERS=false
Network routing
export HTTP_PROXY="http://proxy.example.com:8080"
export HTTPS_PROXY="http://proxy.example.com:8080"
export NO_PROXY="localhost,127.0.0.1"
Privacy/network reduction: these are presence-based; unset them to turn them off
export CLAUDECODEDISABLENONESSENTIALTRAFFIC=1
export DISABLE_TELEMETRY=1
export DISABLEERRORREPORTING=1
The block is a catalog, not a recommended profileβdo not enable mutually exclusive provider variables together. Boolean variables usually accept 1/true and 0/false, but the three presence-based variables shown at the end treat any non-empty value, including 0, as enabled. Environment values in settings.json override the shell value at startup and when the file changes.
Global Config Options
Use /config for interactive settings, or pass one or more key=value pairs. Run /config --help for the keys supported by your installed build.
/config # Open the settings UI
/config theme=dark model=sonnet # Update supported keys directly
For version-controlled or managed configuration, edit JSON settings files directly:
| Scope | File | | :---- | :--- | | User | ~/.claude/settings.json | | Project (shared) | .claude/settings.json | | Project (private) | .claude/settings.local.json | | Managed | macOS: /Library/Application Support/ClaudeCode/
Linux/WSL: /etc/claude-code/
Windows: C:\Program Files\ClaudeCode\ |
{
"model": "sonnet",
"theme": "dark",
"autoUpdatesChannel": "stable",
"permissions": {
"defaultMode": "default"
}
}
Settings precedence is managed policy β CLI arguments/--settings β local β project β user. Permission arrays have their own merge rules, so read the settings reference before relying on ordinary last-writer-wins behavior. ~/.claude.json stores global state, session/trust data, and local/user MCP configuration; it is not the user settings file.
Configuration Files
Claude Code combines human-authored instructions from several locations:
| Memory Type | Location | Purpose | Use Case Examples | Shared With | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------- | | Enterprise policy | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md
Linux: /etc/claude-code/CLAUDE.md
Windows: C:\Program Files\ClaudeCode\CLAUDE.md | Organization-wide instructions managed by IT/DevOps | Company coding standards, security policies, compliance requirements | All users in organization | | Project memory | ./CLAUDE.md or ./.claude/CLAUDE.md | Team-shared instructions for the project | Project architecture, coding standards, common workflows | Team members via source control | | User memory | ~/.claude/CLAUDE.md | Personal preferences for all projects | Code styling preferences, personal tooling shortcuts | Just you (all projects) | | Project memory (local) | ./CLAUDE.local.md | Personal project-specific preferences (git-ignored) | Your sandbox URLs, preferred test data, personal overrides | Just you (current project) | | Project rules | .claude/rules/*/.md | Modular project rules (loaded alongside CLAUDE.md) | Linting rules, API conventions, path-scoped standards | Team members via source control |
Instruction files are concatenated rather than overriding one another. User and ancestor-project files load at startup;CLAUDE.mdfiles in subdirectories load lazily when Claude works there.CLAUDE.mdis context, not an enforcement boundary.
Use @path to import another file. Claude Code does not load AGENTS.md automatically; add @AGENTS.md to CLAUDE.md (or use a symlink where portable) when you want to share those instructions.
.claude/rules/ Directory
The .claude/rules/ directory lets you break project instructions into separate Markdown files instead of one large CLAUDE.md. Markdown files are discovered recursively. Add paths frontmatter with glob patterns when a rule should load only for matching files. This is useful for:
- Modular organization: Separate concerns (e.g.,
api-conventions.md,testing-rules.md) - Per-directory overrides: Nested
rules/directories can apply scoped rules - Team collaboration: Different team members can own different rule files via PR review
Auto-Memory
Claude can save useful working context under ~/.claude/projects/<project>/memory/. It loads the first 200 lines or 25 KB of MEMORY.md; use /memory to inspect, edit, disable, or remove saved memories. Auto-memory is machine-local and shared across worktrees for the same repository.
Auto-memory is most useful for context you would otherwise repeat across sessions:
- Preferred build, test, and lint commands
- Local conventions that are not obvious from code alone
- Architecture decisions that influence future edits
- Team preferences that should shape how Claude proposes changes
CLAUDE.md or .claude/rules/. Treat auto-memory as helpful working context, not as the only source of truth.
Commands & Usage
Slash Command Reference
Type / to see what your installed build, plan, platform, plugins, MCP servers, and skills actually provide. The table below is a high-value snapshot; use the official command reference for the live list.
| Command | Purpose | | :------ | :------ | | /add-dir <path> | Grant this session access to another working directory | | /advisor [model\|off] | Configure the experimental second-model advisor, save the selection, or turn it off | | /agents | Explain how to create or edit subagents; the old interactive agent wizard was removed in v2.1.198 | | /background [prompt] | Detach the current conversation as a background session (/bg alias) | | /batch <instruction> | Decompose a large change into worktree-isolated background units (bundled skill) | | /branch [name] | Switch into a new branch of the current conversation while preserving the original | | /btw [question] | Ask an ephemeral side question without adding it to conversation history | | /cd <path> | Move the current session to another working directory | | /clear [name] | Start a new conversation with empty context while preserving project memory | | /code-review [level] [--fix] [--comment] [target] | Run a local background review, or use level ultra for cloud review; levels run from low through max | | /compact [instructions] | Summarize the conversation to free context | | /config [key=value ...] | Open settings or update supported keys directly (/settings alias) | | /context [all] | Visualize what is using the context window | | /diff | Open the interactive current/per-turn diff viewer | | /doctor | Diagnose setup, configuration, hooks, memory, plugins, and MCP; can offer fixes (/checkup alias) | | /effort [level|auto] | Set model-dependent effort: low, medium, high, xhigh, max, or ultracode | | /fast [on|off] | Toggle fast mode where the selected Opus model and plan support it | | /fork [prompt] | Copy this conversation into a worktree-isolated background session and keep working here | | /goal [condition|clear] | Keep working across turns until a completion condition is met | | /hooks | Inspect configured hooks in the read-only hook browser | | /import [codex|gemini] | Preview or migrate supported configuration from another coding agent | | /init | Generate a starter CLAUDE.md for the project | | /loop [interval] [prompt] | Run a prompt repeatedly while the session remains open | | /mcp | Inspect, authenticate, enable, disable, or reconnect MCP servers | | /memory | Manage CLAUDE.md, rules, and auto-memory | | /model [model] | Switch model and normally save it as the default; press s in the picker for session-only selection | | /permissions | Manage allow, ask, and deny rules (/allowed-tools alias) | | /plan [description] | Enter plan mode, optionally with a task | | /plugin [subcommand] | Discover, install, enable, disable, and manage plugins | | /reload-plugins [--force] | Apply plugin changes without restarting when safe | | /remote-control [name] | Expose this local session to claude.ai/code or the Claude mobile app | | /resume [session] | Resume by ID/name or open the session picker | | /review ... | Alias for /code-review as of v2.1.223 | | /rewind | Restore or summarize code and conversation from a checkpoint | | /sandbox | View and configure Bash filesystem/network sandboxing on supported platforms | | /security-review | Review the current branch diff for security vulnerabilities | | /simplify | Review changed code for reuse, quality, and efficiency improvements | | /subtask [prompt] | Run the former in-session fork behavior as a subagent that reports back here | | /tasks | List the current session's background shells, subagents, and tool calls | | /teleport [session] | Copy a Claude Code web session into the local terminal | | /usage | Show subscription usage and rate-limit status | | /workflows | Inspect dynamic workflow runs and background orchestration |
Command Line Flags
| Flag / Command | Description | Example | | :--------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------- | | -d, --debug | Enable debug mode (shows detailed debug output). | claude -d -p "query" | | --include-partial-messages | Include partial streaming events; requires print mode and stream-json. | claude -p --output-format stream-json --include-partial-messages "query" | | --include-hook-events | Include hook lifecycle events in stream-json output. | claude -p --output-format stream-json --include-hook-events "query" | | --forward-subagent-text | Forward subagent text/thinking with parenttooluse_id in stream-json. | claude -p --output-format stream-json --forward-subagent-text "query" | | --verbose | Override verbose mode setting from config (shows expanded logging / turn-by-turn output). | claude --verbose | | -p, --print | Print response and exit (useful for piping output). | claude -p "query" | | --output-format <format> | Output format (only works with --print): text (default), json (single result), or stream-json (realtime streaming). | claude -p "query" --output-format json | | --input-format <format> | Input format (only works with --print): text (default) or stream-json (realtime streaming input). | claude -p --output-format stream-json --input-format stream-json | | --replay-user-messages | Re-emit user messages from stdin back to stdout for acknowledgment β only works with print mode plus stream-json input and output. | claude -p --verbose --input-format stream-json --output-format stream-json --replay-user-messages | | --allowedTools, --allowed-tools <tools...> | Comma/space-separated permission rules to allow. | claude --allowed-tools "Bash(git *)" "Edit" | | --disallowedTools, --disallowed-tools <tools...> | Comma/space-separated permission rules to deny. | claude --disallowed-tools "Edit" | | --mcp-config <configs...> | Load MCP servers from JSON files or strings (space-separated). | claude --mcp-config ./mcp-servers.json | | --strict-mcp-config | Only use MCP servers from --mcp-config, ignoring other MCP configurations. | claude --mcp-config ./a.json --strict-mcp-config | | --append-system-prompt <prompt> | Append a system prompt to the default system prompt (useful in print mode). | claude -p --append-system-prompt "Do X then Y" | | --autocompact <auto\|tokens> | Override the auto-compaction window for this session. | claude --autocompact 500k | | --ax-screen-reader | Use a flat, screen-reader-friendly renderer without decorative borders or animations. | claude --ax-screen-reader | | --bare | Minimal scripted mode: skip discovered hooks, skills, plugins, MCP, auto-memory, and CLAUDE.md. | claude --bare -p "query" | | --permission-mode <mode> | Start in default/manual, acceptEdits, auto, dontAsk, bypassPermissions, or plan. | claude --permission-mode plan | | --permission-prompt-tool <tool> | Specify an MCP tool to handle permission prompts in non-interactive mode. | claude -p --permission-prompt-tool mcpauthtool "query" | | --fallback-model <models> | In print mode, try a comma-separated fallback chain when the primary model is unavailable. | claude -p --fallback-model sonnet,haiku "query" | | --effort <level> | Set effort to low, medium, high, xhigh, or max, or start session-only ultracode mode where supported. | claude --effort high | | --model <model> | Model for the current session. Accepts aliases like sonnet/opus or a full model ID when pinning. | claude --model sonnet | | --advisor <model> | Set the experimental advisor for this session without changing advisorModel; intentionally omitted from claude --help. | claude --advisor opus | | --settings <file-or-json> | Load additional settings from a JSON file or a JSON string. | claude --settings ./settings.json | | --add-dir <directories...> | Additional directories to allow tool access to. | claude --add-dir ../apps ../lib | | --ide | Automatically connect to an IDE on startup if exactly one valid IDE is available. | claude --ide | | -c, --continue | Continue the most recent conversation in the current directory. | claude --continue | | -r, --resume [sessionId] | Resume a conversation; provide a session ID or interactively select one. | claude -r "abc123" | | --session-id <uuid> | Use a specific session ID for the conversation (must be a valid UUID). | claude --session-id 123e4567-e89b-12d3-a456-426614174000 | | --agents <json> | Define custom subagents dynamically via JSON (see subagent docs for format). | claude --agents '{"reviewer":{"description":"Reviews code","prompt":"..."}}' | | --agent <name> | Specify a specific agent for the current session. | claude --agent my-custom-agent | | --bg | Start or continue work as a background session that can be viewed from claude agents. | claude --bg "fix failing tests" | | --bg --exec <command> | Run a shell command as an attachable background session. | claude --bg --exec "npm test" | | --name <label> | Name a background or remote session for easier identification. | claude --bg --name nightly-check "run checks" | | --chrome | Enable Chrome browser integration for web automation and testing. | claude --chrome | | --no-chrome | Disable Chrome browser integration for this session. | claude --no-chrome | | --cloud [description\|session\|url] | Create or attach to a Claude Code web session on claude.ai. | claude --cloud "Fix the login bug" | | --remote | Deprecated alias for --cloud. | claude --remote "Fix the login bug" | | --remote-control, --rc | Start an interactive local session that can also be controlled from claude.ai or the Claude app. | claude --remote-control "My Project" | | --teleport [session] | Resume a web session in your local terminal. | claude --teleport <session-id> | | --fork-session | When resuming, create a new session ID instead of reusing the original. | claude --resume abc123 --fork-session | | --json-schema <schema> | Get validated JSON output matching a JSON Schema after agent completes (print mode only). | claude -p --json-schema '{"type":"object",...}' "query" | | --max-budget-usd <amount> | Maximum dollar amount to spend on API calls before stopping (print mode only). | claude -p --max-budget-usd 5.00 "query" | | --max-turns <n> | Limit the number of agentic turns (print mode only). Exits with error when limit reached. | claude -p --max-turns 3 "query" | | --betas <headers> | Beta headers to include in API requests (API key users only). | claude --betas interleaved-thinking | | --tools <tools> | Restrict which built-in tools Claude can use. Use "" to disable all, "default" for all, or specific tool names. | claude --tools "Bash,Edit,Read" | | --system-prompt <prompt> | Replace the entire system prompt with custom text (works in interactive and print modes). | claude --system-prompt "You are a Python expert" | | --system-prompt-file <file> | Load a system prompt from a file, replacing the default in interactive or print mode. | claude --system-prompt-file ./custom-prompt.txt | | --append-system-prompt-file <file> | Load additional system-prompt text from a file in interactive or print mode. | claude --append-system-prompt-file ./extra-rules.txt | | --plugin-dir <path> | Load a plugin directory or .zip for this session only (repeatable). | claude --plugin-dir ./my-plugin --plugin-dir ./other.zip | | --plugin-url <url> | Fetch a plugin .zip URL for this session only (repeatable). | claude --plugin-url https://example.com/plugin.zip | | --setting-sources <sources> | Comma-separated list of setting sources to load (user, project, local). | claude --setting-sources user,project | | --no-session-persistence | Disable session persistence so sessions are not saved to disk (print mode only). | claude -p --no-session-persistence "query" | | --disable-slash-commands | Disable all skills and slash commands for this session. | claude --disable-slash-commands | | --dangerously-skip-permissions | Skip normal permission prompts, subject to non-bypassable safety checks and managed policy. | claude --dangerously-skip-permissions | | --safe-mode | Disable user/project customizations for configuration troubleshooting while retaining authentication, models, tools, and permissions. | claude --safe-mode | | --worktree [name], -w [name] | Start in <repo>/.claude/worktrees/<name>; omit the name to generate one. | claude -w feature-auth | | --from-pr [value] | Filter/resume sessions by PR number or GitHub/GitLab/Bitbucket PR/MR URL, or open the picker. | claude --from-pr 123 | | --init | Run Setup hooks with the init matcher before a print-mode session. | claude -p --init "query" | | --init-only | Run Setup hooks and exit. | claude --init-only | | --maintenance | Run Setup hooks with the maintenance matcher before a print-mode session. | claude -p --maintenance "query" | | -v, --version | Show the installed claude CLI version. | claude --version | | -h, --help | Display help / usage. | claude --help |
This table highlights common and recently changed options;claude --helpand the live CLI reference are authoritative.--output-format jsonis useful for one-shot automation; usestream-jsonfor event-level integrations.
For programmatic integrations, the former Claude Code SDK is now the Claude Agent SDK: TypeScript uses @anthropic-ai/claude-agent-sdk, and Python uses claude-agent-sdk / claudeagent_sdk. Use claude -p for headless CLI calls; --bare removes discovered customization and keychain/OAuth access for low-overhead API/provider automation.
CLI Quick Reference & Configuration Examples
## Claude Cheat Sheet
Start and resume
claude # Start interactive REPL claude "explain this project" # Start REPL seeded with a prompt claude -p "summarize README.md" # Non-interactive headless print mode cat logs.txt | claude -p "explain" # Pipe input to Claude and exit claude -c # Continue most recent conversation claude -r "<session-id>" "finish this" # Resume by ID or name claude --model sonnet # Pick the Sonnet alias for this run claude --model opus # Pick the Opus alias for harder tasks
Install, update, and auth
claude update # Manually update Claude Code claude doctor # Diagnose install/version & setup claude install stable # Install/reinstall the native binary on the stable channel claude auth login # Log in to your Anthropic account claude auth status # Check authentication status claude auth logout # Log out
Background and remote sessions
claude agents # Open the live session dashboard: running, blocked, completed claude agents --json # Scriptable JSON list of live/background sessions claude --bg "run the integration suite and summarize failures" # Start a background session claude --bg --exec "npm test" # Run a shell command as an attachable background session claude attach <id> # Attach to a background session claude logs <id> # Print recent background-session output claude stop <id> # Stop a background session claude rm <id> # Remove it from agent view and delete its worktree; transcript remains resumable claude remote-control # Serve local sessions to web/mobile while this process stays alive claude --cloud "Fix the bug" # Create a web session on claude.ai claude --teleport <session-id> # Copy a web session into this terminal
Config essentials
/config # Interactive settings /config model=sonnet # Set a supported key directly /config theme=dark /config --help # Show settable keys and values
For shared or managed settings, edit the appropriate settings.json file.
MCP essentials
claude mcp list # List configured MCP servers claude mcp get <name> # Show details for a server claude mcp add <name> <command> [args...] # Add local stdio server claude mcp add --transport http <name> <url> # Add remote HTTP server claude mcp login <name> # Complete OAuth without opening /mcp claude mcp logout <name> # Clear saved OAuth credentials claude mcp reset-project-choices # Reset approvals for project .mcp.json servers claude mcp serve # Run Claude Code itself as an MCP stdio server
High-value flags
claude --add-dir ../apps ../lib # Add additional working directories claude --allowed-tools "Bash(git log *)" "Read" # Allow listed tools without permission prompts claude --disallowed-tools "Edit" # Deny listed tools claude -p "query" --output-format json # Structured one-shot output claude --verbose # Verbose logging (turn-by-turn) claude --dangerously-skip-permissions # Skip permission prompts (use with caution) claude --permission-mode plan # Start in plan mode without source edits claude --effort high # Set reasoning effort for this session claude --bare -p "query" # Fast scripted call without discovered customization claude --safe-mode # Troubleshoot with user/project customization disabled claude --ax-screen-reader # Use the accessible flat-text renderer claude --max-turns 3 -p "query" # Limit agentic turns (print mode only) claude --json-schema '{"type":"object"}' -p "query" # Get validated JSON output claude --chrome # Enable Chrome browser integration claude --agent code-reviewer # Run this session with a named agent claude ultrareview 123 --json # Non-interactive comprehensive review for PR/target 123
Slash shortcuts
claude --fork-session -r abc123 # Fork instead of reusing original claude -w feature-auth "implement feature" # Start in an isolated git worktree /rename auth-refactor # Name current session /resume # Open session picker /export output.md # Export conversation to file /branch experiment-name # Branch the current conversation /fork "investigate the flaky test" # Copy conversation into a background session /subtask "trace the regression" # Fork a subagent that reports back here /cd ../other-project # Move the current session without losing its cache /review high --fix # Run /code-review via its current alias /goal "all tests pass and README is updated" # Keep working until the completion condition is met /loop 30m "check deploy health and summarize anomalies" # Schedule recurring work /workflows # View dynamic workflows and background orchestration
Settings precedence: managed policy > CLI/--settings > local > project > user.
Interface & Input
Keyboard Shortcuts
| Shortcut | Description | Context | | :--------------------------- | :--------------------------------- | :--------------------------------------- | | Ctrl+C | Cancel current input or generation | Standard interrupt | | Ctrl+D | Exit Claude Code session | EOF signal | | Ctrl+G | Open in default text editor | Edit your prompt or custom response | | Ctrl+L | Redraw the terminal | Press twice in fullscreen mode to run /clear | | Ctrl+O | Toggle transcript viewer | Shows detailed tool usage, timestamps, and model | | Ctrl+R | Reverse search command history | Search through previous commands | | Ctrl+V/Cmd+V; Alt+V on Windows/WSL | Paste image from clipboard | Inserts an image chip at the cursor | | Ctrl+B | Background running tasks | Backgrounds bash commands and agents | | Ctrl+X, then Ctrl+K | Stop all background agents | Two-key confirmation sequence | | Ctrl+T | Toggle task checklist | /tasks remains the background-work view | | Ctrl+S | Stash or restore the current prompt | Preserves text, cursor, and pasted content | | Up/Down arrows | Navigate command history | Recall previous inputs | | Left/Right arrows | Cycle through dialog tabs | Navigate between tabs in dialogs | | Esc + Esc | Rewind the code/conversation | Restore to a previous point | | Shift+Tab or Alt+M | Cycle enabled permission modes | Includes Manual, Accept Edits, Plan, and enabled Auto/Bypass modes | | Option+P (macOS) / Alt+P | Switch model | Switch models without clearing prompt | | Option+T (macOS) / Alt+T | Toggle extended thinking | Enable/disable extended thinking mode | | Option+O (macOS) / Alt+O | Toggle fast mode | Enable/disable supported fast mode |
Text Editing
| Shortcut | Description | Context | | :--------------------- | :--------------------------- | :------------------------------------ | | Ctrl+K | Delete to end of line | Stores deleted text for pasting | | Ctrl+U | Delete entire line | Stores deleted text for pasting | | Ctrl+Y | Paste deleted text | Paste text deleted with Ctrl+K/U | | Alt+Y (after Ctrl+Y) | Cycle paste history | Cycle through previously deleted text | | Alt+B | Move cursor back one word | Requires Option as Meta on macOS | | Alt+F | Move cursor forward one word | Requires Option as Meta on macOS |
Multiline Input
| Method | Shortcut | Context | | :--------------- | :------------- | :-------------------------------- | | Quick escape | \ + Enter | Works in all terminals | | macOS default | Option+Enter | Default on macOS | | Shift+Enter | Shift+Enter | Native in most modern terminals; use /terminal-setup where needed | | Control sequence | Ctrl+J | Line feed character for multiline | | Paste mode | Paste directly | For code blocks, logs |
Quick Commands
| Shortcut | Description | Notes | | :----------- | :---------------- | :------------------------------------ | | / at start | Command or skill | See built-in commands and skills | | ! at start | Bash mode | Run commands directly, add to context | | @ | File path mention | Trigger file path autocomplete |
[!Tip]
PDF Page Ranges: Use thepagesparameter with the Read tool for PDFs (e.g.,pages: "1-5"). Large PDFs (>10 pages) return a lightweight reference when @-mentioned instead of being inlined.
Vim Mode
[!Note]
Enable vim-style editing from /config -> Editor mode.
Vim Mode Switching
| Command | Action | From mode | | :------ | :-------------------------- | :-------- | | Esc | Enter NORMAL mode | INSERT | | i | Insert before cursor | NORMAL | | I | Insert at beginning of line | NORMAL | | a | Insert after cursor | NORMAL | | A | Insert at end of line | NORMAL | | o | Open line below | NORMAL | | O | Open line above | NORMAL |
Vim Navigation
| Command | Action | | :-------------- | :------------------------ | | h/j/k/l | Move left/down/up/right | | w | Next word | | e | End of word | | b | Previous word | | 0 | Beginning of line | | $ | End of line | | ^ | First non-blank character | | gg | Beginning of input | | G | End of input |
Vim Editing
| Command | Action | | :------------- | :---------------------- | | x | Delete character | | dd | Delete line | | D | Delete to end of line | | dw/de/db | Delete word/to end/back | | cc | Change line | | C | Change to end of line | | cw/ce/cb | Change word/to end/back | | . | Repeat last change |
[!Tip]
Configure your preferred line break behavior in terminal settings. Run /terminal-setup to install Shift+Enter binding for iTerm2, VS Code, Kitty, Alacritty, Zed, Warp, and WezTerm.
Command History
Claude Code maintains command history for the current session:
* History is stored per working directory
- Cleared with
/clear command
- Use Up/Down arrows to navigate (see keyboard shortcuts above)
- Ctrl+R: Reverse search through history (if supported by terminal)
- Note: History expansion (
!) is disabled by default
Advanced Features
Thinking Keywords
[!Note]
ultrathinkis the only documented prompt keyword for a one-turn request for deeper reasoning. Phrases such asthink,think hard, andthink harderare ordinary prompt text; they are not graduated Claude Code controls.
Use /effort for an explicit session setting. ultrathink adds an in-context instruction for that turn without changing the effort value sent to the API.
Ultrathink. Propose a step-by-step strategy to fix flaky payment tests and add guardrails.
Effort Levels
Use /effort to tune how much reasoning the selected model applies before answering. Higher effort levels are best for planning-heavy work, deep reviews, and long-context tasks.
/effort # Open the effort picker
/effort low # Faster, lighter reasoning
/effort medium # Balanced default for many tasks
/effort high # Deeper planning and review
/effort xhigh # Strong default for difficult coding and agentic work where supported
/effort max # Session-only maximum; test for diminishing returns
/effort ultracode # Session-only xhigh plus dynamic workflow orchestration, where available
/effort auto # Return to the selected model's default
Available levels depend on the model. The saved effortLevel setting accepts low through xhigh; max normally applies only to the current session, although CLAUDECODEEFFORT_LEVEL=max can force it for sessions launched with that environment variable. ultracode is a separate session-only mode that combines xhigh with standing dynamic-workflow orchestration, so it requires workflows and an xhigh-capable model. Prefer the lowest effort that reliably solves the task because higher effort increases latency and token use.
Advisor Tool (Experimental)
The advisor pairs the main model with a second, at-least-as-capable model that Claude may consult at important planning, debugging, or completion decisions. Each consultation sends the full conversation, including tool calls and results; it counts toward subscription usage or is billed at the advisor model's API rates.
/advisor # Open the picker and save the user default
/advisor opus # Save Opus as the advisor
/advisor off # Clear the saved advisorModel setting
claude --advisor opus # Use Opus for this session without changing the saved default
The feature runs only through the first-party Anthropic API, for subscription or API-billed accounts; it is unavailable on Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, and Microsoft Foundry. Claude decides when to consult it. advisorModel is the persistent settings key, while the intentionally hidden --advisor launch flag is session-only. Fable 5 is not currently selectable as an advisor. See the advisor guide for supported main/advisor pairings.
Fast Mode
[!Note]
Fast mode is a research preview that runs the same Opus model and capabilities up to 2.5Γ faster at a higher price per token. It does not trade model quality for speed.
/fast # Toggle in the CLI
Option+O on macOS or Alt+O on Windows/Linux also toggles it
Fast mode currently supports Opus 5 and Opus 4.8. It is unavailable for Sonnet, Haiku, Opus 4.7, third-party providers, and the VS Code extension. Subscription users need usage credits; Team and Enterprise also require Owner enablement. Use it for latency-sensitive interactive work, and standard mode for cost-sensitive or long autonomous tasks. Lower /effort is the separate control that may trade reasoning depth for speed.
Auto Mode
Auto mode lets Claude evaluate and approve lower-risk actions automatically while still blocking or asking on higher-risk operations. It is useful for trusted development loops where repeated permission prompts slow down work.
# Start in auto mode, or cycle to it with Shift+Tab
claude --permission-mode auto
Inspect the built-in and effective classifier configuration
claude auto-mode defaults
claude auto-mode config
Remove a cached/custom classifier config and return to defaults
claude auto-mode reset # Add --yes to skip confirmation
{
"autoMode": {
"allow": ["$defaults"],
"soft_deny": ["$defaults"],
"hard_deny": []
}
}
Key points:
- Auto mode is available by default on every supported provider;
CLAUDECODEENABLEAUTOMODEis now a no-op compatibility variable. - The classifier trusts the working directory and current repository remotes by default. Add organization infrastructure under
autoMode.environmentonly when needed. - Put
autoModein user settings, managed settings, or--settings. Repository.claude/settings.jsonand.claude/settings.local.jsoncannot inject classifier
README truncated. View on GitHub