Моя шпаргалка по Claude Code

Это не официальная документация. Это моя личная шпаргалка: где что живёт в Claude Code и какие команды чаще всего нужны.

Я писал её для того момента, когда ты смутно помнишь, что Claude Code что-то умеет, но не помнишь где именно это живёт, как называется и в чём подвох. Первые разделы можно читать подряд, остальное скорее как меню.


1. Desktop App: Chat vs Code (vs Cowork)

Если разные режимы Claude кажутся размытыми, вот разделение которое реально важно:

ChatCodeCowork
Что этоОбычный диалог с ClaudeClaude Code с GUI (diff, PR-превью)Агентные задачи на файлах
Для когоВсеРазработчикиВсе (knowledge work)
Доступ к файламНет (только upload)Да (вся папка проекта)Да (выбранная папка)
Работает на iOS/webТолько через Remote ControlDispatch через мобилку
MCP

Короче: Chat это conversation-first. Code это environment-first. Cowork это task-first.


2. Синхронизация чатов между устройствами

Вот это различие чаще всего всех и путает:

SurfaceСинхронизация
Chat (desktop/iOS/web)✅ Полная — один и тот же список чатов везде
Code tab❌ Нет автосинка. Сессии хранятся локально в ~/.claude/
Code → мобилкаТолько через Remote Control (/remote-control в терминале) — это “окно” в локальную сессию, не облако

Remote Control (вышел в фев 2026): запускаешь из CLI (claude --remote-control или /remote-control), получаешь ссылку/QR, и управляешь той же локальной сессией из claude.ai/code или мобильного приложения. Claude по-прежнему работает на твоей машине, поэтому терминал должен быть открыт.


3. MCP и контекст — правда о токенах

Да, MCP всегда ест контекст. Это не драма, а просто механика системы.

Каждый подключённый MCP-сервер инжектирует свои tool definitions в каждый запрос:

  • 1 tool ≈ 550–1400 токенов (имя + JSON-схема + описание)
  • GitHub MCP (~66 tools) → +46k токенов до того, как ты написал первое сообщение
  • 3 сервера (GitHub + Slack + Sentry, ~40 tools) → ~55k токенов съедено сразу

Видеть расход: команда /context внутри Claude Code сессии — покажет разбивку по категориям.

Почему MCP иногда начинает раздражать? Обычно потому что его включили слишком много и сразу:

  • Контекст-bloat при большом количестве tools
  • 28% failure rate у некоторых серверов (по бенчмаркам)

Альтернативы / митигация:

  • Подключать только нужные серверы (отключать неиспользуемые через /mcp)
  • Использовать Tool Search (Anthropic фича — lazy-loading tool definitions)
  • Использовать claude mcp serve вместо тяжёлых серверов
  • Просто bash + gh CLI вместо GitHub MCP для простых операций

Мой перекос такой: MCP стоит держать для вещей, которые реально расширяют возможности Claude, а не для действий, которые обычный CLI и так делает нормально.


4. MCP на iOS/web

Нативных MCP на iOS/web нет.

ПлатформаMCP
Claude Desktop✅ (локальные desktop extensions)
Claude Code CLI
Claude Code в Zed/VS Code
claude.ai (web)⚠️ Только web connectors (Slack, Notion, Gmail и т.д.) — это не MCP в полном смысле, это облачные интеграции
iOS / Android⚠️ Те же web connectors через аккаунт. Локальные MCP — только через Remote Control (прокси через твой компьютер)

5. Изоляция MCP между окружениями — это НЕ баг

Это меня выморозило в первый же день работы с Zed. Тулы которые я подключил в терминальном Claude в Zed просто не появлялись — и наоборот. Потратил какое-то время прежде чем понял, что это разные процессы с разными конфигами. Не баг, просто неочевидное поведение о котором никто заранее не предупреждает.

Каждое окружение — отдельный MCP-клиент со своим конфигом.

