Part 2 of 2 — Part 1 covered the autonomy stack (planning, thinking, auto mode, permissions, background work, sandboxing). This deck is everything around it: sessions that persist and fork, the keyboard you actually drive with, and the surfaces Claude Code now lives on — TUI, voice, Chrome, your phone, the browser, the desktop — plus the settings machinery that governs it all.
Part 1 asked "how much can Claude do on its own?" This part asks three different questions: how do you keep and branch work across sessions, where can you drive Claude Code from, and who controls the configuration underneath.
Resume by name, fork to explore alternatives, get a recap when you return. Plus the interactive layer: shortcuts, custom keybindings, vim mode, bash mode.
Fullscreen TUI, voice dictation, Channels pushing events in, Chrome as Claude's browser, Remote Control from your phone, web sessions, the desktop app.
Three config files, ~40 environment variables, enterprise managed settings deployed through the OS — and the experimental Agent Teams switch.
| claude -c | Continue the most recent conversation |
| claude -r "auth-refactor" | Resume a session by name or ID — optionally with a new prompt appended |
| /resume | Resume a conversation by ID or name from inside the REPL |
| /rename | Name the current session so -r can find it later |
| /fork | Fork the current session into a new branch |
# resume and fork for experimentation claude --resume auth-refactor \ --fork-session "try OAuth instead"
Try an alternative approach without losing the original — the session-scale version of checkpoint branching from Chapter 8.
| Ctrl+C · Ctrl+D | Cancel input/generation · exit Claude Code |
| Shift+Tab / Alt+M | Toggle permission modes |
| Esc Esc | Rewind code/conversation (Ch. 8) |
| Ctrl+T · Ctrl+B | Toggle task list · background running tasks |
| Ctrl+O | Toggle verbose output (view reasoning) |
| Ctrl+R | Reverse-search history |
| Ctrl+G | Edit plan in external editor |
| Ctrl+L | Clear terminal screen |
| Option/Alt+P · +T | Switch model · toggle extended thinking |
| Ctrl+A · Ctrl+E | Line start · line end |
| Ctrl+K · Ctrl+U | Cut to end · cut to start |
| Ctrl+W · Ctrl+Y | Delete word back · paste (yank) |
| Tab · ↑/↓ | Autocomplete · command history |
If your shell muscle memory is bash/zsh/emacs, it transfers wholesale — same bindings, same behavior.
{
"bindings": [
{ "context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor",
"ctrl+u": null, ← unbind a default
"ctrl+k ctrl+s": "chat:stash" ← chord
} },
{ "context": "Confirmation",
"bindings": { "ctrl+a": "confirmation:yes" } }
]
}
/keybindings opens ~/.claude/keybindings.json (v2.1.18+). Modifiers: ctrl, alt/opt, shift, meta/cmd; uppercase implies Shift (K = shift+k).
Chat (submit, cancel, cycleMode, externalEditor, stash…) · Confirmation (yes, no, toggleExplanation) · Global (interrupt, exit, toggleTodos) · Autocomplete · HistorySearch — 18 contexts total, incl. Transcript, Task, DiffDialog, ModelPicker.
| Ctrl+C · Ctrl+D | Reserved — cannot be rebound (interrupt / exit) |
| Ctrl+B · Ctrl+A · Ctrl+Z | Terminal conflicts: tmux prefix · GNU Screen prefix · process suspend |
| Tab completion | /rew⇥ → /rewind · /plugin ⇥ expands subcommands (install, enable, disable) |
| Ctrl+R history search | Reverse-search defaults to all prompts across all projects (v2.1.129+); press Ctrl+S inside the picker to narrow to the current project |
| Multi-line input | Start with \, write across lines, finish with \end — for prompts with requirement lists |
| Inline editing | Edit the command in place before sending — fix the typo, then submit |
| Bash mode ! | ! npm test · ! git status — run a shell command directly, no context switch |
Toggle "Editor / Vim mode" in /config, or set editorMode: "vim" in ~/.claude/settings.json. The standalone /vim command was removed — it's configuration-driven now.
| v | Character-wise selection; extend with motion keys |
| V | Line-wise — always selects whole lines |
| y | Yank (copy) the selection |
| d / x | Delete the selection |
| c | Change — delete and enter INSERT |
| Esc | Back to NORMAL |
Selections are highlighted in the input field — you see exactly what will be yanked, deleted, or changed before committing the operator.
/tui # toggle from within a session claude --tui # start directly in TUI mode
/voice
| Push-to-talk | Hold a key to record, release to send |
| 20 languages | Speech-to-text support |
| Custom key | Configure the push-to-talk key via /keybindings |
| Requirement | A Claude.ai account — STT runs through it |
A Research Preview where MCP servers act as channel plugins: messages from outside arrive in your active session in real time, and Claude can read and respond to them in context. No polling required.
# subscribe at startup
claude --channels discord,telegram
claude --channels discord,telegram,imessage,webhooks
Auth (v2.1.128+): works with both Pro/Max OAuth and API-key (console) authentication — earlier releases required OAuth.
| Discord | Receive and respond to messages in your session |
| Telegram | Receive and respond to messages in your session |
| iMessage | Receive iMessage notifications |
| Webhooks | Events from arbitrary webhook sources |
Plugins must be approved via the allowedChannelPlugins managed setting — admins control which sources an org may wire in.
claude --chrome # enable at startup claude --no-chrome # disable /chrome # within a session
Beta feature. Claude Code shares your browser's login state, so it can work inside authenticated apps. It controls a visible window — you watch actions happen, and on a login page or CAPTCHA it pauses for you to handle it manually.
Site-level permissions: the extension popup grants or revokes access per site — Claude only touches sites you've explicitly allowed.
Chrome and Edge only (no Brave/Arc) · not in WSL · not with Bedrock/Vertex/Foundry · extension service worker can go idle in long sessions.
claude remote-control --name "Auth Refactor" /remote-control # from within a session
Flags: --name · --verbose · --sandbox / --no-sandbox (default). Pro, Max, Team & Enterprise, v2.1.51+.
Enable "Push when Claude decides" in /config while Remote Control is active — your phone gets pinged when a long task finishes or needs input. Requires a subscription + the mobile app.
A standalone app for macOS (universal) and Windows (x64 / ARM64), on Pro, Max, Team and Enterprise plans. Hand off a CLI session to it with /desktop.
| Diff view | File-by-file visual review with inline comments — Claude reads them and revises |
| App preview | Auto-starts dev servers with an embedded browser; configure in .claude/launch.json (command, port, readyPattern, persistCookies) |
| PR monitoring | GitHub CLI integration — auto-fix CI failures, auto-merge when checks pass |
| Parallel sessions | Sidebar sessions with automatic worktree isolation |
| Scheduled tasks | Hourly / daily / weekdays / weekly — run while the app is open |
| Rich rendering | Code, markdown, diagrams; GFM task checkboxes render (v2.1.149+) |
GitHub, Slack, Linear, Notion, Asana, Calendar — richer context per session. Not available for remote (cloud) sessions.
Remote — Anthropic cloud, keeps running with the app closed. SSH — full remote filesystem and tools; Claude Code must be installed on the remote machine.
Admin console for Code-tab access · MDM (macOS) / MSIX (Windows) deployment · SSO requirement · centrally managed settings. Permission modes mirror the CLI: ask, auto-accept edits, plan, bypass (sandbox-only, admin-controlled).
# named task directory shared across sessions
export CLAUDE_CODE_TASK_LIST_ID=my-project-sprint-3
Multiple sessions share one list — team workflows, multi-session projects.
# turn them off
export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false
Admins deploy configuration org-wide via macOS managed plists (MDM), the Windows Registry, or managed configuration files (all v2.1.51+). Since v2.1.83, modular drop-ins let different teams own different policy files:
| disableBypassPermissionsMode | Users can never enable bypass permissions |
| availableModels | Restrict which models users can select |
| allowedChannelPlugins · autoMode.environment | Gate channel sources · define trusted infrastructure for auto mode |
| wslInheritsWindowsSettings | (v2.1.118+) WSL inherits the Windows host's managed settings — one policy, both shells |
| parentSettingsBehavior | (v2.1.133+, admin-tier) SDK merge strategy: "first-wins" or "merge" |
| ~/.claude/config.json | Global config |
| ./.claude/config.json | Per-project — hooks, permissions, project MCP servers |
| ~/.config/claude-code/settings.json | User config |
/config opens the interactive menu — extended thinking, verbose output, permission mode, model selection — without touching a file.
| Models & API | ANTHROPIC_MODEL, per-tier defaults, ANTHROPIC_API_KEY |
| Thinking | MAX_THINKING_TOKENS · CLAUDE_CODE_EFFORT_LEVEL |
| Feature toggles | …DISABLE_CRON, …DISABLE_AUTO_MEMORY, …ENABLE_PROMPT_SUGGESTION, …SIMPLE (--bare) |
| Context & caching | ENABLE_PROMPT_CACHING_1H=1 (1-h TTL vs 5-min default) · CLAUDE_AUTOCOMPACT_PCT_OVERRIDE |
| MCP & agents | MAX_MCP_OUTPUT_TOKENS · ENABLE_TOOL_SEARCH · …SUBAGENT_MODEL · …TASK_LIST_ID |
| Hardening | …SUBPROCESS_ENV_SCRUB (hide secrets from subprocesses) · …STOP_HOOK_BLOCK_CAP (v2.1.143) |
| Platform | …FORCE_SYNC_OUTPUT, …PACKAGE_MANAGER_AUTO_UPDATE (v2.1.129) · PowerShell controls (v2.1.143) · ANTHROPIC_WORKSPACE_ID |
# enable (experimental, off by default) export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 # or in your settings JSON { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" }
| in-process | Default — teammates run within the same terminal process |
| tmux | Each teammate gets a dedicated split pane (requires tmux or iTerm2) |
| auto | Automatically selects the best display mode |
claude --teammate-mode tmux
Use cases: large refactors split by module · parallel review + implementation · coordinated multi-file changes. Experimental — expect change.
The chapter's remaining best-practice groups ride with their features in Part 1 (Autonomy & Control): planning mode (complex tasks only, review before approving) · extended thinking (architecture, not trivia) · background tasks (monitor, don't over-spawn) · permission modes (plan for review, default for pairing, acceptEdits for automation, auto for guarded autonomy — and bypassPermissions almost never).
Sessions persist, resume by name (claude -r), fork into branches, and recap themselves when you return. The interactive layer is fully yours: twelve workflow shortcuts, readline editing, rebindable keys across 18 UI contexts, vim mode with real visual selections, ! for raw shell. The surfaces multiply — fullscreen TUI, push-to-talk voice, Channels pushing Discord and Telegram into the session, Chrome as Claude's hands on the web, Remote Control from your phone with execution staying local, web sessions in Anthropic's cloud with /teleport back, and a desktop app with visual diffs and parallel worktree sessions. Underneath: a task list that survives compaction, three config files plus ~40 env vars, enterprise managed settings merged from drop-ins users can't override, and Agent Teams behind an experimental flag.