claude -p ""
Ctrl C / D | Cancel input / Exit session |
Ctrl L | Clear screen + full redraw |
Ctrl O | Toggle between normal and verbose transcript; in a collapsed thinking group, shows the full thinking; focus view toggled with /focus |
Ctrl R | History picker — searches all projects by default; press Ctrl S to narrow to current project or session |
Ctrl G | Open prompt in external editor |
Ctrl B | Background running task |
Ctrl T | Toggle task list; in claude agents: pin/unpin background session (pinned sessions stay alive when idle, restart in place for CC updates) |
Ctrl V | Paste image from clipboard |
Ctrl Backspace | Delete previous word (Windows) |
Ctrl U | Clear entire input buffer (Ctrl+Y to restore) |
Ctrl Y | Restore input buffer cleared by Ctrl+U |
Ctrl X K | Kill background agents (chord, x2) |
Esc Esc | Rewind / undo state |
Tab | Cycle permission modes |
\ P | Switch model |
\ T | Toggle thinking on/off |
\ Enter | Newline (quick) |
Ctrl J | Newline (control seq) |
Ctrl A / Ctrl E | Move to start/end of current logical line (multiline input) |
P / R | Preview / Rename session |
/ | Search sessions |
A / B | Filter All projects / Current branch |
Ctrl A | Show all projects in /resume picker (picker defaults to current dir) |
[ | Dump transcript to scrollback |
v | Open transcript in editor |
? | Show keyboard shortcuts in transcript nav view |
{ / } | Jump between user prompts in transcript nav view |
v (nav view) | Toggle shortcut panel in transcript nav view |
v / V | Visual / visual-line selection mode (NORMAL mode) |
/ (NORMAL mode) | Open reverse history search (like Ctrl+R), matching bash/zsh vi-mode |
/clear | Clear conversation context |
/compact [focus] | Compact context to free space |
/resume | Display session picker menu; background sessions (from --bg or agent view) now appear alongside interactive sessions, marked with bg; offers to summarize stale large sessions before re-reading |
/rename [name] | Name current session |
/branch [name] | Branch convo (formerly /fork) |
/usage | Unified usage view (cost + stats tabs); per-category limits breakdown (skills, subagents, plugins, per-MCP-server cost); /cost and /stats are shortcuts that open the relevant tab |
/usage-credits | Request extra usage allowance; old name /extra-usage still works; accessible from Remote Control clients |
/context | Visualize context window (grid) |
/diff | Interactive diff viewer; detail view scrollable with arrows, j/k, PgUp/PgDn, Space, Home/End |
/copy | Copy last response |
/export | Export conversation |
/recap | Summarize away context; auto-triggered on return or invoke manually |
/rewind / /undo | Rewind conversation to previous state; /undo is alias; supports resuming a conversation from before /clear was run |
/goal [condition] | Set a completion condition; Claude keeps working across turns until met; works in interactive, -p, and Remote Control; shows live elapsed/turns/tokens overlay |
/cd | Move session to a new working directory without breaking the prompt cache mid-session |
/config | Open settings interface; search matches option values; Enter and Space change the selected setting; Esc saves and closes |
/config key=value | Set any setting from the prompt (e.g. /config thinking=false) — works in interactive, -p, and Remote Control |
/config --help | List all available shorthand keys for /config key=value |
/model [model] | Switch model; selection saved as default for new sessions; claude-sonnet-5 is now the default (native 1M-token context); press s in picker to switch for current session only; warns before switching mid-conversation; startup header shows model pin source; lists models from gateway's /v1/models when ANTHROPIC_BASE_URL points at a compatible gateway; org-restricted models show "restricted by your organization's settings" |
/effort [level] | Set effort (low/med/high/xhigh/auto); no args opens interactive slider (Faster/Smarter labels); xhigh is Opus 4.8 only; confirms when chosen level will persist as the default for new sessions |
/fast [on/off] | Toggle Fast mode |
/permissions | View/update tool permissions |
/color [color] | Set prompt-bar color; bare /color with no args picks a random session color |
/keybindings | Customize keyboard shortcuts |
/terminal-setup | Configure terminal integration; configures scroll sensitivity and disables GPU acceleration in VS Code, Cursor, and Devin Desktop to prevent garbled-text rendering; enables iTerm2 clipboard access for /copy |
/theme | Change color theme; create/switch named custom themes, hand-edit ~/.claude/themes/; plugins ship via themes/ dir; includes "Auto (match terminal)" |
/tui [fullscreen] | Switch to flicker-free fullscreen TUI rendering in same conversation |
/focus | Toggle focus view (fullscreen/TUI mode) |
/release-notes | Interactive version picker for release notes |
/scroll-speed | Tune mouse wheel scroll speed with a live preview |
/init | Create CLAUDE.md memory |
/memory | Edit CLAUDE.md files directly |
/mcp | Manage MCP servers; shows tool count for each connected server and flags servers with 0 tools |
/hooks | Manage event lifecycle hooks |
/install-github-app | Install the GitHub App; GitHub Actions workflow and repo secret setup is optional — install just the GitHub App and skip the workflow/secret steps |
/skills | List available active skills; includes type-to-filter search box for long lists |
/chrome | Chrome browser integration; pick which connected browser to use via /chrome → "Select browser…", or in-chat when a browser action runs with multiple connected |
/add-dir <path> | Add working directory to context |
/reload-plugins | Hot-reload local plugins; auto-installs missing dependencies from added marketplaces |
/reload-skills | Re-scan skill directories without restarting the session |
/plugin list | List installed plugins; --enabled/--disabled filters; search bar available when browsing marketplace plugins; surfaces recently-unused plugins for cleanup |
/btw <query> | Side question (does not alter context); press c to copy raw markdown answer to clipboard; ←/→ to step through earlier answers |
/plan [desc] | Switch to Plan Mode directly |
/loop [interval] | Schedule recurring background task |
/proactive | Alias for /loop — schedule recurring background task |
/schedule | Cloud scheduled tasks |
/workflows | View and manage dynamic workflow runs; workflows orchestrate work across tens to hundreds of background agents for large, complex tasks; press f in the agent detail view to filter by status |
ultracode | Prompt trigger keyword — type in the prompt to start a dynamic workflow; highlighted in violet in the prompt input |
/voice | Push-to-talk voice prompting |
/doctor | Diagnose installation/env issues; press f to auto-fix; openable while Claude is responding; shows result of last update attempt; lists npm auto-update fix hints |
/pr-comments [PR] | Fetch GitHub PR comments |
/security-review | Security analysis of uncommitted code |
/powerup | Interactive lessons teaching CC features with animated demos |
/stats / /insights | Shortcut to /usage stats tab / HTML sessions report |
/desktop | Continue session in Desktop app |
/remote-control | Bridge session to claude.ai/code |
/team-onboarding | Generate teammate ramp-up guide from local CC usage |
claude | Start interactive REPL |
claude -p "q" | Headless execution (scripting) |
claude -c / -r "n" | Continue last / Resume specific |
claude --from-pr | Resume session linked to a PR; accepts GitHub, GitLab MR, Bitbucket PR, and GitHub Enterprise URLs |
claude --fork-session | Fork existing session on resume |
claude ultrareview [target] | Run /ultrareview non-interactively from CI or scripts; prints findings to stdout; use --json for raw output |
claude project purge [path] | Delete all Claude Code state for a project (transcripts, tasks, file history, config entry); supports --dry-run, -y/--yes, -i/--interactive, and --all |
claude agents | Agent view (Research Preview) — single list of every CC session; running, blocked on you, or done; type ! <cmd> to launch a shell command as a background session you can attach/detach; --cwd <path> scopes list to a directory; --json lists live sessions as JSON (includes waitingFor, id, and state fields); --all flag includes completed sessions; dispatch flags for background sessions: --add-dir, --settings, --mcp-config, --plugin-dir, --permission-mode, --model, --effort, --agent, --dangerously-skip-permissions |
claude --bg --exec '<cmd>' | Run a shell command as a background session you can attach to and detach from; equivalent to typing ! <cmd> inside claude agents |
--bare | Minimal headless (no hooks/LSP) |
--channels | Permission relay / MCP push msg; now works with console (API key) auth — console orgs with managed settings must set channelsEnabled: true |
--output-format json | Structured JSON output |
--json-schema | Strict JSON schema validation |
--dangerously-skip-permissions | Skip all approval prompts; bypasses prompts for writes to .claude/, .git/, .vscode/, shell config files, and other protected paths (catastrophic removal commands still prompt) |
--exclude-dynamic-system-prompt-sections | Exclude dynamic prompt sections in print mode for cross-user prompt caching |
-w / --worktree | Start in isolated git worktree |
--effort | Set effort level (low/med/high/xhigh); xhigh is Opus 4.8 only |
--model | Override specific model at launch |
--fallback-model | Fallback model for when the primary model is overloaded or unavailable; applies to interactive sessions and headless (-p) mode; configure up to three in order via fallbackModel JSON setting |
--thinking disabled | Disable thinking on models that think by default; equivalent to MAX_THINKING_TOKENS=0 or toggling the per-model thinking switch |
--permission-mode plan | Start in read-only plan mode |
--max-budget-usd | Set cost cap for session |
--remote | Start web-accessible session |
--remote-control | Enable Remote Control mode; bridges CLI session to claude.ai/code |
--remote-control-session-name-prefix | Custom hostname prefix for Remote Control session names |
--plugin-dir <path> | Load plugins from a directory or .zip archive at launch |
--plugin-url <url> | Fetch a plugin .zip archive from a URL for the current session |
--safe-mode | Start with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled for troubleshooting; paired with CLAUDE_CODE_SAFE_MODE env var |
~/.claude/settings.json | User global defaults |
.claude/settings.json | Project shared (committed) |
.claude/settings.local.json | Project local only (gitignored) |
~/.claude.json | OAuth, MCP, state configuration |
.mcp.json | Project-specific MCP servers |
managed-settings.d/ | Drop-in policy fragments (alphabetical merge) |
modelOverrides | Map model picker to custom IDs |
autoMemoryDirectory | Custom auto-loaded memory dir |
worktree.sparsePaths | Sparse checkout dirs for agents |
worktree.baseRef | fresh (default) branches worktrees from origin/<default>; head branches from local HEAD — applies to --worktree, EnterWorktree, and agent-isolation |
worktree.bgIsolation | Set to "none" to disable worktree isolation for background sessions |
agent | Default agent name for dispatched sessions in claude agents; override per-session with --agent <name> |
fallbackModel | Configure up to three fallback models tried in order when the primary model is overloaded or unavailable; paired with --fallback-model CLI flag |
showThinkingSummaries | Show thinking summaries in interactive sessions (default: false) |
language | Pin session-title language; titles auto-detect the conversation language by default — set to a BCP 47 tag (e.g. en, ja) to override |
disableSkillShellExecution | Disable inline shell execution in skills and custom slash commands |
skillOverrides | off hides skill from model and /; user-invocable-only hides from model only; name-only collapses description |
forceRemoteSettingsRefresh | Block startup until remote managed settings are freshly fetched; fail-closed on fetch failure |
statusLine.refreshInterval | Re-run status line command every N seconds |
workspace.git_worktree | Status line JSON input field — set when current directory is inside a linked git worktree |
effort.level / thinking.enabled | Hooks and status line stdin JSON input fields — current effort level and thinking state |
autoScrollEnabled | Disable conversation auto-scroll in fullscreen mode |
wheelScrollAccelerationEnabled | Set to false to disable mouse-wheel scroll acceleration in fullscreen mode |
tui | Default TUI mode; set to "fullscreen" for flicker-free alt-screen rendering |
sandbox.network.deniedDomains | Block specific domains even when a broader allowedDomains wildcard would otherwise permit them |
sandbox.bwrapPath / sandbox.socatPath | Custom bubblewrap and socat binary paths (Linux/WSL managed settings) |
sandbox.allowAppleEvents | Opt-in macOS setting to allow sandboxed commands to send Apple Events |
sandbox.credentials | Block sandboxed commands from reading credential files and secret environment variables |
wslInheritsWindowsSettings | WSL sessions inherit Windows-side managed settings (policy key) |
parentSettingsBehavior | Admin-tier key: first-wins (default) or merge — opts SDK managedSettings parent tier into policy merge |
"$defaults" (autoMode) | Include in autoMode.allow, autoMode.soft_deny, or autoMode.environment to add custom rules alongside the built-in list |
autoMode.hard_deny | Auto mode classifier rules that block unconditionally regardless of user intent — unlike autoMode.soft_deny, cannot be overridden by allow exceptions |
autoMode.classifyAllShell | Route all Bash/PowerShell commands through the auto-mode classifier instead of only arbitrary-code-execution patterns |
"*" (deny rule glob) | Glob patterns supported in deny rule tool-name position; "*" denies all tools; allow rules reject non-MCP globs; unknown tool names in deny rules warn at startup |
Tool(param:value) | Permission rule syntax to match a tool's input parameters (supports * wildcard); e.g. Agent(model:opus) to block Opus subagents |
attribution.sessionUrl | Set to false to omit the claude.ai session link from commits and PRs in web and Remote Control sessions |
prUrlTemplate | Point footer PR badge at a custom code-review URL instead of github.com |
footerLinksRegexes | Array of regex patterns for regex-matched link badges in the footer row; configurable via user or managed settings |
channelsEnabled | Set to true in managed settings to allow --channels with console (API key) auth |
allowAllClaudeAiMcps | Enterprise managed setting — load claude.ai cloud MCP connectors alongside managed-mcp.json |
pluginSuggestionMarketplaces | Managed setting — allowlist org marketplaces whose plugins may be suggested via context-aware tips |
requiredMinimumVersion / requiredMaximumVersion | Managed settings — CC refuses to start if its version is outside the allowed range; directs user to an approved version |
disableBundledSkills | Hide bundled skills, workflows, and built-in slash commands from the model; paired with CLAUDE_CODE_DISABLE_BUNDLED_SKILLS env var |
enforceAvailableModels | Managed setting — when enabled, the availableModels allowlist also constrains the Default model (a Default that resolves to a disallowed model falls back to the first allowed model); user or project settings cannot widen a managed availableModels list |
teammateMode: "iterm2" | Use iTerm2 as the teammate backend; shows a warning when auto mode cannot find the it2 CLI |
awsAuthRefresh | Configures the "Claude Platform on AWS — refresh credentials" option in /login |
respondToBashCommands | Set to false to keep ! bash command output as context-only; default behavior is for Claude to respond automatically |
ANTHROPIC_API_KEY | Auth override |
ANTHROPIC_MODEL | Default model override |
CLAUDE_CODE_EFFORT_LEVEL | Default effort (low/med/high) |
MAX_THINKING_TOKENS | Cap extended thinking limits; set to 0 to disable thinking on models that think by default via the Claude API |
CLAUDE_CODE_PLUGIN_SEED_DIR | Multiple plugin seed directories |
IS_DEMO | Demo mode (hides email/org) |
CLAUDECODE | Detects if running inside CC shell; also injected into stdio MCP server subprocess environments |
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB | Strip credentials from subprocesses; enables PID namespace isolation on Linux (sandboxing) |
CLAUDE_CODE_MCP_SERVER_NAME / CLAUDE_CODE_MCP_SERVER_URL | Inject server identity into MCP headerHelper scripts |
CLAUDE_CODE_NO_FLICKER=1 | Opt into flicker-free alt-screen rendering with virtualized scrollback |
MCP_CONNECTION_NONBLOCKING=true | Skip MCP connection wait in headless (-p) mode |
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE | Keep marketplace cache when git pull fails (offline envs) |
CLAUDE_CODE_USE_MANTLE=1 | Enable Amazon Bedrock powered by Mantle |
CLAUDE_CODE_PERFORCE_MODE | When set, Edit/Write/NotebookEdit fail on read-only files with a p4 edit hint |
CLAUDE_CODE_SCRIPT_CAPS | Limit per-session script invocations (subprocess sandboxing) |
CLAUDE_CODE_CERT_STORE=bundled | Use only bundled CAs; by default OS CA cert store is trusted (enterprise TLS proxy support) |
OTEL_LOG_USER_PROMPTS / OTEL_LOG_TOOL_DETAILS / OTEL_LOG_TOOL_CONTENT | OTEL beta tracing: opt in to emit sensitive span attributes (prompts/tool details/tool content) |
OTEL_LOG_ASSISTANT_RESPONSES | Opt in to emitting the model's response text as an OTEL log event (claude_code.assistant_response); when unset, follows OTEL_LOG_USER_PROMPTS; set to 0 to log prompts but not responses |
ENABLE_PROMPT_CACHING_1H | Opt into 1-hour prompt cache TTL (API key, Bedrock, Vertex, Foundry) |
FORCE_PROMPT_CACHING_5M | Force 5-minute prompt cache TTL |
CLAUDE_CODE_ENABLE_AWAY_SUMMARY | Force-enable recap/away summary (useful when telemetry disabled) |
CLAUDE_CODE_USE_POWERSHELL_TOOL | Enable PowerShell tool; on Windows opt in/out, on Linux/macOS requires pwsh on PATH |
OTEL_LOG_RAW_API_BODIES | Emit full API request/response bodies as OTEL log events for debugging |
TRACEPARENT / TRACESTATE | Distributed trace context injected from environment for SDK/headless sessions |
CLAUDE_CODE_FORK_SUBAGENT=1 | Enable forked subagents on external (non-Anthropic) builds; also works in non-interactive sessions |
DISABLE_UPDATES | Block all update paths including manual claude update; stricter than DISABLE_AUTOUPDATER |
CLAUDE_CODE_HIDE_CWD | Hide working directory in the startup logo |
ANTHROPIC_BEDROCK_SERVICE_TIER | Select a Bedrock service tier (default, flex, or priority); sent as the X-Amzn-Bedrock-Service-Tier header |
CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 | Force-enable synchronized output on terminals that auto-detection misses (e.g. Emacs eat) |
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE | On Homebrew or WinGet installs, runs the upgrade command in the background and prompts to restart when set |
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 | Opt in to listing gateway /v1/models in the /model picker when using a custom ANTHROPIC_BASE_URL gateway (was automatic in v2.1.126–v2.1.128) |
CLAUDE_CODE_SESSION_ID | Session ID injected into Bash tool subprocess environment and stdio MCP server subprocess environments, matching the session_id passed to hooks |
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 | Opt out of the fullscreen alternate-screen renderer; keeps conversation in the terminal's native scrollback |
CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL | Re-enable the session quality survey for enterprises capturing responses through OpenTelemetry |
CLAUDE_PROJECT_DIR | Injected into MCP stdio server environments; referenceable as ${CLAUDE_PROJECT_DIR} in plugin configs |
CLAUDE_CODE_PLUGIN_PREFER_HTTPS | Clone GitHub plugin sources over HTTPS instead of SSH; for environments without a GitHub SSH key |
ANTHROPIC_WORKSPACE_ID | Workload identity federation — scopes the minted token to a specific workspace when the federation rule covers more than one |
OTEL_METRICS_INCLUDE_ENTRYPOINT=true | Opt in to including session entrypoint as an OpenTelemetry metric attribute (app.entrypoint) |
COLUMNS / LINES | Injected into status line command subprocesses so scripts can size output to the terminal width |
CLAUDE_CODE_ENABLE_AUTO_MODE=1 | Opt in to Auto mode on Bedrock, Vertex, and Foundry for Opus 4.7 and Opus 4.8 |
OTEL_RESOURCE_ATTRIBUTES | Standard OTEL env var — values are now used as labels on metric datapoints, so you can slice usage metrics by custom dimensions (e.g. team, repo) |
CLAUDE_CODE_SAFE_MODE | Start with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled; paired with --safe-mode CLI flag |
CLAUDE_CODE_DISABLE_BUNDLED_SKILLS | Hide bundled skills, workflows, and built-in slash commands from the model; paired with disableBundledSkills JSON setting |
API_FORCE_IDLE_TIMEOUT=0 | Opt out of the default 5-minute idle timeout on Vertex/Foundry; stalled streams will hang indefinitely instead of aborting |
CLAUDE_CLIENT_PRESENCE_FILE | Path to a marker file — while the file exists, mobile push notifications are suppressed (signals you're at the machine) |
CLAUDE_CODE_MAX_RETRIES | Caps retry attempts at 15; for unattended sessions use CLAUDE_CODE_RETRY_WATCHDOG instead |
CLAUDE_CODE_RETRY_WATCHDOG | Retry watchdog for unattended sessions; replaces high CLAUDE_CODE_MAX_RETRIES values |
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT | Override the default 5-minute idle timeout for remote MCP tool calls; stalled calls abort with an error instead of blocking indefinitely |
CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP=1 | Disable automatic memory-pressure reaping of idle background shell commands |
CLAUDE_CODE_DISABLE_MOUSE_CLICKS | Disable mouse click/drag/hover in fullscreen mode while keeping wheel scroll active |
/code-review [effort] | Code review; pass --fix to apply findings to working tree (surfacing reuse/simplification/efficiency suggestions); pass --comment to post findings as inline PR comments; optional effort level (e.g. /code-review high) |
/simplify | Cleanup-only review (reuse, simplification, efficiency, altitude) applied to working tree; does not run the full /code-review --fix bug hunt |
/batch | Large parallel changes (5-30 worktrees) |
/claude-api | Load API + SDK reference into context |
/less-permission-prompts | Scan transcripts for read-only Bash/MCP calls; propose settings.json allowlist |
/ultrareview [PR#] | Cloud code review via parallel agents; no args for current branch, PR# for specific PR |
/dataviz | Chart and dashboard design guidance with a runnable color-palette validator |
.claude/skills/<name>/ | Project skill directory; auto-loaded without marketplace; nested .claude/skills/ directories also load when working on files there — on a name clash, the nested skill appears as <dir>:<name> |
~/.claude/skills/<name>/ | Global personal skill directory |
plugin: bin/ | Plugin executables in bin/ invocable as bare commands from Bash tool |
description | Auto-invocation trigger string |
effort | Override effort level specifically for skill |
allowed-tools | Skip permission prompts for skill |
disallowed-tools | Remove tools from the model while the skill or slash command is active |
context: fork | Run skill logic in an isolated subagent |
$ARGUMENTS | User input placeholder replacement |
\$ | Escape to include a literal $ before a digit in skill command bodies |
$FILE_PATH | File path resolution (hook strings only) |
${CLAUDE_SKILL_DIR} | Reference the skill's own directory |
${CLAUDE_EFFORT} | Current effort level — available in hooks, Bash tool commands, and skill content |
! 'cmd' | Dynamic bash execution context injection |
keep-coding-instructions | Control plugin output style for coding tasks |
monitors (plugin manifest) | Background monitor support for plugins; auto-arms at session start or on skill invoke |
defaultEnabled: false (plugin manifest) | Plugin starts disabled by default; enable with /plugin or claude plugin enable; dependency plugins of enabled plugins are still enabled automatically |
permissionMode | default / acceptEdits / plan / bypass |
isolation: worktree | Run agent in isolated git worktree |
memory: user|project | Persistent memory storage scope |
background: true | Run entirely as background task |
initialPrompt | Auto-submit first turn on spawn |
SendMessage | Auto-resumes stopped agents |
hooks: | Agent lifecycle hooks; fire when running as main-thread agent via --agent |
mcpServers | MCP servers for the agent; now loaded for main-thread agent sessions via --agent |
claude plugin init <name> | Scaffold a new plugin in .claude/skills |
claude plugin tag | Create release git tags for plugins with version validation |
claude plugin prune | Remove orphaned auto-installed plugin dependencies; plugin uninstall --prune cascades |
claude plugin details <name> | Show a plugin's component inventory and projected per-session token cost |
.claude/rules/*.md | Project specific structural rules |
~/.claude/rules/*.md | User specific global rules |
paths: (frontmatter) | Path-specific rule triggers |
@path/to/file | Import file directly in CLAUDE.md |
.../memory/MEMORY.md | Topic files, automatically loaded |
PreToolUse / PostToolUse | Intercept before/after tool execution; PostToolUse hook input includes duration_ms; can replace tool output via hookSpecificOutput.updatedToolOutput for all tools |
PostToolUseFailure | Fires when a tool call fails; hook input includes duration_ms |
SessionStart | Fires on session start/resume; return reloadSkills: true to re-scan skill directories; set hookSpecificOutput.sessionTitle to name the session |
SubagentStart / Stop / SubagentStop | Lifecycle triggers for agent spawning; sub-agents can spawn their own sub-agents (up to 5 levels deep); Stop and SubagentStop hook input includes background_tasks and session_crons fields; Stop and SubagentStop can return hookSpecificOutput.additionalContext to give Claude feedback and continue the turn |
SessionEnd | Run cleanup script when session closes |
CwdChanged / FileChanged | React to directory or file changes |
TaskCreated | Fires when task created via TaskCreate |
if: (hook field) | Conditional execution (permission rule syntax) |
"Bash,PowerShell" (hook matcher) | Comma-separated tool type names in a hook's matcher field — fires the hook on any of the listed types; e.g. "Bash,PowerShell" fires on both Bash and PowerShell commands |
mcp__name__.* (hook matcher pattern) | Hyphenated hook matcher identifiers exact-match — use mcp__name__.* glob to match all tools from a hyphenated MCP server (e.g. mcp__brave-search__.*) |
PermissionDenied | Fires after auto mode classifier denials; return {retry:true} to allow retry |
"defer" (PreToolUse) | Headless sessions pause at tool call; resume with -p --resume to re-evaluate |
UserPromptSubmit | Fires on user prompt submit; supports hookSpecificOutput.sessionTitle to set session title |
PreCompact | Fires before compaction; block by exiting with code 2 or returning {"decision":"block"} |
type: "mcp_tool" (hook) | Hook directly invokes an MCP tool |
args: string[] (hook field) | Exec form — spawns command directly without a shell; path placeholders never need quoting |
continueOnBlock (PostToolUse) | Set to true to feed the hook's rejection reason back to Claude and continue the turn |
terminalSequence (hook output) | Hook JSON output field — emit desktop notifications, window titles, and bells without a controlling terminal |
MessageDisplay | Fires as assistant message text is displayed; hooks can transform or hide the output |
EnterWorktree | Fires when entering a worktree; can now switch between Claude-managed worktrees mid-session |
Notification | Fires when a background agent session needs input or finishes; events: agent_needs_input / agent_completed |
claude mcp list/add/remove | Standard MCP server management; claude mcp list/get show unapproved .mcp.json servers as ⏸ Pending approval instead of auto-connecting |
claude mcp login/logout <name> | Authenticate or de-authenticate an MCP server from the CLI without opening /mcp; --no-browser redirects auth code to stdin for SSH completion |
claude mcp serve | Run Claude Code as an MCP server |
--transport http/stdio/sse | Protocol connection methods |
Elicitation | Servers can request input mid-task |
_meta["anthropic/maxResultSizeChars"] | Override max MCP result size per call (up to 500K chars) |
alwaysLoad (MCP server config) | When true, all tools from that server skip tool-search deferral and are always available |
claude auth login/logout | Session authentication control; auth login accepts OAuth code pasted in terminal when browser callback can't reach localhost (WSL2, SSH, containers) |
claude auth status | Check current authentication validity |