ОкружениеГде хранится конфиг MCP
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Claude Code CLI~/.claude.json (user scope) и .mcp.json в проекте (project scope)
Claude Code в VS Code.vscode/mcp.json или user profile VS Code
Claude Code в ZedZed использует свой vendored Claude Code CLI — отдельный процесс со своими настройками

Конкретно: Figma MCP в Zed ≠ Figma MCP в терминале

Zed держит свою копию Claude Code CLI и не читает твой ~/.claude.json автоматически. Это отдельный процесс.

Как пошарить конфиг:

# Импортировать Claude Desktop серверы в Claude Code CLI:
claude mcp add-from-claude-desktop

# Посмотреть что подключено в CLI:
claude mcp list

# Добавить сервер глобально (user scope):
claude mcp add figma --scope user

Для Zed — по умолчанию используется vendored копия, но можно переключить на глобальную:

// ~/Library/Application Support/Zed/settings.json
{
  "agent_servers": {
    "claude-acp": {
      "type": "registry",
      "env": {
        "CLAUDE_CODE_EXECUTABLE": "/path/to/claude"  // узнать: which claude
      }
    }
  }
}

Это даст доступ к MCP из ~/.claude.json и к глобальным настройкам.

Scopes в Claude Code CLI:

ScopeФлагГде хранитсяКто видитВ git?
localдефолт~/.claude.json → под путём проектаТолько ты, только этот проект
project--scope project.mcp.json в корне проектаВся команда
user--scope user~/.claude.json глобальноТолько ты, все проекты

Приоритет при конфликте имён: local > project > user

Когда какой использовать:

  • user — инструменты нужны везде (Figma, GitHub, личные утилиты)
  • project — стандарт команды (общая БД, Sentry проекта)
  • local (дефолт) — пробуешь что-то / держишь секреты / не хочешь коммитить
claude mcp add figma --scope user ...       # везде, только для тебя
claude mcp add sentry --scope project ...  # в .mcp.json → в git → все видят
claude mcp add my-db                       # local по умолчанию

⚠️ Секреты в --scope project попадут в .mcp.json → в git. Используй --env KEY=value вместо хардкода значений.


6. MCP vs Plugin

MCP — сервер с инструментами, добавляется через claude mcp add.

Plugin — пакет который может содержать MCP + skills + hooks. Добавляется через claude plugin install. В /mcp отображается как plugin:name:name в секции Built-in MCPs.

# MCP напрямую
claude mcp add my-server --scope local -- uvx my-server

# Через плагин (включает MCP + skills)
claude plugin install figma@claude-plugins-official --scope local

⚠️ Плагины с --scope local отображаются в Built-in MCPs (always available) — это визуальный баг. Реально они доступны только в проекте где установлены.

Удалить: claude mcp remove <n> / claude plugin uninstall <n>


7. Установка Claude Code

МетодСтатусАвтообновление
curl -fsSL https://claude.ai/install.sh | bash✅ Рекомендуемый✅ Автоматически
brew install --cask claude-code✅ Официальныйbrew upgrade claude-code вручную
npm install -g @anthropic-ai/claude-code⚠️ Deprecated❌ Вручную

8. Конфиг-файлы Claude Code

ФайлКто пишетЧто хранит
~/.claude/settings.jsonТыpermissions, hooks, env vars, модель
~/.claude.jsonClaude Code (не трогай)MCP user/local scope, OAuth, кэши, UI-настройки
.mcp.json в проектеТы / командаMCP project scope (в git)
~/.claude/CLAUDE.mdТыГлобальные инструкции для Claude

9. CLAUDE.md vs .claude/settings.json

CLAUDE.md.claude/settings.json
ФорматMarkdown, свободный текстJSON, строгая структура
Кто читаетClaude (как контекст)Claude Code (как рантайм конфиг)
Что задаётИнструкции, конвенции, стильPermissions, hooks, env vars
В git✅ Да✅ Да (без секретов)

CLAUDE.md — онбординг-документ для AI. Claude читает и следует написанному:

