Claude Code Workshop (2026 Q2)
An org-driven tutorial of the CLI, slash commands, and runtime surface
Table of Contents
- 1. Preface: How to use this workshop
- 2. Setup beginner
- 3. Release notes timeline (what's actually shipped)
- 4. Session 1 — First contact beginner
- 5. Session 2 — Driving a single shot intermediate
- 6. Session 3 — Slash commands, grouped beginner
- 7. Session 4 — Memory and context intermediate
- 8. Session 5 — Permissions and safety intermediate
- 9. Session 6 — Models and effort beginner
- 10. Session 7 — Hooks intermediate
- 11. Session 8 — Skills intermediate
- 12. Session 9 — Agents and subagents advanced
- 13. Session 10 — MCP advanced
- 14. Session 11 — Plugins advanced
- 15. Session 12 — Worktrees and tmux advanced
- 16. Session 13 — Remote, web, IDE intermediate
- 17. Session 14 — Sessions and history intermediate
- 18. Session 15 — Advanced modes advanced
- 19. Session 16 — Debugging and doctors intermediate
- 20. Session 17 — Telemetry and gossip advanced
- 21. Appendix A — CLI flags (complete reference, 2.1.114)
- 22. Appendix B — Slash commands (complete reference, 2.1.114)
- 22.1. Session control
- 22.2. Model and configuration
- 22.3. Permissions and safety
- 22.4. Context and memory
- 22.5. Development and review
- 22.6. Workflow
- 22.7. Tools and integrations
- 22.8. Display and UI
- 22.9. Account and status
- 22.10. Desktop, mobile, remote, web
- 22.11. Advanced and utility
- 22.12. Cloud setup
- 22.13. Bundled skills (invocable as slash-commands)
- 23. Appendix C — Tangled starter configs
- 24. Open questions
- 25. Related
1. Preface: How to use this workshop
This file is both documentation and apparatus. Read it top-to-bottom the first time. After that, use it three ways:
- Run blocks in place. Every
sh/bashblock can be executed withC-c C-cinside Emacs org-mode. Most are defensive (:eval no-export) so they don't run during batch HTML export. Remove the guard locally when you want to run them. - Tangle configs out. Blocks with
:tangle <path>write config files when you invokeC-c C-v t. The appendix includes a startersettings.json, a hook script, an agent definition, and a SKILL.md. - Walk the exercises. Each session ends with an exercise. Do them.
One invariant across the whole workshop: you do not need to understand Claude Code's internals to drive it well; you need to understand its surface — the CLI, the slash commands, the hook lifecycle, and where each one writes state.
1.1. What this workshop targets
Claude Code 2.1.x (April 2026). Opus 4.6 default on Pro/Max, Opus 4.7 via
/model or auto. Tested on FreeBSD 15 + macOS + Linux; Windows notes
inline where relevant.
1.2. Conventions
$prefix on shell lines = command to run.#=> ...= expected output shape (not exact).:beginner:,:intermediate:,:advanced:tags on sections.!prefix in running Claude sessions = shell escape; useful when the workshop asks you to run a shell command.
2. Setup beginner
Before anything else, establish a known-good baseline.
claude --version
claude doctor
claude doctor spawns stdio MCP servers from .mcp.json as part of its
health check. Run it in a directory you trust.
# Where does Claude keep its state? ls ~/.claude/ 2>/dev/null ls ~/.claude/projects/ 2>/dev/null | head -5
The per-project directory is derived from the absolute path:
~/.claude/projects/-home-you-ghq-github-com-you-repo. That directory
holds sessions (as JSONL), memory (memory/), and auto-memory index.
2.1. Exercise
Find the most recent session in the current project:
ls -lt ~/.claude/projects/$(pwd | tr '/' '-')/*.jsonl | head -1
3. Release notes timeline (what's actually shipped)
Read this before Session 1. Each point anchors later sessions.
3.1. 2.1.114 — 2026-04-18
- Fix: crash in permission dialog when an agent-teams teammate requested tool permission.
3.2. 2.1.113 — 2026-04-17
- Native binary spawning (platform-specific, no bundled JS shim).
sandbox.network.deniedDomainssetting (egress denylist).- Fullscreen mode: scrolling + readline improvements.
- Windows:
Ctrl+Backspacedeletes previous word. - Long wrapped URLs stay clickable.
/loopgetsEsccancellation and status messages./extra-usage+@file autocomplete work from Remote Control clients./ultrareviewfaster, parallelized.- macOS path protections + exec-wrapper matching for Bash rules.
3.3. 2.1.112 — 2026-04-16
- Fix: transient
claude-opus-4-7 temporarily unavailablein auto mode.
3.4. 2.1.111 — 2026-04-16
- Opus 4.7 xhigh effort level.
- Auto mode available for Max subscribers with Opus 4.7.
- Interactive
/effortslider. - "Auto (match terminal)" theme.
/less-permission-promptsskill (scan transcript, propose allowlist)./ultrareview(cloud code review; 3 free runs on Pro/Max).- PowerShell tool rolling out on Windows (
CLAUDE_CODE_USE_POWERSHELL_TOOL). - Auto-allow read-only bash with globs and
cd <dir> &&patterns.
3.5. 2.1.110 — 2026-04-15
/tui fullscreen(flicker-free alt-screen rendering)./focus(prompt + tool summary + response only).- Remote Control push notifications.
autoScrollEnabledconfig.- Context-as-comments in external editor.
/plugintoken-count sort;/doctorstatus icons.
3.6. 2.1.109 — 2026-04-15
- Extended-thinking indicator now rotates a progress hint.
3.7. 2.1.108 — 2026-04-14
ENABLE_PROMPT_CACHING_1Henv var (1-hour cache TTL).- Session recap.
- Built-in skills discoverable via the Skill tool.
/undoalias for/rewind.- Rate-limit vs usage-limit errors distinguished.
- Reduced memory footprint for file operations.
3.8. 2.1.105 — 2026-04-13
pathparameter toEnterWorktreetool.- PreCompact hook.
- Background monitor support for plugins.
- 5-minute stalled-API-stream timeout.
3.9. Earlier (selected)
- 2.1.101:
/team-onboarding, Monitor tool for streaming background events, Bash subprocess sandboxing with PID namespace, OS CA trust,/ultraplanauto cloud env. - 2.1.98: Vertex AI wizard,
CLAUDE_CODE_PERFORCE_MODE, Monitor tool. - 2.1.94: Bedrock Mantle support, default effort high, compact Slack message headers.
- 2.1.84: PowerShell tool preview,
ANTHROPIC_DEFAULT_*_MODEL_SUPPORTSenv vars,TaskCreatedhook. - 2.1.76: MCP elicitation (interactive dialogs),
/effortlanded, session display names via-n,worktree.sparsePaths. - 2.1.75: 1M context window for Opus 4.6,
/color, session name on prompt bar, memory file timestamps.
4. Session 1 — First contact beginner
Three ways to start Claude:
# 1) Interactive session — the default claude # 2) One-shot, no TTY claude -p "list the files in this directory and group by extension" # 3) Continue the most recent session in this directory claude -c
The first difference that matters: -p skips the workspace-trust dialog.
Only use -p in a directory you trust. It is the correct mode for
scripts, CI, and pipes.
4.1. Exercise
Run Claude non-interactively and pipe the answer through jq:
claude -p "respond with a JSON object {status: 'ok', now: <iso-timestamp>}" \ --output-format json | jq .
5. Session 2 — Driving a single shot intermediate
-p has the richest flag surface. Key combinations:
# Structured output with schema validation claude -p "extract the TLDs from https://wal.sh" \ --json-schema '{"type":"object","properties":{"tlds":{"type":"array","items":{"type":"string"}}},"required":["tlds"]}' \ --output-format json # Streaming JSON — one message per line claude -p "count to five slowly" --output-format stream-json --include-partial-messages # Hard budget cap — stops before burning through $ claude -p "refactor all Python files in src/" --max-budget-usd 2.00 # Input from stdin in stream-json format — for long-running pipelines cat requests.jsonl | claude -p --input-format stream-json --output-format stream-json
--no-session-persistence is the right call when -p is part of a
pipeline and you don't want thousands of session files accumulating.
--fallback-model only works with -p and only triggers on overload of
the primary model:
claude -p "do the thing" --model opus --fallback-model sonnet
5.1. Exercise
Write a shell script that takes a URL, fetches the page, and asks Claude
(in -p mode, no persistence, with a --max-budget-usd 0.25 cap) for a
three-bullet summary as JSON. Validate the JSON shape with
--json-schema.
6. Session 3 — Slash commands, grouped beginner
In an interactive session, type / and a picker appears. The full list
is in Appendix B. Here are the groups you'll touch most often in the
first week, with the reason each one exists.
6.1. Session control
/clear— start with empty context. Aliases:/new,/reset./resume [id-or-name]— pick a prior session./continue(CLI flag-c) — resume the most recent session inpwd./branch [name]— fork the conversation at the current point./rewind//undo— rewind both conversation and code to a prior state./recap— one-line summary of the current session./rename [name]— label the session (shows in/resume).
6.2. Context and memory
/context— visualize context usage (how much of the window is filled by system prompt, tools, messages, memory)./compact [focus]— summarize conversation to free up context. The optional focus string tells Claude what to keep./memory— openCLAUDE.mdfiles and project memory in your editor./cost— token usage for this session.
6.3. Model and effort
/model [alias-or-id]— switch models mid-session. Aliases:sonnet,opus,haiku. IDs:claude-opus-4-6,claude-haiku-4-5-20251001./effort [low|medium|high|xhigh|max|auto]— more effort = more tokens = slower but deeper reasoning./fast [on|off]— Fast mode. Same Opus 4.6 model, faster output path; slightly less deliberation.
6.4. Permissions and safety
/permissions— view/edit allow/ask/deny rules./sandbox— toggle sandbox mode./add-dir <path>— grant file access to another directory.
6.5. Development
/review [PR]— review a pull request locally./security-review— scan pending changes for vulnerabilities./diff— interactive diff viewer for uncommitted work.
6.6. Discovery
/help— everything available to you in your environment./skills— list skills./agents— manage agent configurations./mcp— MCP server connections./plugin— Claude Code plugins./hooks— view hook configurations./doctor— diagnostics./status,/usage,/cost— accounting./release-notes— interactive changelog picker./powerup— animated tours of features you haven't tried.
6.7. Exercise
Start a session, run /context, note the percentages. Then run /compact
"keep only what's relevant to the current refactor" and run /context
again. Compare.
7. Session 4 — Memory and context intermediate
Claude Code reads several files as context automatically:
~/.claude/CLAUDE.md— user-global preferences.<project>/CLAUDE.md— project instructions.~/.claude/projects/<slug>/memory/*.md— per-project auto-memory (facts, feedback, references; indexed viaMEMORY.md).- Plus whatever tools pull in (file reads, grep, URL fetches).
Key CLI knobs:
# Make another directory readable without prompting (multi-dir projects) claude --add-dir ../shared-libs ../docs # Override CLAUDE.md auto-discovery entirely claude --bare --system-prompt "You are a minimal assistant." \ --add-dir . --mcp-config ./mcp.json # Append to the default system prompt without replacing it claude --append-system-prompt "Always cite file:line when referencing code."
--bare is the escape hatch when you want a reproducible Claude run for
CI or an experiment: no hooks, no LSP, no plugin sync, no auto-memory,
no keychain, no CLAUDE.md auto-discovery. You provide context
explicitly via the flags.
7.1. Auto-memory: what gets written without you asking
Claude Code writes memory in these categories (from the harness
instructions): user, feedback, project, reference. The index is
MEMORY.md. Read it; it is the cheapest audit of what Claude "knows"
about you.
cat ~/.claude/projects/$(pwd | tr '/' '-')/memory/MEMORY.md 2>/dev/null
7.2. Exercise
Write a one-paragraph CLAUDE.md for this project that tells Claude one
thing to always do and one thing to never do. Start a fresh session and
verify that Claude honors both.
8. Session 5 — Permissions and safety intermediate
Permissions live at three levels: session, project (.claude/settings.json),
user (~/.claude/settings.json).
# Scope tools explicitly for a single invocation claude -p "tidy this repo" \ --allowedTools 'Bash(git:*) Edit Read' \ --disallowedTools 'Bash(rm:*) Bash(curl:*)' # Permission modes claude --permission-mode plan # think, don't act claude --permission-mode acceptEdits # auto-accept edits claude --permission-mode bypassPermissions # ⚠ only in sandbox claude --permission-mode dontAsk # never prompt claude --permission-mode auto # ask the classifier
--dangerously-skip-permissions / --allow-dangerously-skip-permissions
turn off the permission model. Only defensible inside a VM, jail,
container, or other blast-radius-bounded environment with no
credentials. Otherwise: don't.
8.1. Example: safe non-interactive CI run
claude --bare -p "$(cat request.txt)" \ --allowedTools 'Read Grep Glob' \ --permission-mode dontAsk \ --max-budget-usd 0.50 \ --no-session-persistence \ --output-format json
Read-only tools, no session file, capped spend, JSON out, no auto-discovered context. That's a tight supply chain.
8.2. Exercise
Write a project-level .claude/settings.json that denies Bash(rm:*)
and Bash(sudo:*) and asks before any Bash(git push:*).
9. Session 6 — Models and effort beginner
# Pin model for this session only claude --model opus # Pin effort (also available as /effort in session) claude --effort max # Fallback when primary is overloaded (only with -p) claude -p "..." --model opus --fallback-model sonnet
Effort is a cost/quality knob. low is fastest and cheapest; xhigh and
max chew tokens. auto lets the classifier pick — reasonable default
on Max with Opus 4.7.
10. Session 7 — Hooks intermediate
Hooks are shell commands triggered by lifecycle events. They run in the harness, so they're deterministic. Events:
SessionStart/SessionEndUserPromptSubmit/AssistantResponseCompletePreToolUse/PostToolUse(can veto)PreCompact(new in 2.1.105 — run before context summary)TaskCreated- conditional
ifhooks (2026-03 research preview)
Example: append a Co-Authored-By trailer automatically via
PostToolUse on any git commit.
Tangle a hook script:
# guard-dangerous-bash.sh — PreToolUse hook for the Bash tool # Veto rm -rf /, git push --force, etc. set -euo pipefail # Claude passes the tool invocation as JSON on stdin invocation=$(cat) cmd=$(printf '%s' "$invocation" | jq -r '.input.command // ""') case "$cmd" in *"rm -rf /"*|*"rm -rf ~"*|*"rm -rf /*"*) echo '{"decision":"deny","reason":"rm -rf at a dangerous root"}' exit 0 ;; *"git push --force"*|*"git push -f"*) echo '{"decision":"deny","reason":"force-push blocked; rebase and ask"}' exit 0 ;; esac # Default: allow echo '{"decision":"allow"}'
Register it in ~/.claude/settings.json (tangled in Appendix D).
10.1. Exercise
Add a SessionStart hook that runs bd ready (or any project-specific
onboarding command) and prints the top three items into the session as
context.
11. Session 8 — Skills intermediate
A skill is a named prompt + tool scope, discoverable at /. Built-ins
(2026 Q2):
/simplify [focus]— review changed files for quality./debug [description]— enable debug logging, walk through a bug./loop [interval] [prompt]— run prompt repeatedly./claude-api— load the current Claude API reference for your project language (Python, TS, Go). Triggers automatically if the code importsanthropic./batch <instruction>— orchestrate 5-30 parallel agents./fewer-permission-prompts— scan your transcript, propose a minimal allowlist addition./less-permission-prompts— same, as of 2.1.111.
Custom skills live in .claude/skills/<name>/SKILL.md. Shape:
--- : : detailed git notes, push to remote. : --- # repo-sync Given the current working tree: 1. Summarize what changed with `git status` + `git diff`. 2. Propose a conventional-commit branch name. 3. Ask for confirmation *before* creating the branch. 4. Commit. Add a git note with the detailed rationale. 5. Push with upstream tracking. Always use conventional commits. Never force-push to main.
opencode.ai's Skills spec walks up from pwd looking in .claude/skills/,
.opencode/, .agents/ — so a skill placed in .claude/skills/ is
cross-harness portable.
11.1. Exercise
Tangle the skill above. Start a session. Type /repo-sync and observe.
12. Session 9 — Agents and subagents advanced
Custom agents are named prompt + tools scoped for delegation.
# Pin a custom agent at startup claude --agent reviewer # Define agents inline (rare, but valid) claude --agents '{ "reviewer": { "description": "Reviews code for bugs, logic errors, OWASP issues.", "prompt": "You are a rigorous code reviewer." }, "scribe": { "description": "Writes clear commit messages.", "prompt": "You are a conventional-commits pedant." } }'
Project-level agents live in .claude/agents/<name>.json. Tangle:
{
"description": "Rigorous code reviewer. Reads diffs, flags high-signal issues, suppresses low-confidence nits.",
"prompt": "You are a senior engineer doing a pull-request review. Output: (1) blocking issues, (2) non-blocking suggestions, (3) out-of-scope observations. Cite file:line. Never suggest rewrites unless asked.",
"tools": ["Read", "Grep", "Glob", "Bash(git:*)"]
}
Subagents are delegated Claude runs launched from inside an active
session via the Agent tool. Supported types visible to the harness
include general-purpose, Explore, Plan, and any you register.
12.1. Exercise
Tangle the reviewer agent. Run:
claude --agent reviewer -p "review the last commit"
13. Session 10 — MCP advanced
MCP (Model Context Protocol) servers expose tools and resources over a transport the harness speaks.
# Use a project-local MCP config claude --mcp-config ./.mcp.json # Use multiple configs (space-separated) claude --mcp-config ./team.json ./personal.json # Strict: ignore all other MCP sources claude --mcp-config ./only.json --strict-mcp-config # Set up a long-lived auth token for an MCP server claude setup-token
Minimal .mcp.json:
{
"mcpServers": {
"fs": {
"command": "uvx",
"args": ["mcp-server-filesystem", "."],
"env": {}
},
"gh": {
"command": "gh-mcp-server",
"args": [],
"env": {}
}
}
}
Once connected, MCP prompts appear at /mcp__<server>__<prompt>. Inspect:
claude /mcp # inside a session # or claude mcp # subcommand form for management
See also the broader 2026 Q2 notes on Cloudflare's MCP enterprise architecture and terminal AI agents 2025.
14. Session 11 — Plugins advanced
Plugins add commands, skills, hooks, and MCP servers in one bundle.
claude plugin list claude plugin install <name> claude --plugin-dir ./local-plugins # ephemeral, session-only
A plugin directory looks roughly like:
my-plugin/ ├── manifest.json ├── skills/ │ └── my-skill/SKILL.md ├── hooks/ │ └── pre-tool.sh ├── agents/ │ └── specialist.json └── mcp.json
When loaded, all contained surfaces register.
15. Session 12 — Worktrees and tmux advanced
Git worktrees + Claude = per-feature, per-branch sandboxes that don't stomp on each other.
# Create a worktree and start Claude in it claude -w feat-x # Create a worktree AND open it in a tmux session claude -w feat-y --tmux # With a named session for /resume claude -w feat-z -n "feature z planning"
On this project we keep worktrees inside the repo under worktrees/
(gitignored). Set BEADS_NO_DAEMON=1 in each worktree so bd doesn't
fight itself.
Inside a Claude session, the harness has EnterWorktree and
ExitWorktree tools. From 2.1.105 on, EnterWorktree accepts a path
parameter, so subagents can operate on a named directory.
15.1. Exercise
Create a throwaway worktree, run Claude inside it with a trivial task,
run /diff, then git worktree remove the worktree. Confirm no leaks
into main.
16. Session 13 — Remote, web, IDE intermediate
/remote-control— make this terminal session remotely controllable from claude.ai./remote-env— configure the default cloud environment for web sessions./teleport— pull a Claude-on-the-web session into the terminal./autofix-pr [prompt]— spawn a remote session that watches a PR and pushes fixes./ide/--ide— connect to an IDE (VS Code, JetBrains) on startup./chrome/--chrome— Claude-in-Chrome integration./desktop,/ios,/android,/mobile— link a session to the desktop or mobile app.
Useful combination: use /autofix-pr from your laptop, then
/remote-control to drive it from your phone.
17. Session 14 — Sessions and history intermediate
The session file is the source of truth; everything else (terminal UI, Remote Control, etc.) is a view.
# Resume a specific session by ID (fork instead of mutate) claude -r <uuid> --fork-session # Resume by PR (opens interactive picker scoped to PR-linked sessions) claude --from-pr 123 # Resume with a search term claude -r "caching-layer" # Start a session with a known UUID (for scripting) claude --session-id $(uuidgen)
--no-session-persistence turns off session files entirely (only with
-p). Pair with --bare for fully reproducible one-shots.
18. Session 15 — Advanced modes advanced
/fast [on|off]— Fast mode. Same Opus 4.6 model; faster output path. Trade: slightly less deliberation, much lower latency./sandbox— toggle sandbox mode on the current session./tui fullscreenvs/tui default— alt-screen vs inline rendering./focus— minimal UI (prompt + tool summary + response).automode (via/effort autoor/model autoon Max) — permission classifier picks effort/model per turn.
--bare is the extreme of "do less automatically"; /focus and
/tui fullscreen are the extremes of "show less automatically."
19. Session 16 — Debugging and doctors intermediate
# Turn on debug logging, filter to specific categories claude -d "api,hooks" # Send debug output to a file (implicitly enables debug) claude --debug-file /tmp/claude-debug.log # Category negation claude -d "!1p,!file" # everything except first-party and file noise # One-shot health check claude doctor # Inside a session # /doctor — diagnose harness # /heapdump — JS heap snapshot + memory breakdown # /stats — daily usage, session history, streaks # /insights — session analysis report
When a session misbehaves, the triage order is usually:
/context— is the window saturated?/doctor— is the harness healthy?-din a fresh session — reproduce with logs./heapdump— if memory is spiralling.
20. Session 17 — Telemetry and gossip advanced
On a LAN with an OTel collector, the harness emits metrics and logs via OTLP when these env vars are set:
# Sample telemetry env — source this before starting claude export CLAUDE_CODE_ENABLE_TELEMETRY=1 export OTEL_METRICS_EXPORTER=otlp export OTEL_LOGS_EXPORTER=otlp export OTEL_EXPORTER_OTLP_PROTOCOL=grpc export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector.local:4317 export OTEL_RESOURCE_ATTRIBUTES="host.name=$(hostname -s),team=solo"
The per-session resource attributes let you filter dashboards meaningfully (by repo, host, branch, conjecture).
21. Appendix A — CLI flags (complete reference, 2.1.114)
From claude --help.
21.1. Flags
| Flag | Purpose |
|---|---|
--add-dir <dirs...> |
Additional readable directories |
--agent <name> |
Pin agent for this session |
--agents <json> |
Define custom agents inline |
--allow-dangerously-skip-permissions |
Enable skip-permissions flag (still needs to be used) |
--allowedTools <tools...> |
Allow list (space/comma) |
--append-system-prompt <prompt> |
Append to default system prompt |
--bare |
Skip hooks/LSP/plugins/auto-memory/CLAUDE.md |
--betas <betas...> |
Beta headers (API-key users only) |
--brief |
Enable SendUserMessage tool |
--chrome / --no-chrome |
Chrome integration toggle |
-c, --continue |
Continue most recent session in cwd |
--dangerously-skip-permissions |
Bypass all permission checks |
-d, --debug [filter] |
Debug mode (e.g. api,hooks or !1p,!file) |
--debug-file <path> |
Write debug log to path |
--disable-slash-commands |
Disable all skills |
--disallowedTools <tools...> |
Deny list |
--effort <level> |
low / medium / high / max (xhigh on 2.1.111+) |
--fallback-model <model> |
Fallback on overload (-p only) |
--file <specs...> |
File resources at startup: file_id:path |
--fork-session |
New session id when resuming |
--from-pr [value] |
Resume a session linked to a PR |
-h, --help |
Help |
--ide |
Auto-connect to IDE at startup |
--include-hook-events |
Emit hook lifecycle events (stream-json only) |
--include-partial-messages |
Emit partial chunks (-p + stream-json) |
--input-format <fmt> |
text or stream-json (with -p) |
--json-schema <schema> |
Structured-output schema |
--max-budget-usd <amount> |
Hard spend cap (-p only) |
--mcp-config <configs...> |
MCP config files/strings |
--model <name> |
sonnet / opus / haiku / full id |
-n, --name <name> |
Session display name |
--no-session-persistence |
No session file (-p only) |
--output-format <fmt> |
text / json / stream-json (-p only) |
--permission-mode <mode> |
acceptEdits / bypassPermissions / default / dontAsk / plan / auto |
--plugin-dir <path> |
Load plugins from path (repeatable) |
-p, --print |
Non-interactive |
--replay-user-messages |
Re-emit user msgs on stdout (stream-json) |
-r, --resume [value] |
Resume by id or picker |
--session-id <uuid> |
Use specific UUID |
--setting-sources <list> |
user,project,local (comma) |
--settings <file-or-json> |
Extra settings |
--strict-mcp-config |
Ignore other MCP sources |
--system-prompt <prompt> |
Replace default system prompt |
--tmux |
Tmux session for worktree (--tmux=classic variant) |
--tools <tools...> |
Built-in tool subset or default or "" |
--verbose |
Override verbose config |
-v, --version |
Version |
-w, --worktree [name] |
Create worktree for session |
21.2. Subcommands
| Command | Purpose |
|---|---|
agents |
List configured agents |
auth |
Manage authentication |
auto-mode |
Inspect auto-mode classifier configuration |
doctor |
Health check (spawns stdio MCP servers; trust required) |
install [target] |
Install native build (stable/latest/version) |
mcp |
Manage MCP servers |
plugin / plugins |
Manage plugins |
setup-token |
Create a long-lived auth token (Claude subscription) |
update / upgrade |
Check and install updates |
22. Appendix B — Slash commands (complete reference, 2.1.114)
22.1. Session control
| Command | Purpose |
|---|---|
/clear (/new) |
Reset conversation |
/exit |
Exit |
/resume [session] |
Pick a prior session |
/branch [name] |
Fork at this point |
/rewind / /undo |
Rewind conversation + code |
/rename [name] |
Label this session |
/recap |
One-line session summary |
22.2. Model and configuration
| Command | Purpose |
|---|---|
/model [name] |
Switch model |
/effort [level] |
Low / medium / high / xhigh / max / auto |
/config |
Settings UI |
/theme |
Color theme |
/color [c] |
Prompt-bar color |
22.3. Permissions and safety
| Command | Purpose |
|---|---|
/permissions |
Allow/ask/deny rules |
/sandbox |
Toggle sandbox mode |
/add-dir <path> |
Grant access to another dir |
22.4. Context and memory
| Command | Purpose |
|---|---|
/context |
Context-usage visualization |
/compact [focus] |
Summarize + free context |
/memory |
Edit CLAUDE.md memory files |
/cost |
Token usage stats |
22.5. Development and review
| Command | Purpose |
|---|---|
/review [PR] |
Review a PR locally |
/security-review |
Scan pending changes |
/diff |
Interactive diff viewer |
/ultrareview |
Cloud-based deep review (2.1.111+) |
22.6. Workflow
| Command | Purpose |
|---|---|
/btw <question> |
Side question; not in history |
/plan [description] |
Enter plan mode |
/ultraplan |
Auto cloud-env plan (2.1.101+) |
/schedule [description] |
Recurring remote agents |
22.7. Tools and integrations
| Command | Purpose |
|---|---|
/mcp |
MCP connections |
/plugin |
Plugins |
/hooks |
Hook configurations |
/ide |
IDE integrations |
/install-slack-app |
Slack app install |
/install-github-app |
GitHub Actions app |
/chrome |
Claude in Chrome |
22.8. Display and UI
| Command | Purpose | |
|---|---|---|
/help |
Full help | |
| =/tui [default | fullscreen]= | Renderer |
/focus |
Minimal focus view | |
/copy [N] |
Copy Nth-latest response | |
/export [filename] |
Export conversation as text |
22.9. Account and status
| Command | Purpose |
|---|---|
/login / /logout |
Auth |
/status |
Version, model, account |
/usage |
Plan limits |
/upgrade |
Upgrade |
/mobile |
QR for mobile |
/passes |
Share a free week |
22.10. Desktop, mobile, remote, web
| Command | Purpose |
|---|---|
/desktop |
Continue in Desktop app |
/ios, /android |
QR codes |
/remote-control |
Drive from claude.ai |
/remote-env |
Default cloud env |
/teleport |
Pull web session to terminal |
/autofix-pr [prompt] |
Remote PR auto-fix |
/web-setup |
Connect GitHub to web |
22.11. Advanced and utility
| Command | Purpose | |
|---|---|---|
| =/fast [on | off]= | Fast mode |
/skills |
List skills | |
/agents |
Manage agents | |
/doctor |
Diagnose install | |
/heapdump |
JS heap snapshot | |
/insights |
Session analysis report | |
/stats |
Usage stats | |
/release-notes |
Interactive changelog | |
/powerup |
Animated feature tours | |
/feedback [report] |
Submit feedback | |
/extra-usage |
Configure overflow usage | |
/privacy-settings |
Privacy | |
/keybindings |
Keybindings config | |
/statusline |
Status line config | |
/terminal-setup |
Terminal keybindings | |
/voice |
Push-to-talk voice dictation |
22.12. Cloud setup
| Command | Purpose |
|---|---|
/setup-vertex |
Google Vertex AI wizard |
/setup-bedrock |
Amazon Bedrock wizard |
22.13. Bundled skills (invocable as slash-commands)
| Skill | Purpose |
|---|---|
/batch <instruction> |
Parallel 5-30-agent orchestration |
/simplify [focus] |
Quality review of changed files |
/debug [description] |
Debug logging + bug walkthrough |
/loop [interval] [prompt] |
Run prompt repeatedly |
/claude-api |
Load Claude API reference for project |
/fewer-permission-prompts |
Propose allowlist from transcript |
/less-permission-prompts |
Same, 2.1.111+ |
23. Appendix C — Tangled starter configs
23.1. ~/.claude/settings.json (skeleton)
{
"permissions": {
"deny": [
"Bash(rm -rf /)",
"Bash(rm -rf ~)",
"Bash(git push --force)",
"Bash(git push -f)",
"Bash(sudo:*)"
],
"ask": [
"Bash(git push:*)",
"Bash(curl:*)",
"Bash(wget:*)"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"command": "~/.claude/hooks/guard-dangerous-bash.sh"
}
]
},
"sandbox": {
"network": {
"deniedDomains": [
"pastebin.com",
"transfer.sh",
"0x0.st"
]
}
},
"autoScrollEnabled": true
}
23.2. Project-local .claude/settings.json (skeleton)
{
"permissions": {
"allow": [
"Read",
"Grep",
"Glob",
"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(gmake:*)"
],
"ask": [
"Bash(git push:*)",
"Edit",
"Write"
]
},
"hooks": {
"SessionStart": [
{"command": "bd ready 2>/dev/null | head -5 || true"}
]
}
}
23.3. A minimal invocation recipe file
# claude-review.sh — non-interactive code review of HEAD set -euo pipefail claude --bare -p "Review the diff in HEAD. List blocking issues with file:line, then non-blocking suggestions. Be terse." \ --agent reviewer \ --allowedTools 'Read Grep Glob Bash(git:*)' \ --permission-mode dontAsk \ --max-budget-usd 0.25 \ --no-session-persistence \ --output-format text
24. Open questions
- How stable is the flag surface?
--barelanded recently; historical flags like--mcp-debugare already deprecated. Anything scripted against 2.1.x should pin the CLI version or usedoctoras a capability probe. - Is there a canonical way to introspect which slash commands are
available right now?
/helpshows a filtered list.--disable-slash-commandsis the inverse. No JSON introspection endpoint as of 2.1.114. - Hook veto semantics.
PreToolUsehooks can return{"decision":"deny"}. Order of multiple hooks, short-circuit semantics, and whetherdenymessages surface to the model consistently remain under-documented.
25. Related
- Claude Code Features — 2026 Q2 — speculative / forward-looking companion to this reference.
- Cloudflare Agents Week 2026 — how Claude Code's surface intersects managed-agent infrastructure.
- Agentic Workflow with Claude Code — the workflow around the tool, complementary to the surface here.
- Elenctic Vibe Code Review — what to do with the output once Claude produces it.