# Project conventions
- Always use TypeScript strict mode
- Run `npm test` before committing
- API endpoints follow REST conventions

.claude/settings.json — машиночитаемый конфиг рантайма. Claude Code применяет механически:

{
  "permissions": {
    "allow": ["Bash(npm run test)", "Bash(npm run lint)"],
    "deny": ["Bash(rm -rf *)"]
  }
}

Аналогия: CLAUDE.md — README для AI. .claude/settings.json — настройки инструмента.


10. Permissions

Система контроля над тем, что Claude Code может делать без твоего разрешения.

Режимы работы

РежимПоведение
defaultСпрашивает перед каждым новым типом действия
acceptEditsАвтопринятие изменений файлов, спрашивает про bash
autoAI-классификатор сам решает что спрашивать
bypassPermissionsПропускает всё ⚠️ только для CI/sandbox
planRead-only, только читает и планирует

Настройка в settings.json

{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git *)",
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(curl *)",
      "Read(.env)"
    ],
    "ask": [
      "Bash(git push *)"
    ]
  }
}

Три массива

  • allow — выполнять без вопросов
  • deny — всегда блокировать (приоритет над allow)
  • ask — всегда спрашивать даже если в allow

Синтаксис паттернов

Bash(npm run *)           # любая npm run команда
Read(.env*)               # любой .env файл
WebFetch(domain:github.com)  # только конкретный домен
mcp__github__*            # все tools конкретного MCP сервера
Agent(Explore)            # конкретный subagent

Управление в сессии

/permissions              # посмотреть текущие
/config                   # изменить режим
claude --permission-mode acceptEdits  # из CLI

⚠️ deny из любого scope блокирует действие независимо от других настроек.


11. Tools vs Skills

Tools — конкретные действия которые Claude выполняет. Встроены в Claude Code:

  • Read, Write, Edit — работа с файлами
  • Bash — выполнение команд
  • Glob, Grep, LS — поиск
  • WebFetch, WebSearch — интернет
  • MCP-инструменты появляются как mcp__servername__toolname

Permissions в settings.json управляют именно tools:

{ "permissions": { "allow": ["Bash(npm run test)"], "deny": ["Bash(rm -rf *)"] } }

Skills — инструкции как работать, а не что делать. Markdown-файл который подгружается в контекст.

  • Активно: вызов через /skill-name
  • Пассивно: Claude сам подтягивает по description в frontmatter
---
description: Use when working with React components
---
# React Guidelines...

Skills ≠ tools. Skills — знания, tools — руки.

Формат skill: один файл SKILL.md (простой) или папка с SKILL.md как точкой входа (сложный, с шаблонами/скриптами).


12. Кастомные Slash команды

Markdown файл = команда. Имя файла = имя команды.

.claude/commands/ — legacy формат, но рабочий. Рекомендуемый — Skills (.claude/skills/).

Создать команду

# Для проекта (в git, все видят)
mkdir -p .claude/commands
echo "Review for security vulnerabilities:" > .claude/commands/security.md

# Для себя (все проекты)
mkdir -p ~/.claude/commands
echo "Analyze performance, suggest 3 optimizations:" > ~/.claude/commands/optimize.md

Вызов: /security, /optimize

С аргументами и frontmatter

---
description: Fix a GitHub issue
argument-hint: [issue-number]
allowed-tools: Bash(git *), Read, Write
---

Fix issue #$ARGUMENTS. Steps:
1. Read the issue description
2. Find relevant code
3. Implement the fix
4. Run tests

Вызов: /fix-issue 123

$1, $2 — позиционные аргументы, $ARGUMENTS — всё сразу.

Динамический контент (bash внутри команды)

Префикс ! — выполнить bash и вставить результат:

---
allowed-tools: Bash(git diff:*), Bash(git log:*)
---

Explain these changes:
!`git diff HEAD~1`
!`git log --oneline -5`

Namespacing через папки

.claude/commands/
├── review.md          → /review
├── security/
│   ├── audit.md       → /security:audit
│   └── deps.md        → /security:deps
└── deploy/
    └── prod.md        → /deploy:prod

Commands vs Skills

Commands (legacy)Skills (рекомендуется)
ВызовТолько явно /commandЯвно + автоматически Claude’ом
СтруктураОдин .md файлПапка с SKILL.md
Расположение.claude/commands/.claude/skills/

13. Subagents и Agent Teams

Subagents

Специализированные версии Claude в своём отдельном контексте. Результат возвращается в основной разговор.

Встроенные:

  • Explore (haiku) — исследование кодовой базы, read-only, быстрый
  • Plan (inherit) — анализ без изменений, для plan mode
  • general-purpose (inherit) — универсальный

Создать свой (~/.claude/agents/my-agent.md — для всех проектов, .claude/agents/ — для проекта):

---
name: code-reviewer
description: Reviews code for quality. Use proactively after code changes.
tools: Read, Grep, Glob, Bash
model: sonnet
---

You are a code reviewer. Check for quality, security, best practices.

Способы запустить:

СпособКак
АвтоматическиClaude сам решает по description
ТекстомUse the code-reviewer agent to check my changes
@-mention@"code-reviewer (agent)" look at auth module
Несколько сразуResearch auth, DB, and API in parallel using separate subagents
Вся сессияclaude --agent code-reviewer

Ключевые поля frontmatter:

  • modelhaiku / sonnet / opus / inherit
  • tools — allowlist tools (например Read, Grep, Glob)
  • disallowedTools — denylist (например Write, Edit)
  • memoryuser / project / local — персистентная память между сессиями (файл ~/.claude/memory.md или .claude/memory.md)
  • background: true — всегда запускать в фоне
  • permissionModedefault / acceptEdits / bypassPermissions / plan

Agent Teams (экспериментально)

Несколько независимых сессий Claude работают параллельно и общаются между собой. Один — lead, остальные — teammates.

Включить:

// ~/.claude/settings.json
{ "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" } }

Запустить текстом:

Create an agent team to review this PR: one focused on security,
one on performance, one on test coverage.
SubagentsAgent Teams
КонтекстСвой, результат → mainСвой, полностью независимый
ОбщениеТолько с mainTeammates общаются напрямую
ТокеныМеньшеЗначительно больше
КогдаЗадача → результатНужно обсуждение между агентами

⚠️ Экспериментальная фича. Много токенов. Не поддерживает resumption сессий.


14. Remote Control

Позволяет управлять локальной сессией Claude Code с телефона или браузера. Claude работает на твоей машине — наружу идут только сообщения чата.

Три способа запустить

# Server mode — терминал ждёт подключений, поддерживает несколько сессий
claude remote-control

# Интерактивная сессия + удалённый доступ одновременно
claude --remote-control "Название проекта"

# Включить на ходу из уже запущенной сессии
/remote-control

Как подключиться с другого устройства

  • Открыть URL из терминала
  • Сканировать QR-код (пробел в server mode)
  • Зайти на claude.ai/code → найти сессию по имени (зелёная точка = online)

Ограничения

  • Терминал должен быть открыт — закрыл, сессия умерла
  • Сеть пропала на 10+ минут → тайм-аут
  • Требует claude.ai подписку/авторизацию (Pro/Max/Team/Enterprise). API key авторизация не работает.

Remote Control vs Claude Code on the web

Remote ControlClaude Code on web
Где выполняетсяТвоя машинаСерверы Anthropic
Локальные файлы
Локальные MCP
Открытый терминалНуженНе нужен
Параллельные задачиЧерез --spawn worktree✅ Нативно

Автовключение для всех сессий: /config → Enable Remote Control for all sessions → true

До появления этой фичи я буквально об этом мечтал. Запустить долгую таску в Claude CLI, выйти на улицу за кофе или просто подышать воздухом — и продолжать работать в той же сессии с телефона, не останавливая вайбкодинг. Теперь так и работает.


15. Claude Code on the Web

Claude Code на серверах Anthropic — без локальной машины. Доступен на claude.ai/code.

Когда использовать:

  • Нет доступа к своей машине (телефон, чужой компьютер)
  • Параллельные async задачи без нагрузки на локальную машину
  • Работа с GitHub репо без клонирования — Claude клонирует сам
  • CI/CD и автоматизация без локального процесса

Ограничения: всё выполняется в облаке (нет доступа к твоим локальным файлам и локальным MCP серверам), и это GitHub-флоу (подключаешь GitHub и ставишь Claude GitHub App для полного сценария).


16. SSH Remote

Два способа запустить Claude Code на удалённой машине.

1. SSH сессии в Desktop app (официально)

Environment dropdown → + Add SSH connection → указать хост, пользователя, identity file. Claude запускается на удалённой машине, Desktop app — интерфейс. Claude Code должен быть установлен на удалённой машине. Поддерживает permissions, connectors, plugins, MCP.

2. SSH вручную через терминал

ssh user@remote-server
cd /my/project
claude

Проблема: соединение прервалось → сессия умерла. Решение — tmux:

ssh user@server
tmux new -s claude-session   # создать сессию
claude
# Ctrl+B, D — detach (отключиться, сессия живёт)
# Позже: tmux attach -t claude-session

SSH + Remote Control = лучшее из двух миров

Запускаешь на сервере → включаешь Remote Control → управляешь с телефона:

ssh user@server
tmux new -s work
claude --remote-control "my project"
# Открываешь claude.ai/code на телефоне

17. Dispatch

Делегировать задачу Claude с телефона пока не за компьютером. Claude выполняет на десктопе (Cowork), присылает уведомление когда готово.

DispatchRemote Control
Ты управляешь❌ Делегируешь✅ В реальном времени
Где работаетDesktop app (Cowork)CLI на твоей машине
Сценарий”Сделай пока я в дороге""Продолжить сессию с дивана”

Настройка: Cowork tab → Dispatch → Get started.


18. Channels

Пушит внешние события в уже запущенную локальную сессию Claude Code. Claude реагирует и отвечает обратно через тот же канал.

Сценарии: пишешь с телефона через Telegram → Claude отвечает там же, работая с локальными файлами. Или: CI упал → webhook прилетает в сессию → Claude реагирует.

Настройка Telegram (пример)

# 1. Создай бота через @BotFather в Telegram → получи токен

# 2. Установи плагин
/plugin install telegram@claude-plugins-official

# 3. Сконфигурируй токен
/telegram:configure <токен>

# 4. Запусти с каналом
claude --channels plugin:telegram@claude-plugins-official

# 5. Напиши боту в Telegram → получи код → спарь
/telegram:access pair <код>

# 6. Закрой доступ только для себя
/telegram:access policy allowlist

Несколько каналов: claude --channels plugin:telegram@... plugin:discord@...

ChannelsRemote ControlMCP
Кто инициируетВнешняя система пушитТы управляешьClaude запрашивает
СессияЗапущенная локальнаяЗапущенная локальнаяЛюбая

Требования: Bun (bun --version), подписка claude.ai, сессия должна быть открыта.


19. Claude in Chrome

Браузерная автоматизация прямо из CLI через расширение Chrome.

Требования: Chrome или Edge, расширение “Claude in Chrome” из Chrome Web Store, Claude Code v2.0.73+, подписка claude.ai (Pro/Max/Team/Enterprise). Не работает в WSL, Brave, Arc.

Включить

claude --chrome          # разово
/chrome                  # из текущей сессии
# /chrome → "Enabled by default" — всегда включено

Что умеет

  • Live debugging — читает console errors и DOM, потом фиксит код
  • Тестирование — открывает localhost, кликает, проверяет формы и flows
  • Авторизованные сайты — Google Docs, Gmail, Notion без API — использует твою сессию
  • Извлечение данных — парсит страницы, сохраняет в CSV/JSON
  • Автоматизация форм — заполняет данные из файла в веб-интерфейс
  • Запись GIF — записывает browser flow как демо

Примеры

Open localhost:3000, submit the login form with invalid data,
check if error messages appear correctly

Go to docs.google.com/document/d/abc123 and draft a project
update based on recent git commits

Extract product names and prices from this page, save as CSV

Claude in Chrome vs Chrome DevTools MCP vs Playwright MCP

/chromeChrome DevTools MCPPlaywright MCP
БраузерТвой ChromeТвой ChromeОтдельный процесс
Твои сессии/куки
УровеньВысокий (DOM/клики)Низкий (CDP/JS/сеть)Полный программный
Headless❌/✅
CI/CD
УстановкаРасширение Chrome Web StoreMCP серверMCP сервер

Когда что:

  • Тестировать localhost или работать с авторизованными сервисами → /chrome
  • Перехватить сетевые запросы, запустить JS программно → Chrome DevTools MCP
  • Автотесты в CI, кросс-браузерность → Playwright

vs Computer use

Claude in ChromeComputer use
Что контролируетТолько браузерВесь экран / любые приложения
ТочностьВысокая (DOM level)Пиксельная (скриншоты)
СкоростьБыстрееМедленнее
ПлатформаChrome / Edge, все ОСmacOS only

Claude всегда пробует Chrome extension первым если задача браузерная. Computer use — последний resort.


20. Computer Use

Claude управляет компьютером напрямую: открывает приложения, кликает, печатает, видит экран.

Требования: macOS, Pro или Max план, Claude Code v2.1.85+, интерактивная сессия (не -p)

Включить

/mcp → computer-use → Enable

Затем macOS попросит два разрешения: Accessibility и Screen Recording.

Как Claude выбирает инструмент (приоритет)

  1. MCP сервер (если есть для сервиса)
  2. Bash (если задача терминальная)
  3. Claude in Chrome (если браузерная)
  4. Computer use — только если ничего другого не подходит

Что умеет

  • Собрать и протестировать нативное приложение (Swift/Xcode)
  • Воспроизвести визуальный баг при определённом размере окна
  • Тестировать iOS Simulator без XCTest
  • Управлять GUI-only инструментами без API

Важные детали

  • Одна сессия одновременно — machine-wide lock
  • Esc — мгновенно останавливает из любого места
  • Пока Claude работает — другие приложения скрываются, терминал остаётся
  • Терминал никогда не попадает на скриншот — Claude не видит свой вывод
  • Каждое приложение одобряется отдельно в начале сессии

Пример

Build the MenuBarStats target, launch it, open preferences,
verify the interval slider updates the label. Screenshot when done.

21. Hooks

Shell-команды которые запускаются автоматически в определённые моменты работы Claude Code. Как git hooks, только для событий Claude Code.

Настраиваются в ~/.claude/settings.json (глобально) или .claude/settings.json (проект).

Lifecycle events

EventКогда срабатывает
PreToolUseПеред вызовом инструмента
PostToolUseПосле вызова инструмента
StopКогда Claude закончил отвечать
NotificationКогда Claude хочет отправить уведомление
PreCompactПеред компакцией контекста

Структура

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{
          "type": "command",
          "command": "your-command $CLAUDE_FILE_PATH"
        }]
      }
    ]
  }
}

matcher — фильтр по имени tool. "Write|Edit" — только запись файлов, "*" — всё. $CLAUDE_FILE_PATH — путь к файлу который изменили.

Примеры

Автолинтинг / форматирование после каждого изменения файла:

"PostToolUse": [{
  "matcher": "Write|Edit",
  "hooks": [{ "type": "command", "command": "npm run lint -- --fix $CLAUDE_FILE_PATH" }]
}]

Звуковой сигнал когда Claude закончил (macOS):

"Stop": [{
  "matcher": "*",
  "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}]

Уведомление в Telegram когда задача готова:

"Stop": [{
  "matcher": "*",
  "hooks": [{ "type": "command", "command": "curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text='Claude finished'" }]
}]

22. Scheduled Tasks

Запуск промптов по расписанию без твоего участия.

CLIDesktop (Cowork)Cloud
Где работаетТвоя машинаТвоя машинаСерверы Anthropic
Машина должна быть включена
НастройкаКоманда в терминалеUI в CoworkUI в Cowork

Примеры сценариев: ежедневный дайджест из Jira/GitHub перед стендапом, мониторинг Sentry раз в час, еженедельный анализ метрик.

Scheduled TasksChannels
ТриггерВремяВнешнее событие
Пример”каждый день в 9:00""CI упал → отреагируй”

23. Headless / Programmatic Usage

Запуск Claude Code из скриптов и CI/CD без интерактивного режима. Флаг -p (print mode).

# Выполнить промпт → stdout
claude -p "найди все TODO в проекте"

# Передать контекст через stdin
cat error.log | claude -p "объясни эту ошибку"

# Использовать в скриптах
result=$(claude -p "напиши тест для calculateTotal")

Полезные флаги

--output-format json          # вывод в JSON
--output-format stream-json   # стриминг JSON построчно
--max-turns 5                 # ограничить шаги агента
--allowedTools "Read,Bash"    # только конкретные tools
--dangerously-skip-permissions  # пропустить все подтверждения ⚠️
# Проверить все изменённые файлы в PR
git diff --name-only HEAD~1 | xargs -I{} claude -p "review for bugs: {}"

⚠️ --dangerously-skip-permissions убирает все подтверждения — только в изолированном окружении (Docker, CI sandbox).


24. Plan Mode

Режим только для чтения и анализа — Claude исследует кодовую базу и строит план, но ничего не меняет до твоего одобрения.

Включить

claude --plan              # из CLI
Shift+Tab                  # toggle внутри сессии

Или через settings.json:

{ "permissions": { "defaultMode": "plan" } }

Как работает

  1. Claude читает файлы, ищет по коду, изучает структуру
  2. Строит детальный план что и где нужно изменить
  3. Показывает план тебе
  4. Ждёт одобрения — ничего не меняет
  5. После одобрения — выходит из plan mode и выполняет

Исследование делегируется встроенному subagent Plan (read-only) — не засоряет основной контекст.

Когда использовать

  • Большие рефакторинги — проверить что Claude собирается делать
  • Незнакомая кодовая база — пусть сначала объяснит
  • Рискованные операции — одобрить план перед выполнением

Plan mode vs bypassPermissions

Plan modebypassPermissions
Читает файлы
Меняет файлы✅ без вопросов
Выполняет bash✅ без вопросов
НазначениеБезопасный анализАвтоматизация/CI

25. Context Compaction

Механизм управления контекстным окном когда оно заполняется.

Три команды

/clear — полностью очищает контекст. Начинаешь с нуля. Используй при переключении на другую задачу.

/compact — суммаризирует разговор в краткое резюме, заменяет им историю. Контекст освобождается, ключевые детали сохраняются:

/compact focus on the authentication changes we made

Autocompact — срабатывает автоматически при ~83.5% заполнения. Claude сам суммаризирует.

Управление порогом

// ~/.claude/settings.json — срабатывать раньше (рекомендуется 60-75%)
{ "env": { "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75" } }

// Отключить полностью (опасно — можно упереться в лимит)
{ "autoCompact": false }

Следить за расходом

/context    # разбивка токенов: system prompt, tools, MCP, messages, free space

Когда что

СитуацияКоманда
Переключился на другую задачу/clear
Контекст заполняется, задача не закончена/compact
Сохранить конкретные детали/compact focus on X
Настроить автоматикуCLAUDE_AUTOCOMPACT_PCT_OVERRIDE

⚠️ /compact освобождает место от истории, но не от MCP tool definitions — они занимают контекст всегда. Если забито MCP — отключай неиспользуемые серверы через /mcp.


26. Sandboxing

Изоляция файловой системы и сети для Bash tool — Claude видит только разрешённые директории.

Платформы: macOS (Apple Sandbox, уровень ядра), Linux (bwrap/bubblewrap).

Включить

claude --sandbox              # разово
claude remote-control --sandbox

# settings.json
{ "sandbox": true }

Что разрешено по умолчанию

✅ Текущая рабочая директория проекта, системные утилиты, /tmp

❌ За пределами проекта (~/.ssh, ~/Documents и т.д.), сеть (опционально)

Расширить доступ

{
  "sandbox": true,
  "permissions": {
    "additionalDirectories": ["~/shared-libs", "/opt/tools"]
  }
}

Когда использовать

  • Незнакомый код или чужие скрипты
  • CI/CD — изолировать агента от системы
  • При --dangerously-skip-permissions — sandbox компенсирует риск
  • Защита чувствительных мест (~/.ssh, конфиги)

Sandbox vs Permissions

SandboxPermissions
УровеньОС (ядро)Claude Code (приложение)
ОбойтиНельзяClaude может попросить разрешение
НадёжностьВышеНиже

27. Git Worktrees + Claude Code

Worktree — дополнительная папка привязанная к тому же репо, но на другой ветке. Позволяет работать с несколькими ветками параллельно без git stash и переключений.

Создать worktree

cd ~/Projects/myapp

# Создать новую ветку и папку для неё
git worktree add ../myapp-feature feature/new-payment

# Теперь есть две независимые папки:
# ~/Projects/myapp/          → main ветка
# ~/Projects/myapp-feature/  → feature/new-payment

Запустить Claude в каждом

# Терминал 1
cd ~/Projects/myapp
claude                    # работает на main

# Терминал 2
cd ~/Projects/myapp-feature
claude                    # работает на feature/new-payment

Два Claude Code, два контекста, две ветки — не мешают друг другу.

Посмотреть все worktrees

git worktree list
# ~/Projects/myapp          abc1234 [main]
# ~/Projects/myapp-feature  def5678 [feature/new-payment]

Удалить worktree когда закончил

cd ~/Projects/myapp          # выйди из папки worktree
git worktree remove ../myapp-feature
# папка удалится, ветка в git останется
git worktree prune            # убрать все неактивные сразу

Правила

  • Одну ветку нельзя открыть в двух worktrees одновременно
  • У каждого worktree свой .claude/ конфиг и контекст
  • Worktree видит те же ~/.claude/ глобальные настройки и user-scope MCP

Remote Control + worktrees

# Каждое новое подключение получает свой изолированный worktree
claude remote-control --spawn worktree

Типичный сценарий с тремя параллельными задачами

git worktree add ../myapp-auth feature/auth
git worktree add ../myapp-ui feature/ui
git worktree add ../myapp-api feature/api

# Три терминала, три Claude, три ветки
cd ../myapp-auth && claude
cd ../myapp-ui && claude
cd ../myapp-api && claude

28. Model Selection

Три модели — три сценария.

МодельСкоростьКогда использовать
HaikuБыстрый, дешёвыйПоиск по файлам, простые правки, explore subagent
SonnetБалансНаписание кода, рефакторинг, code review (дефолт)
OpusМедленный, мощныйСложная архитектура, большой рефакторинг

Как переключить

claude --model sonnet     # из CLI
claude --model opus
claude --model haiku

/model                    # picker внутри сессии
Option+P                  # быстрый picker

# settings.json — дефолт для всех сессий
{ "model": "claude-sonnet-4-6" }

Модели в subagents

Главная ценность — разные модели для разных задач:

---
name: explorer
model: haiku      # дешёвый для поиска

---
name: architect
model: opus       # мощный для архитектуры

Встроенный Explore subagent на Haiku — поэтому исследование кодовой базы быстрое и не тратит дорогие токены.