Claude Code — команды, настройки, флаги
Привет!
Это справочник. Не рассказ о том, как правильно работать с агентом — про это у меня есть отдельная статья, — а перечень: что можно набрать, что можно написать в настройках, что из этого что делает и как это выглядит на практике.
Актуальность: август 2026. Списки команд, ключей и флагов сняты со сборки 2.1.251, а то, что можно было проверить запуском, проверено на 2.1.252. Для технической статьи версия важнее обычного: между соседними сборками команды исчезают, меняют имена и меняются местами. Если у вас другая версия, /help и claude --help всегда правы, а я — только на момент написания.
Вывод консоли в примерах — настоящий: он либо снят с работающей сборки, либо взят из официальной документации. Там, где найти реальный вывод не удалось, его нет вовсе, а что произойдёт после команды, сказано словами — придуманных экранов в статье не будет.
Три места, куда вводят команды
Прежде чем листать таблицы, полезно понимать, что поверхностей три и они не пересекаются.
Слэш-команды набираются внутри работающей сессии, с / в начале строки. Они управляют разговором: сменить модель, сжать контекст, откатить правки, запустить ревью. В терминале они не работают.
settings.json — файл на диске. Он задаёт, каким Claude Code запустится: какая модель, какие права у инструментов, какие хуки, что показывать в строке состояния. Значительная часть настроек существует только здесь и не имеет команды-эквивалента.
Терминальные команды claude вводятся в обычной оболочке, до или помимо сессии: установка, авторизация, MCP-серверы, плагины, фоновые агенты, неинтерактивный запуск для скриптов.
Разделение не декоративное. Половина вопросов «почему не срабатывает» объясняется тем, что человек написал /model в терминале или --effort в файле настроек. Есть, впрочем, и приятное исключение: в неинтерактивном режиме claude -p слэш-команды в тексте промпта работают — про это ниже отдельно.
Слэш-команды
Набираются внутри работающей сессии, с / в начале строки. У каждой команды ниже собрано всё сразу: аргументы со всеми значениями, тонкости и примеры.
Пометки: [Навык] — встроенный навык, то есть готовый промпт-сценарий; [Воркфлоу] — встроенный мульти-агентный воркфлоу; [сверх тарифа] — платится кредитами отдельно от подписки; [не на всех тарифах] — доступность зависит от тарифа, организации или провайдера; [нет в документации] — в сборке есть, а в публичных источниках не описано.
Про примеры. В блоках — то, что реально набирают, с настоящими аргументами, а не голое имя команды. Вывод показан там, где его удалось взять с работающей сборки или из официальной документации; он на английском, потому что так и печатается. Где достоверного вывода нет — его нет и здесь, а что появится на экране и между чем придётся выбирать, сказано словами в описании команды. Придуманных экранов в статье не будет.
Команды, которые в этой сборке выключены или убраны совсем, своих разделов не имеют — они собраны таблицей в конце этого раздела.
Сессии и разговор
Четыре команды этой группы делают похожее, и их постоянно путают. Разница в том, что копируется и где появляется результат:
| Команда | Что копируется | Где идёт работа | Куда попадёт результат |
|---|---|---|---|
/branch | весь разговор | здесь же, вы продолжаете в ответвлении | в ответвление; оригинал остаётся нетронутым |
/fork | весь разговор | в фоновой сессии, параллельно вам | в отдельную сессию, к которой вы подключаетесь позже |
/subtask | весь контекст, одноразово | в субагенте | обратно в этот же разговор одним сообщением |
/background | ничего не копируется | эта же сессия уезжает в фон | она же, когда вы к ней вернётесь |
/clear [имя]
Начать новый разговор с чистым контекстом. Алиасы: /reset, /new. За ней тянутся при переходе к другой задаче: старый контекст перестаёт помогать и начинает мешать — модель продолжает тащить в ответы подробности прежнего дела.
Старый разговор не удаляется — он остаётся на диске и открывается через /resume. Необязательный аргумент подписывает его в списке: без подписи вы через неделю будете смотреть на десяток безымянных строк.
Если очистили случайно, в том же процессе это отменяется: в меню /rewind есть запись предыдущей сессии, она выглядит как /resume <id> (previous session).
Стоит помнить и про цену: /clear не стоит ничего, тогда как /compact — крупный запрос со всем контекстом. Если разговор больше не нужен, очистка дешевле сжатия на весь объём окна.
/clear # новый разговор с чистым контекстом/clear эксперимент с очередями, не взлетело # то же, но прежний разговор подписан этой фразой/resume [id или поисковая фраза]
Вернуться к прошлому разговору. Алиас: /continue. Нужна, когда работу прервали и продолжать хочется не с нуля, а со всем накопленным контекстом — или когда надо поднять давнее обсуждение, чтобы вспомнить, на чём тогда остановились.
| Что передали | Что произойдёт |
|---|---|
| ничего | Откроется интерактивный список последних сессий этой папки |
| идентификатор сессии | Она откроется сразу, без списка |
| произвольный текст | Поиск по содержимому разговоров; из совпавших предлагается выбрать |
Список привязан к рабочей папке: разговор из другого проекта в нём не появится. А вот по идентификатору сессия открывается из любой папки на машине — до версии 2.1.223 искали только в текущем проекте и его рабочих копиях. Для скриптов это удобно: забрали session_id из вывода claude -p --output-format json и продолжили откуда угодно.
Транскрипты чистятся по cleanupPeriodDays, по умолчанию через тридцать дней. Если рассчитываете возвращаться к старым разговорам, поднимите значение заранее — восстанавливать удалённое неоткуда.
Терминальные формы: claude -c продолжает последний разговор папки без выбора (фоновые сессии пропускает), claude -r открывает тот же выбор до старта сессии, claude -r <id> --fork-session продолжает старый разговор с новым идентификатором, оставляя исходный нетронутым.
В списке вы выбираете, какой из прошлых разговоров продолжить: каждая строка — отдельная сессия этой папки со своей подписью и временем. Выбранный открывается целиком, со всей перепиской и контекстом, и вы пишете в него дальше как ни в чём не бывало.
/resume # выбор из последних разговоров этой папки/resume 8f3c1d2e-4b5a-... # открыть сразу по идентификатору, без выбора/resume дедлок в пуле # поиск по содержимому; выбор из совпавших разговоров/branch [имя]
Ответвить разговор от текущей точки; оригинал сохраняется целиком.
Это «сохранись перед боссом». Вы в точке, где непонятно, какой из двух подходов лучше; ответвляетесь, пробуете первый, и если не вышло — возвращаетесь в оригинал через /resume и пробуете второй, не таща за собой неудачную попытку в контексте. Имя необязательное, но с ним потом проще найти нужную ветку в списке.
После команды вы оказываетесь в ответвлении и пишете дальше уже в нём; исходный разговор остаётся целым и открывается через /resume.
/branch # ответвиться от текущей точки/branch попробовать-через-очередь # то же, ответвление подписано этим именем/fork [задача]
Скопировать разговор в фоновую сессию, которая работает над задачей параллельно вам.
Это «пусть кто-нибудь займётся этим, пока я делаю своё». Копия получает весь накопленный контекст; результат вы заберёте, подключившись к ней через claude attach или экран claude agents. Начиная с 2.1.221 копии заодно велено завести собственную рабочую копию git, прежде чем править код, — чтобы два агента не наступали друг другу на ноги в одном дереве.
Осторожно с чужими инструкциями. В версиях с 2.1.161 по 2.1.211 то, что сейчас называется /subtask, называлось /fork, и имена поменялись местами в 2.1.212. Статья или скрипт, написанные до этого, имеют в виду прямо противоположное. Плюс частный случай: если экран агентов выключен, /fork возвращается к старому поведению и работает как субагент.
Учтите и расход: копия — это полноценная вторая сессия со своим контекстом, и пока она работает, лимит тратится одновременно с вашим.
Копия заводится сразу и получает свой идентификатор — он и нужен, чтобы потом к ней подключиться. С заданием она принимается за работу немедленно, без задания просто ждёт указаний.
/fork собери релизные заметки по коммитам с прошлого тега # копия работает параллельно вам/fork # копия ждёт указаний/subtask <задача>
Отправить субагента с вашим контекстом; результат вернётся в этот же разговор.
Это «сходи посмотри и вернись». Отличие от /fork принципиальное: шумная часть работы — чтение двадцати файлов, простыни вывода — остаётся в контексте субагента, а к вам приходит только вывод. Главный способ не забивать основной контекст разведкой.
Требует версии 2.1.212; до неё эта команда называлась /fork. При выключенном экране агентов недоступна.
Экономится при этом ваше контекстное окно, а не расход: субагент читает и думает за ваш же лимит, просто не оставляет мусора в разговоре.
Разговор не встаёт: пока субагент читает, вы продолжаете писать, а по завершении в переписке появляется одно его сообщение с результатом.
/subtask найди все вызовы этого метода # разведка без мусора в контексте/subtask прочитай миграции за месяц и скажи, что менялось в схеме заказов # то же для долгого чтения/background [промпт]
Увести текущую сессию в фон и освободить терминал. Алиас: /bg.
Ничего не копируется — в фон уезжает эта самая сессия, работа продолжается. С аргументом вы заодно даёте ей задание на дорогу. Вернуться потом — claude attach или экран claude agents; остановить — /stop или claude stop <id>. Тянутся за ней, когда задача долгая, а терминал нужен прямо сейчас.
Терминал освобождается сразу, а сессия остаётся жить в фоне под своим идентификатором — по нему к ней и возвращаются.
/background # уйти в фон и освободить терминал/bg догони сборку и почини линтер # то же, плюс задание на дорогу/rename [имя]
Переименовать сессию. Алиас: /name [нет в документации]. Смысл чисто практический: когда открытых и фоновых разговоров становится много, различать их надо по подписи, а не по идентификатору.
Имя видно в строке ввода, в списке /resume и в заголовке вкладки терминала. Без аргумента оно генерируется по теме разговора.
С введённым именем происходит три вещи: управляющие и невидимые символы заменяются пробелами, длина обрезается до двухсот знаков, а если после очистки не осталось ничего, имя отклоняется как пустое. Если такое имя уже занято другой живой сессией на этой машине, применится его вариант — не ошибка, просто имя окажется слегка другим.
Заголовок терминала меняется, если включено terminalTitleFromRename (по умолчанию да); совсем запретить трогать заголовок можно переменной CLAUDE_CODE_DISABLE_TERMINAL_TITLE.
/rename # имя придумывается по теме разговора/rename рефакторинг оплаты # имя задано вручную/cd <путь>
Перевести сессию в другую рабочую папку. Пригождается, когда работа переехала в соседний сервис или репозиторий, а разговор бросать не хочется.
Настройки, хуки, MCP-серверы, навыки и агенты новой папки начинают действовать сразу, а не после перезапуска, и блок env новой папки накладывается поверх старого. Этим /cd отличается от /add-dir, который даёт доступ к файлам, но не к конфигурации.
/cd ../backend # переехать в соседний репозиторий вместе с его конфигурацией/recap
Сжать всю сессию в одну строку-резюме — быстро вспомнить, о чём шла речь. Полезна после перерыва и в длинном разговоре, где начало уже уехало за экран. Контекст при этом не трогается: это просто короткая выжимка в ответ, а не сжатие разговора, которым занимается /compact.
/recap # о чём этот разговор и к чему в нём пришли/btw [вопрос]
Задать короткий сторонний вопрос, не засоряя основной контекст: ответ не подмешивается в дальнейшую работу. Это для «а как вообще называется вот это» посреди задачи — чтобы через десять сообщений модель не строила рассуждения вокруг случайно заданного вопроса.
Без вопроса открывает ваши прошлые сторонние вопросы, чтобы полистать ответы; до версии 2.1.212 вопрос был обязателен.
/btw чем grpc-web отличается от grpc # ответ виден вам, но мимо дальнейшего контекста/btw # вернуться к прошлым сторонним вопросам/export [файл]
Выгрузить разговор в файл или буфер обмена. Обычно нужно, чтобы приложить переписку к задаче, переслать коллеге или сохранить разбор, к которому вы ещё вернётесь.
Без аргумента весь разговор уходит в буфер, с аргументом пишется в файл; ~ раскрывается. Формат текстовый, с разметкой ролей: это транскрипт для человека или для передачи в другой инструмент, а не машинный формат для импорта обратно.
/export # весь разговор в буфер обмена/export ~/logs/session.md # то же, но в файл/copy [N]
Скопировать в буфер один ответ: без аргумента последний, с числом — N-й с конца. Нужна, когда из большого ответа надо забрать кусок в редактор или в тикет и не хочется выделять мышью полэкрана.
Считаются ответы ассистента, а не строки на экране, поэтому /copy 2 — это «предпоследний ответ». Малоизвестное: если в ответе есть блоки кода, открывается выбор — можно взять отдельный блок, а не всё сообщение. И прямо там клавиша w пишет выбранное в файл вместо буфера обмена; по SSH, где буфер бесполезен, это единственный рабочий способ.
Выбор в этом списке — между сообщением целиком и любым отдельным блоком кода из него; выбранное сразу уходит в буфер, а по w — в файл.
/copy # последний ответ в буфер обмена/copy 2 # предпоследний; если в нём есть код, сначала предложат выбрать блок/stop
Остановить текущую фоновую сессию. Транскрипт и рабочая копия сохраняются. Нужна, когда фоновая работа ушла не туда или уже не нужна: сессия действительно прекращает работать, а не просто отсоединяется, как при /exit. Снаружи то же самое делает claude stop <id>.
/stop # остановить фоновую сессию, транскрипт и рабочая копия остаются/exit
Выйти из CLI. Алиас: /quit. В фоновой сессии — отсоединиться, сама сессия продолжит работать.
/exit # выйти из CLI; в фоновой сессии — только отсоединитьсяКонтекст и память
/context [all]
Показать цветной сеткой, чем заполнен контекст, плюс советы, что можно выгрузить. Аргумент all разворачивает подробности: какие именно файлы и сколько занимают. Тянуться за ней стоит, когда сессия ощутимо потяжелела или вот-вот уйдёт в автосжатие: команда показывает, кто именно занял окно, а от этого зависит, чем лечить. Не путайте с /usage: та про лимиты тарифа, эта — про окно текущей сессии.
Каждая клетка сетки — кусок контекстного окна, раскрашенный по источнику. Смысл не в красоте: источники ведут себя по-разному, и лечатся они разным.
| Что показывает | Откуда берётся | Чем уменьшается |
|---|---|---|
| Системный промпт | сам Claude Code | почти ничем; --bare и --restricted урезают |
| Описания инструментов | встроенные плюс MCP-серверы | отключить ненужные серверы |
| Листинг навыков | описания всех доступных навыков | skillOverrides, skillListingBudgetFraction |
| Файлы памяти | CLAUDE.md и автопамять | сократить или исключить через claudeMdExcludes |
| История разговора | ваши сообщения и ответы | /compact, /clear |
| Прочитанные файлы и вывод команд | инструменты | /clear, а разведку отдать в /subtask |
Практическая ценность именно в all: почти всегда находится один-два файла или один разговорчивый MCP-сервер, съевшие больше, чем вся полезная работа.
Дальше развилка. Распухла история — /compact. Распухли прочитанные файлы — /clear и начать заново. Распухли описания инструментов и навыков — это лечится настройками, а не командами: в следующей сессии контекст будет ровно таким же раздутым.
/context # чем занят контекст прямо сейчас
Context UsageOpus 5 (1M context)claude-opus-5[1m]138.8k/1m tokens (14%)
Estimated usage by category System prompt: 4.4k tokens (0.4%) System tools: 21k tokens (2.1%) MCP tools: 265 tokens (0.0%) Memory files: 3.2k tokens (0.3%) Skills: 6.2k tokens (0.6%) Messages: 104.2k tokens (10.4%) Free space: 860.7k (86.1%)
MCP tools · /mcp (loaded on-demand)└ 126 tools · 265 tokens
Memory files · /memory└ 1 file · 3.2k tokens
Skills · /skills└ 48 skills · 6.2k tokens
/context all to expand
Suggestions ℹ File reads using 76.1k tokens (8%) → save ~22.8k If you are re-reading files, consider referencing earlier reads. Use offset/limit for large files.
/context all # то же, с разбивкой по каждому файлуВывод выше — дословный снимок реальной сессии на Opus 5 с окном в миллион токенов.
/compact [инструкции]
Сжать историю разговора в резюме, освободив место. Аргумент — не флаг и не фильтр, а инструкция составителю резюме: чему уделить внимание, что нельзя потерять. Нужна, когда окно почти заполнено, а бросать разговор рано: работа продолжится с того же места, но опираться дальше будет на пересказ.
Сжатие — это потеря. Резюме пишет модель, оно неизбежно короче оригинала, и всё, что не попало в акцент, воспроизводится приблизительно или пропадает. Осмысленный аргумент — не вежливость, а способ управлять тем, что именно вы согласны потерять.
Ничего не спрашивая, команда сворачивает историю и отчитывается одной строкой; само резюме по умолчанию свёрнуто и разворачивается отдельным нажатием. С аргументом внешне ничего не меняется — разница только в том, что удержано внутри резюме.
Само по себе сжатие — дорогой запрос: в него уходит весь контекст целиком. /clear не стоит ничего. Если разговор вам больше не нужен, вторая команда дешевле первой на весь объём окна.
Порогом, при котором контекст ужимается сам, управляет /autocompact.
/compact # сжать историю как получится
⎿ Compacted (ctrl+o to see full summary)
/compact сохрани решения по схеме БД # сжать, но не потерять эту линию
/compact оставь только то, что относится к модулю оплатыСтрока отчёта приведена дословно, снята на сборке 2.1.220.
/autocompact [auto|<токены>]
Настроить, при каком заполнении контекст начнёт ужиматься сам. Команда появилась в 2.1.221. Порог — это компромисс: чем он выше, тем дольше живёт полная история, но тем ближе вы к потолку окна; чем ниже, тем чаще разговор превращается в пересказ. За командой тянутся, когда сжатие срабатывает не вовремя — слишком рано и уносит нужное или слишком поздно и упирается в потолок.
| Аргумент | Что делает |
|---|---|
| без аргумента | Показать текущее значение |
auto | Порог подбирается автоматически |
| число от 100000 до 1000000 | Сжимать по достижении этого числа токенов |
Значения вне диапазона не принимаются. Постоянный эквивалент — ключ autoCompactWindow, выключается автосжатие целиком через autoCompactEnabled: false, есть и флаг запуска --autocompact с теми же значениями. Отдельная настройка precomputeCompactionEnabled готовит сжатие заранее, пока идёт обычная работа, — когда порог будет достигнут, пауза окажется короче; работает только при включённом автосжатии.
Диалога команда не открывает: без аргумента она просто показывает действующий порог, с аргументом — принимает новый либо отказывается, если число вне допустимого диапазона.
/autocompact # посмотреть текущий порог
/autocompact auto # пусть подбирается сам
/autocompact 400000 # сжимать, дойдя до 400k токенов/memory
Открыть на редактирование файлы памяти и управлять ими. Память подмешивается в контекст каждой сессии, поэтому это одновременно главный рычаг влияния на поведение агента и постоянный налог на окно: всё, что там лежит, вы платите в каждом запросе. Сначала выбираете, какой файл править — проектный или ваш личный, — и он открывается в редакторе.
Что именно из них загружается, показывает /context, а привести их в порядок умеет /doctor: он вычищает дубли, переносит редко нужное в отдельные файлы, подгружаемые по требованию, и вырезает то, что агент и так выведет из кода.
/memory # открыть файлы памяти на правку/init
Создать CLAUDE.md: агент осмотрит репозиторий и опишет его структуру и команды. [Навык] Тянуться за ней стоит на репозитории, с которым агент ещё не работал; уже существующий файл обычно быстрее поправить руками через /memory, чем генерировать заново.
CLAUDE.md — это файл инструкций, который подмешивается в контекст каждой сессии.
Успешно отработав, команда не печатает ничего. Проверять результат документация советует в следующей сессии: вызвать /context и убедиться, что CLAUDE.md появился в разделе Memory files.
Малоизвестная переменная: CLAUDE_CODE_NEW_INIT=1 включает интерактивный вариант, который проводит не только по инструкциям проекта, но и по навыкам, хукам и личным файлам памяти. И если в папке найдётся конфигурация другого кодинг-агента, которую умеет переносить /import, вам предложат её забрать.
/init # сгенерировать CLAUDE.md по репозиториюCLAUDE_CODE_NEW_INIT=1 claude # интерактивный /init со скилами и хуками/add-dir <путь>
Добавить ещё одну рабочую директорию, чтобы агент видел файлы за пределами папки проекта. Нужна, когда работа не помещается в один репозиторий: соседний сервис, общая схема, вынесенная библиотека — без этого агент их просто не прочитает.
Важная тонкость: он даёт доступ к файлам, а не к конфигурации — хуки и настройки той папки не подхватываются. Единственное исключение — навыки и команды: их из добавленной папки берут. Перевести сессию в другую папку целиком, вместе с её настройками и хуками, — это /cd, а не /add-dir.
/add-dir ../shared-protocol # пустить агента в соседний репозиторий/rewind
Откатить код и/или разговор к контрольной точке, либо сжать кусок разговора. Алиасы: /checkpoint, /undo. Нужна, когда серия правок увела не туда и разбираться, что именно агент наменял, дольше, чем вернуться на шаг назад.
Первое, что надо знать: команда работает не всегда. Копии файлов снимаются перед правкой, только если включено fileCheckpointingEnabled. Выключено — восстанавливать нечего.
Второе: меню открывается не только командой. Двойной Esc на пустой строке ввода делает то же самое. Если в строке есть текст, двойной Esc его очищает — поэтому сначала очистите строку.
В меню шесть пунктов, и половина из них не про откат:
| Пункт | Что делает |
|---|---|
| Восстановить код и разговор | Полный возврат в состояние на момент точки |
| Восстановить разговор | История вернётся, файлы останутся как есть |
| Восстановить код | Файлы вернутся, разговор останется целиком |
| Сжать отсюда | Сжать разговор от выбранной точки и дальше |
| Сжать до этого места | Сжать всё, что было до выбранной точки |
| Отмена | Ничего не делать |
Два пункта про сжатие — это, по сути, прицельный /compact: освободить контекст, но не весь разговор целиком, а конкретный его кусок. В строке есть необязательное поле для указаний, чему уделить внимание при сжатии, а на месте сжатого остаётся пометка.
Выбор здесь двухступенчатый: сначала точка, к которой возвращаетесь, потом одно из шести действий над ней. Из откатов чаще всего нужен «восстановить код»: правки пошли не туда, но обсуждение, из которого они выросли, ценно и терять его глупо.
Границы, которые стоит знать до того, как они понадобятся. Хранится сто последних контрольных точек, а вместе с сессией они удаляются через тридцать дней — тот же cleanupPeriodDays. Не восстанавливается: то, что сделали запущенные команды оболочки, большинство правок субагентов, изменения, внесённые снаружи, и всё, что лежит по символическим и жёстким ссылкам. То есть снесённая миграцией база не вернётся, git reset не отменится, установленные пакеты останутся. Это отмена последних правок, а не система контроля версий и не замена коммитам.
Восстановление кода не всегда полное: если у файла с момента точки поменялся тип или каталог, он будет пропущен, а сессия отдельно сообщит, сколько файлов не тронула.
/rewind # меню отката и сжатияМодель и производительность
/model [модель]
Сменить модель и запомнить выбор. [сверх тарифа] платит не сама команда, а часть того, что ей можно выбрать: Fable 5 и варианты с миллионным контекстным окном на ряде тарифов списываются из кредитов сверх подписки, и без включённых кредитов такие строки в списке не работают. Без аргумента открывается список доступного. Тянутся к команде, когда сменился характер работы: тяжёлый разбор имеет смысл вести на самой сильной модели, а поток мелких правок — на быстрой и дешёвой.
| Что передали | Что произойдёт |
|---|---|
| ничего | Откроется список доступных моделей |
алиас семейства — opus, sonnet, haiku, fable | Возьмётся текущая модель этого семейства |
default | Модель по умолчанию для вашего тарифа |
best | Fable 5 там, где у организации есть доступ, иначе новейший Opus |
opusplan | Планирование на Opus, выполнение на Sonnet |
opus[1m], sonnet[1m] | Та же модель с контекстным окном на миллион токенов |
префикс версии, например opus-5 | Разрешится в конкретную модель |
| полный идентификатор | Возьмётся ровно она |
Выбор запоминается и переживает перезапуск — этим /model отличается от переменной ANTHROPIC_DEFAULT_MODEL, которую он перекрывает.
Расклад на август 2026. Актуальные модели — Opus 5, Sonnet 5, Fable 5 и Haiku 4.5. Пятого Haiku не существует: алиас haiku по-прежнему ведёт на 4.5, и это регулярно вводит людей в заблуждение при чтении примеров с fallbackModel.
Что стоит за алиасом, зависит от провайдера, и это неочевидная деталь для тех, кто работает через облако. На собственном API sonnet — это Sonnet 5, на Amazon Bedrock и Google Cloud — Sonnet 4.5, на Microsoft Foundry opus — вообще Opus 4.6. Один и тот же конфиг на двух провайдерах даёт разные модели.
Настраивается всё это тремя способами. Что стоит за алиасами — переменными ANTHROPIC_DEFAULT_OPUS_MODEL и родственными (для best такой переменной нет). Сам список выбора — ключом modelPicker: туда дописываются свои строки с подписями, в том числе идентификаторы Bedrock и Vertex, а replaceBuiltInOptions заменяет встроенный список целиком. Сверху всё ограничивается корпоративным availableModels; с версии 2.1.205 алиас семейства при этом не отвергается, а разрешается в новейшую разрешённую модель.
Отдельно живёт fallbackModel — список моделей, на которые Claude Code переключится сам, если основная перегружена. Это не смена вашего выбора, а страховка на время недоступности.
Что именно тарифицируется отдельно. У Fable 5 расчёт кредитами зависит от тарифа и типа места в организации; там, где он действует, в списке у этой строки стоит пометка о необходимости кредитов, а перед первым таким запросом Claude Code один раз спросит подтверждение. В неинтерактивном режиме (-p) и через Agent SDK этого вопроса нет — списание произойдёт молча. С миллионным окном картина другая: у Sonnet 4.6 оно требует кредитов на любом подписочном тарифе, включая Max; у Opus — только на Pro, а на Max, Team и Enterprise входит в тариф без всякой настройки. У Sonnet 5 на собственном API миллионное окно включено всегда и кредитов не требует.
В списке вы выбираете между семействами и конкретными версиями: видно, что доступно на вашем тарифе и у каких строк есть требование кредитов. С аргументом список не открывается — модель меняется сразу. Выбранная модель применяется к текущей сессии и остаётся выбранной в следующий раз.
/model # выбрать из доступного списка/model opus # по алиасу/model opusplan # планировать на Opus, выполнять на Sonnet/effort [уровень|auto|status]
Уровень усилий задаёт, сколько модель думает над ходом. Это не то же самое, что выбор модели: модель определяет, кто думает, усилия — сколько. Практический смысл — торговать временем и расходом токенов за качество хода: на очевидной правке глубокие рассуждения только замедляют работу, а на запутанном дефекте экономия на них оборачивается неверным диагнозом.
| Значение | Что происходит | Когда осмысленно |
|---|---|---|
low | Минимум рассуждений, ответ почти сразу | Механические правки, переименования, вопросы с очевидным ответом |
medium | Обычный режим | Повседневная работа |
high | Заметно больше рассуждений перед действием | Задачи, где ошибка дороже ожидания |
xhigh | Максимум рассуждений в обычном режиме | Проектирование, разбор запутанного дефекта |
max | То же, с упором на полноту | Редко; перед необратимыми изменениями |
ultracode | xhigh плюс постоянная оркестровка воркфлоу | Большие декомпозируемые работы, где стоимость не в приоритете |
auto | Уровень подбирается под задачу | Значение по умолчанию, если вы не вмешивались |
status | Ничего не меняет, показывает текущий уровень | — |
Четыре неочевидности.
max нельзя сохранить в настройках. Ключ effortLevel принимает только значения до xhigh. Максимум задаётся на сессию — командой или флагом --effort max — и намеренно не остаётся включённым навсегда. Так же устроен ultracode: команда и флаг работают, а из перечисленных в схеме значений его нет; постоянно он включается отдельным булевым ключом ultracode.
Уровень запоминается по модели. С версии 2.1.248 у каждой модели свой сохранённый уровень: переключились на другую — получите её настройку, а не вашу последнюю.
Другие команды его перебивают. /code-review high поднимает усилия на ход, /code-review low понижает, даже если сессия шла на xhigh.
Слово ultracode работает прямо в тексте промпта — по умолчанию его достаточно, чтобы включить оркестровку на один ход; отвечает за это workflowKeywordTriggerEnabled. Если сработало случайно, отменяется на месте сочетанием Alt+W (на macOS Option+W). Чтобы стартовать сразу с ним: claude --effort ultracode.
Отдельно про расход на ultracode. Сверх тарифа он не тарифицируется, но один ваш запрос разворачивается в несколько воркфлоу подряд, а каждый воркфлоу плодит агентов — лимит тарифа при этом тает заметно быстрее обычной сессии. Предупреждение о крупном прогоне, которое Claude Code показывает, когда планируется больше 25 агентов или прогноз переваливает за полтора миллиона токенов, в режиме ultracode не выводится: включив его, вы уже согласились на большие прогоны. На тарифе Pro оркестровку воркфлоу сначала надо включить в /config.
Ещё в 2.1.251 починили частный случай, на который легко наткнуться: Opus 5 отказывался работать с xhigh и max, если размышления выключены. Теперь в такой комбинации усилия просто отправляются как high.
С аргументом уровень переключается на месте, к текущей сессии; status ничего не меняет и только показывает действующий уровень.
/effort status # какой уровень сейчас/effort low # дёшево и быстро/effort ultracode # xhigh плюс постоянная оркестровка воркфлоу/fast [on|off]
Fast-режим: та же модель, но с ускоренным выводом. [сверх тарифа] бесплатной нормы у него нет — режим всегда оплачивается кредитами сверх подписки, даже если лимит тарифа ещё не выбран, а пока кредиты не включены, команда сообщит, что они нужны, и ничего не переключит. Тянутся к нему там, где ждать дороже, чем платить: диалоговая отладка, длинная серия мелких правок, демонстрация вживую. Это не другая модель и не другой уровень усилий — это режим выдачи.
Цена ускорения на Opus 5 и Opus 4.8 — 10 долларов за миллион входных токенов и 50 за миллион выходных, одинаково на всём миллионном окне; это дороже обычных ставок Opus. Есть неприятная тонкость с первым включением внутри диалога: весь уже накопленный контекст пересчитывается по полной цене входа fast-режима, поэтому включать его дешевле в начале сессии, а не на сотом ходу. Если кредиты кончатся посреди работы, ничего не сломается — Claude Code повторит отклонённые запросы на обычной скорости и по обычной цене. В Claude Console кредитов нет вовсе: организация платит за токены вместе с остальным API-расходом. На Amazon Bedrock, Claude Platform на AWS, Google Cloud Agent Platform и Microsoft Foundry режима нет.
Ключи настроек рядом: fastMode включает его постоянно, а fastModePerSessionOptIn заставляет каждую сессию стартовать без него, даже если вы включали его в прошлый раз.
/fast on # ускоренный вывод/fast off # обратно/brief
Режим «только кратко»: максимально сжатые ответы без развёрнутых пояснений. Аргументов у команды нет. Полезно, когда вы ведёте работу сами и от агента нужен результат или короткий факт, а не разбор с примерами. На объём самой работы и на глубину рассуждений это не влияет — сокращается только то, что печатается вам; за глубину отвечает /effort.
/brief # отвечать максимально коротко/advisor [модель|off]
Советчик: более сильная модель подсказывает основному агенту в ключевые моменты. [не на всех тарифах] нужен доступ к собственному API Anthropic — по подписке или через Console; на Amazon Bedrock, Claude Platform на AWS, Google Cloud Agent Platform и Microsoft Foundry советчика нет, и ему требуется включённое получение флагов возможностей. Смысл в том, чтобы не платить за сильную модель на всей сессии, а звать её точечно. Возможность экспериментальная, и вести на ней рабочий процесс пока рано.
Вторая модель вмешивается не постоянно, а в ключевых точках — когда основной агент принимает решение, где ошибка дорого стоит. Аргумент — алиас или полный идентификатор модели; off выключает. Без аргумента открывается выбор. Есть и флаг запуска --advisor <модель>, которого, кстати, нет в выводе claude --help.
Расход советчика идёт с обычного лимита тарифа — с одним исключением: если советчиком назначен Fable 5, его работа оплачивается кредитами там же, где кредитами оплачивается обычное использование Fable 5. Пока согласие на такое списание не дано через /model fable, Claude Code просто не назначит Fable советчиком.
Без аргумента открывается тот же список моделей, но выбираете вы в нём не рабочую модель, а помощника: основная модель остаётся прежней, выбранная подключается поверх неё.
/advisor # выбрать советчика из списка/advisor opus # подсказки от Opus/advisor off # выключить советчика/plan [open|share|описание]
Режим планирования: агент читает, анализирует и предлагает план, но ничего не меняет — правки файлов и опасные команды недоступны. Выход — принятие плана; после него сессия возвращается в обычный режим и начинает его выполнять. Нужен он там, где цена неверно понятой задачи выше, чем время на согласование: перед крупной переделкой, в незнакомом коде, когда правка расходится по десятку файлов.
| Аргумент | Что делает |
|---|---|
| ничего | Просто войти в режим планирования |
| текст задачи | Войти и сразу начать планировать это |
open | Открыть файл текущего плана сессии |
share | Опубликовать план отдельной страницей, которой можно поделиться |
Файлы планов лежат в ~/.claude/plans/, если не задан plansDirectory — им их переводят в репозиторий проекта, чтобы план обсуждался и версионировался вместе с кодом.
В диалоге принятия плана есть опция «очистить контекст»: план остаётся, а вся разведка, на которой он построен, выбрасывается. Показывается она только при showClearContextOnPlanAccept, по умолчанию выключена, и на длинных задачах это одна из самых полезных настроек — исполнение начинается с чистым окном.
Режим доступен и с самого старта: claude --permission-mode plan. И отдельно стоит знать, что авто-режим по умолчанию действует и внутри планирования; отключается это ключом useAutoModeDuringPlan.
Готовый план показывается вместе с диалогом принятия, и выбирать в нём приходится из трёх вариантов. «Yes, and use auto mode» — принять и продолжить в авто-режиме; там, где авто-режим недоступен, та же строка называется «Yes, auto-accept edits», а в сессии, запущенной с обходом разрешений, — «Yes, and switch to BYPASS PERMISSIONS (no further prompts) for this session». «Yes, manually approve edits» — принять, но подтверждать каждую правку вручную. «No, keep planning» — остаться в планировании и сказать, что поправить. Так это описано в документации.
/plan # войти в режим планирования/plan вынести оплату в отдельный сервис # войти сразу с задачей/plan share # поделиться планом/goal [условие|clear]
Задать условие, при котором работа считается законченной; агент продолжает сам, пока оно не выполнится, вместо того чтобы останавливаться после каждого хода. Это меняет ритм: ход не возвращается вам на каждом шаге, и вмешиваться приходится только если что-то пошло не туда. Осмысленно на длинной механической работе — дожать сборку до зелёного, провести одну и ту же правку по всему проекту.
| Аргумент | Что делает |
|---|---|
| текст условия | Задать цель |
clear, stop, off, reset, none, cancel | Снять активную цель — любое из шести слов |
| ничего | Показать текущую или последнюю достигнутую цель |
Условие должно быть проверяемым — команда, состояние файла, признак в выводе. Расплывчатое «пока не станет хорошо» превращается в бесконечную работу, потому что проверить его нечем.
Отдельная статья расходов, о которой мало кто думает: пока цель активна, агент периодически просыпается и проверяет застрявшую фоновую работу, и каждая такая проверка — полноценный ход с полным контекстом. Частоту задаёт CLAUDE_CODE_GOAL_CHECKIN_MINUTES, ноль отключает проверки совсем; с версии 2.1.246 их не больше трёх на цель.
/goal пока все тесты не станут зелёными # работать до выполнения условия/goal # показать текущую цель/goal clear # снять цельКод-ревью и качество
Первые три команды смотрят на один и тот же дифф и потому легко путаются, четвёртая вообще ничего не анализирует:
| Команда | На что смотрит |
|---|---|
/code-review | ошибки корректности и чистота кода; правит только с --fix |
/simplify | только чистота — и сразу применяет найденное |
/security-review | только уязвимости в изменениях ветки |
/diff | ничего не ищет, просто показывает изменения |
/code-review [уровень|ultra] [--fix] [--comment] [--post|--no-post] [цель]
Ревью диффа на ошибки и упрощения [Навык]. Алиас: /review. Обычное локальное ревью идёт в счёт лимитов вашего тарифа, а вот облачный режим ultra — [сверх тарифа]: на Pro и Max по три бесплатных запуска, дальше списание из кредитов, обычно от пяти до двадцати пяти долларов за ревью, а если кредиты не подключены, платный запуск просто блокируется. Тот же ultra — ещё и [не на всех тарифах]: нужен вход в claude.ai, на сторонних провайдерах и в организациях с нулевым хранением данных его нет.
Самая настраиваемая из встроенных команд: уровень усилий, четыре флага, цель ревью и отдельный облачный режим — и каждое разбирается по своим правилам. Полная форма — /code-review [low|medium|high|xhigh|max|ultra] [--fix] [--comment] [--post|--no-post] [<PR#>|<ветка>|<путь>|<заметка>], и всё в ней необязательно: голое /code-review — валидный вызов.
Что она ищет. Две разные вещи. Ошибки корректности: перевёрнутое условие, off-by-one, разыменование null, забытый await, снятая проверка, проглоченная в catch ошибка, сломанные вызывающие изменённой функции, классические грабли конкретного языка. И чистоту: новый код, повторяющий уже существующее в репозитории; лишнюю сложность и мёртвый код; лишнюю работу вроде повторных вычислений или последовательно выполненных независимых операций; «не тот уровень решения», когда заплатка ставится там, где надо было чинить общий механизм; прямые нарушения правил из вашего CLAUDE.md.
Ошибки корректности всегда важнее находок про чистоту: если находок больше лимита уровня, режут сначала вторые. Само ревью ничего не правит, пока не передан --fix.
Где оно выполняется. Обычно фоновым агентом: сессия не блокируется, находки приходят отдельным сообщением. В трёх случаях ревью занимает сессию целиком: если вы запустили его повторно, пока предыдущее ещё идёт; если вы в неинтерактивном режиме -p или в SDK; и если выставлена переменная CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1, которая вообще отключает фоновые задачи.
Кто может его запустить. Не только вы. На просьбу «посмотри мои изменения» обычным текстом агент запустит ревью сам, и запланированная задача с /code-review в промпте тоже сработает. Если это мешает — оставить команду набираемой, но запретить агенту и расписанию её запускать:
{ "skillOverrides": { "code-review": "user-invocable-only" }}Облачный режим — исключение: ultra агент не запускает никогда, ни сам, ни по расписанию.
Порядок аргументов. Три правила, из-за которых вызов срабатывает не так, как ожидалось:
ultraпонимается только первым словом./code-review ultra --fix— облачное ревью, а/code-review --fix ultra— обычное локальное, в котором словоultraпонято как цель.- Уровень — первое слово после того, как из строки убраны флаги. Поэтому
/code-review --fix highработает, и уровень будетhigh. - Флаги можно ставить где угодно: в начале, в конце, между уровнем и целью. Единственное исключение — правило 1.
И четвёртое, отдельное: эта команда «съедает» команду, набранную следом. Обычно несколько навыков стыкуются в одном сообщении, и /write-tests /fix-issue 123 загрузит оба. Но /code-review /fix-issue 123 с версии 2.1.218 понимает /fix-issue 123 как текст цели, а не как вторую команду. До 2.1.218 было наоборот.
Уровни усилий.
| Уровень | Как ищет | Находок | Когда брать |
|---|---|---|---|
low | Один проход по диффу: без субагентов, без чтения файлов целиком, без перепроверки находок; тестовые файлы не смотрит | до 4, на части моделей до 8 | Быстрая дешёвая вычитка перед коммитом |
medium | Восемь независимых углов поиска — три на корректность, три на чистоту, по одному на уровень решения и на правила CLAUDE.md, — затем проверка каждой находки | до 8 | Обычное ревью |
high | Те же восемь углов, но проверка смещена в полноту: находка остаётся, если её не смогли опровергнуть | до 10 | Когда пропущенная ошибка дороже лишнего шума |
xhigh | Десять углов по восемь кандидатов, проверка и отдельный финальный проход «что пропустили» | до 15 | Крупный или рискованный дифф |
max | То же, что xhigh, с максимальным упором на полноту | до 15 | Перед релизом, миграцией — всем, что тяжело откатить |
ultra | Не уровень, а отдельный режим: мульти-агентное ревью в облаке | — | Целый pull request, который хочется проверить чужими глазами |
Числа в этой таблице сняты с бинарника: официальная документация описывает уровни качественно — «низкие возвращают самые уверенные находки, высокие расширяют охват и могут включать менее уверенные», — а сколько там углов поиска и какой потолок находок, не публикует нигде.
Точный конвейер зависит от модели сессии, поэтому таблица про смысл уровней, а не про гарантированное число агентов. На Opus 5 medium и high сейчас сводятся к одному внимательному проходу с лимитом в пятнадцать находок, а различия начинаются с xhigh; на Sonnet 5 на уровнях high, xhigh и max число поисковых агентов подбирается по размеру диффа — от двух до восьми.
Отдельной платы за верхние уровни нет, но каждый поисковый агент ведёт свой контекст, поэтому xhigh и max расходуют лимит тарифа заметно быстрее, чем low. Гонять max на каждую мелкую правку — самый простой способ остаться без недельного лимита к среде.
Запоминание уровня. Если уровень не указан, берётся тот, который вы набрали в прошлый раз: он живёт между сессиями, и в начале отчёта об этом скажут строкой вида «использую high, уровень с прошлого раза». Два исключения: уровень, переданный в неинтерактивном запуске -p, ничего не запоминает, а ultra запомненный уровень и не читает, и не меняет. Если вы не набирали ни разу, берётся уровень усилий текущей сессии. Набранный уровень заодно задаёт усилия модели на ход, в том числе вниз: /code-review low в сессии на xhigh их понизит.
Опечатка вызов не ломает: на /code-review higher вы получите предупреждение, что значение не распознано, и прошлый или дефолтный уровень. Сокращение med принимается как medium.
Флаги.
| Флаг | Где работает | Что делает |
|---|---|---|
--fix | локально и с ultra | После отчёта применить находки к рабочему дереву |
--comment | локально, если цель — pull request на GitHub | Запостить каждую находку отдельным комментарием к строке |
--post | только ultra, репозиторий на github.com | Запостить итог одним обычным комментарием от вашего аккаунта |
--no-post | только ultra | Убрать предложение постить из окна запуска — это и так поведение по умолчанию |
--fix правит найденное прямо в рабочем дереве, и ошибки, и чистоту. Находка пропускается, если правка меняет задуманное поведение, требует изменений далеко за пределами просмотренного диффа или выглядит ложным срабатыванием; в конце вам скажут, что пропустили и почему. С ultra правки применяются локально в тот момент, когда облако вернёт результат.
--comment требует, чтобы целью был pull request. Если цель не он, флаг игнорируется, находки просто печатаются, и агент об этом скажет. Комментарии уходят через GitHub-интеграцию, а если её в сессии нет — через gh api.
--post — не то же самое, что --comment: один общий комментарий вместо замечаний по строкам, и только для облачного ревью. В интерактивной сессии окно запуска всё равно спросит подтверждение, в неинтерактивном режиме постит сразу по флагу. Переданный в обычное локальное ревью, он игнорируется — вам напомнят, что там постит --comment.
--no-post нужен, чтобы вообще не видеть предложения постить. Передавать оба сразу бессмысленно: команда читает только --post, так что --post --no-post всё равно предложит запостить.
Цель ревью. Без цели ревьюится текущая работа: коммиты ветки над её upstream плюс незакоммиченные изменения. Поэтому команда осмысленна и до коммита.
В локальном ревью цель передаётся модели строкой, и она сама решает, что это: номер pull request, имя ветки, путь к файлу или папке — или просто пожелание, куда смотреть в первую очередь. В ultra цель разбирается строго:
| Что передали | Что произойдёт |
|---|---|
| ничего | Ревьюится текущая ветка против базовой |
1234, #1234, PR 1234, ссылка на /pull/1234 | Загружается и ревьюится этот pull request |
| имя существующей ветки | Берётся как базовая, дифф считается против неё |
| всё остальное | Записывается как заметка к ревью: облачный агент её не видит и всё равно ревьюит дифф ветки, но когда находки вернутся, их свяжут с вашей просьбой |
Ревью в облаке: что нужно, сколько стоит и где потолок. ultra запускает фоновый агент в Claude Code в вебе: он клонирует репозиторий в облачную песочницу, гоняет по диффу мульти-агентный поиск и присылает находки уведомлением в вашу сессию. Занимает минуты, всё это время можно работать дальше.
Требуются git-репозиторий и GitHub-remote, аккаунт claude.ai с подключённым GitHub, а для приватного репозитория — установленное на владельца приложение Claude. Недоступно на сторонних провайдерах, при отключённых необязательных запросах, в организациях с нулевым хранением данных и при запрете со стороны организации. Важная деталь: когда режим недоступен, /code-review ultra не падает, а тихо выполняет обычное локальное ревью — если вы ждали облачного, стоит убедиться, что оно действительно запустилось.
Потолок диффа — до пятисот изменённых файлов и восьми тысяч изменённых строк. Слишком большой pull request отклоняется, и в отказе называются действующие лимиты, размер вашего диффа и самые крупные файлы; пустой дифф тоже отклоняется.
Цена: на Pro и Max по три бесплатных запуска — они даются аккаунту разово и не обновляются, — а на Team и Enterprise бесплатных нет вовсе. Дальше — из кредитов, обычно от пяти до двадцати пяти долларов за ревью в зависимости от размера изменений. Запуск считается с момента старта облачной сессии: остановленное или упавшее ревью бесплатный запуск всё равно потратит, а платное списывается только за отработанную часть. Если кредиты не подключены, платный запуск просто блокируется.
Что вы подтверждаете перед стартом. Платный облачный запуск не уходит молча: сначала показывают окно с оценкой стоимости и просят согласиться на списание кредитов — один раз за разговор. Там же, если передан --post, вы решаете, постить ли итог комментарием в pull request или оставить находки только у себя. Пока вы не подтвердили, облачная сессия не стартует.
Из CI. С версии 2.1.218 облачное ревью запускается неинтерактивно:
claude -p '/code-review ultra'Команда стартует ревью, печатает ссылку для отслеживания и не ждёт результата. Но если ревью должно списать кредиты, запуск остановится: подтверждение оплаты требует интерактивной сессии. Для такого случая есть отдельная подкоманда, сам факт запуска которой считается вашим согласием на списание:
claude ultrareview # облачное ревью текущей веткиclaude ultrareview 1234 --post # ревью PR, итог комментарием в негоclaude ultrareview --json # сырые находки вместо отчётаclaude ultrareview dev --timeout 60 # против ветки dev, ждать до часаКод выхода — 0, если ревью завершилось (с находками или без), и 1, если запустить его не удалось. --timeout по умолчанию тридцать минут.
Канонической формой считается /code-review ultra; /ultrareview — её алиас, доступный не всем аккаунтам, и вся возможность помечена как исследовательская. В статьях часто пишут наоборот, будто основная команда — /ultrareview.
В GitHub Actions. У ревью есть отдельная жизнь в CI, и там оно настраивается не флагами, а файлом. В корне репозитория кладётся REVIEW.md, который задаёт правила: какие пути и ветки пропускать, какие категории находок не показывать, что считать важным, как вести себя при повторном ревью одного и того же pull request.
Находки делятся на три уровня: важные, придирки и уже существовавшие в коде до этих изменений. Нарушения ваших правил из CLAUDE.md попадают в придирки. Проверка всегда завершается нейтральным статусом и поэтому никогда не блокирует слияние сама — но последней строкой печатает счётчик находок в JSON вида {"normal": 2, "nit": 1, "pre_existing": 0}, по которому вы можете поставить собственный барьер в своём же пайплайне.
Что придёт в ответ, зависит от режима: обычное ревью присылает отчёт отдельным сообщением, --fix добавляет к нему правки в рабочем дереве, --comment уводит находки комментариями в pull request, а ultra сначала спросит подтверждение в окне запуска и только потом даст ссылку на облачную сессию.
/code-review # текущие изменения, уровень как в прошлый раз/code-review high --fix # глубже и сразу починить найденное/code-review medium --comment 1234 # ревью PR 1234 с комментариями прямо в нём/code-review ultra 1234 --post # облачное ревью PR, итог комментарием/simplify [цель]
Найти в изменённом коде упрощения и сразу их применить [Навык]. Это уборка за собой, когда код уже работает: ошибок команда не ищет вовсе, поэтому проходит быстрее ревью — но и заменить его не может. Тянуться за ней стоит, когда правка успела разрастись: появились почти одинаковые куски, свои помощники поверх уже существующих, лишние промежуточные слои.
Смотрит на тот же дифф, что и /code-review, но ищет только чистоту, и делает это четырьмя параллельными агентами: переиспользование уже написанных помощников, упрощения, эффективность и тот ли это уровень абстракции. Ошибок он не ищет принципиально — это разделение труда, а не недоработка. И, в отличие от ревью, сразу применяет найденное. Аргумент — необязательная цель: путь, папка или номер pull request.
Отдельно она не тарифицируется, но четыре агента — это четыре контекста разом, так что лимит тарифа команда расходует ощутимо быстрее одиночного прохода.
Историческая ловушка: до версии 2.1.147 /simplify называлась нынешняя /code-review и правки применяла по умолчанию. Старый скрипт, который звал /simplify ради поиска ошибок, сегодня делает совсем другое.
Выбирать по ходу не придётся: команда ничего не спрашивает, а в ответ приходит перечень применённых упрощений — правки к этому моменту уже в рабочем дереве.
/simplify # весь изменённый код/simplify src/payments # только эта папка/security-review
Проверить изменения ветки на уязвимости. Аргументов нет. Это третий взгляд на тот же дифф, но с другой оптикой: не «работает ли» и не «аккуратно ли написано», а что отсюда можно вытащить или сломать снаружи. Звать её осмысленно перед тем, как ветка уедет в общий репозиторий, — особенно если правка трогала аутентификацию, разбор пользовательского ввода или секреты.
Ищет инъекции, проблемы авторизации и аутентификации, утечки данных, небезопасную работу с секретами и вводом.
Единственное требование, о которое спотыкаются: нужен remote с именем origin — дифф считается против его основной ветки. Без него команда падает с ошибкой git про неоднозначный аргумент, и выглядит это загадочно.
В ответ приходит перечень найденного: место в коде, характер проблемы и чем она опасна.
/security-review # уязвимости в изменениях ветки/diff
Интерактивно посмотреть незакоммиченные изменения. Аргументов нет. Ничего не анализирует, это просмотрщик: незакоммиченные изменения и, что полезнее, дифф по каждому ходу агента отдельно. Пригождается, когда агент наработал за несколько ходов и надо понять, на каком именно шаге он свернул не туда, — то есть штука, которой стоит пользоваться до /rewind, а не после.
Внутри вы выбираете, что смотреть: всю незакоммиченную работу целиком или один конкретный ход агента. Выход из просмотрщика возвращает вас в ту же сессию и ничего в коде не меняет — откат живёт в /rewind, здесь его нет.
/diff # посмотреть незакоммиченноеРазработка и рабочие процессы
/run и /verify постоянно путают: обе про «проверить вживую», но отвечают на разные вопросы.
| Команда | На какой вопрос отвечает |
|---|---|
/verify | Делает ли конкретное изменение то, что задумано |
/run | Как ведёт себя приложение целиком, если поднять его как обычно |
/run
Запустить приложение проекта и проверить изменение вживую, а не только тестами. [Навык] Берут её, когда по диффу ничего не понятно: поменялся экран, поведение формы, вывод команды — надо просто увидеть работающее приложение. С /verify не путать: та отвечает за одну конкретную правку, а /run поднимает всё как есть.
Речь про приложение целиком: поднять его так, как оно поднимается в этом проекте, и дать посмотреть. Чтобы он знал, как именно, нужен навык запуска — его создаёт /run-skill-generator, один раз на проект. Без него /run попытается угадать по типу проекта и на нестандартной сборке угадает плохо.
После вызова идут обычные шаги сборки и старта — те, что записаны в навыке или выведены из типа проекта, — а дальше вы смотрите на само приложение: поднялось ли оно и делает ли то, ради чего его поднимали.
/run # запустить приложение и посмотреть глазами/verify
Подтвердить, что изменение работает: собрать, запустить, понаблюдать поведение. [Навык] Берут её сразу после правки, когда важно не поверить диффу, а увидеть результат. Проверяется именно изменение, а не приложение целиком — для второго есть /run.
Логика простая: ревью проверяет, что дифф правильно читается, /verify — что он правильно работает.
С версии 2.1.200 команда умеет записать найденный рецепт проверки в собственный навык .claude/skills/verify/SKILL.md, и тогда в корне репозитория он заменяет встроенный — то есть один раз разобрались, как проверять этот проект, и дальше это работает у всех.
Важное изменение: с версии 2.1.215 /verify запускается только вами. Раньше агент мог позвать его сам. То же случилось с /deep-research в 2.1.218. Если вы читали статью, где написано, что агент проверит себя сам, — она устарела.
Проверка идёт до конца сама: сборка, запуск, наблюдение за поведением, — а в конце вы получаете вывод о том, сошлось или нет и что именно смотрели. Если рецепта проверки в репозитории ещё не было, попутно предложат его записать.
/verify # собрать, запустить, убедиться что работает/run-skill-generator
Создать навык, умеющий запускать приложение этого проекта, — на нём потом работает /run. [Навык] Команда разбирается, как здесь всё собирается и стартует, и записывает найденный рецепт в навык, который лежит в репозитории и работает у всех.
Делается один раз на проект.
Работа тут не мгновенная: приложение действительно поднимают с нуля, запоминая, какие команды установки, переменные окружения и скрипт запуска сработали. Результат — файл навыка в репозитории, а не текст в терминале.
/run-skill-generator # научить проект команде /run/batch <инструкция>
Спланировать масштабную правку и выполнить её параллельно в 5–30 изолированных рабочих копиях, каждая открывает свой pull request. [Навык] Нужна там, где одинаковую правку надо внести в десятки мест и каждое место — самостоятельный кусок работы. Для одной правки в паре файлов она избыточна: накладные расходы на веер съедят весь выигрыш.
Самая тяжёлая из встроенных команд и единственная, которая по умолчанию порождает десятки агентов. Инструкция сначала превращается в план — список конкретных мест, которые надо править, — а потом под каждое место запускается свой агент в своей изолированной рабочей копии git, и каждый открывает отдельный pull request.
Ключевое здесь — изоляция. Агенты правят файлы параллельно, и без отдельных рабочих копий они бы наступали друг другу на ноги. Отсюда требования: git-репозиторий, чистое дерево и настроенный gh, иначе pull request открывать нечем.
Число агентов — от пяти до тридцати, и оно выводится из плана, а не задаётся вами: сколько нашлось мест, столько и агентов, в пределах потолка. Если план получается на два места, веер не нужен, и команда об этом скажет.
Отдельной платы за неё нет, но лимит тарифа она ест кратно: двадцать агентов — это двадцать сессий, каждая со своим контекстом.
Хорошая инструкция — та, где границы каждого места очевидны и правки не связаны между собой. Плохая — «отрефактори проект»: план получится из размытых пунктов, а тридцать агентов независимо придумают тридцать разных архитектур.
На поведение веера влияют настройки worktree: symlinkDirectories спасает диск, если в проекте тяжёлые зависимости, sparsePaths ускоряет выгрузку в больших монорепозиториях, baseRef определяет, ветвиться от удалённой основной ветки или от текущего локального состояния.
Порядок такой: сначала вам показывают план и ждут согласия — это момент, когда решается, столько ли мест нашлось, сколько вы ожидали. После одобрения агенты уходят работать в фон, и ссылки на открытые pull request'ы появляются по мере готовности.
/batch переведи все контроллеры на новый клиент # веер изолированных агентов, каждый со своим PR
/batch разнеси общие DTO по модулям, которые их используют # если мест мало, веер не нужен — команда это скажет/debug [описание]
Включить отладочные логи на сессию и помочь разобраться с проблемой. [Навык] Пригождается, когда непонятно, чья это беда — ваша или самого агента: в подробных логах видно, какие инструменты вызывались и чем ответили. Логи включаются до конца сессии, на следующую не переносятся.
Описание необязательное — с ним вы сразу говорите, что именно ловите.
Без описания дело ограничится включением подробных логов, дальше вы работаете как обычно. С описанием команда сразу берётся за разбор названной проблемы, опираясь на то, что в этих логах появится.
/debug # включить отладочные логи
/debug падает только на CI, локально зелено # то же плюс описание проблемы/fewer-permission-prompts
Просмотреть транскрипты, найти частые безопасные вызовы и собрать из них список разрешений. [Навык] Смысл — перестать подтверждать по десять раз на дню одно и то же безобидное чтение. Команда смотрит вашу же историю, а не общий список, поэтому разрешения получаются под конкретный проект.
Правка ложится в настройки проекта, то есть подействует у всех, кто с этим репозиторием работает.
На выходе — предложенный список разрешений, отсортированный по тому, что подтверждалось чаще всего; выбирать вам, целиком его принять или вычеркнуть лишнее перед тем, как он ляжет в настройки проекта.
/fewer-permission-prompts # собрать список разрешений из истории/commit [пожелания]
Собрать коммит: посмотреть статус и дифф, написать сообщение по принятому формату. [Навык] Формат сообщения выводится из истории коммитов этого репозитория, а не из общих правил, — в чужом проекте коммит будет выглядеть как соседние. Полезна ровно тем, что снимает два скучных шага: решить, что войдёт в коммит, и сформулировать, что вы, собственно, сделали.
Аргумент — не флаги, а пожелания обычным текстом; это верно и для /pr. Пожелания влияют на то, что попадёт в коммит и как будет написано сообщение.
Что попадёт в сообщение коммита в качестве атрибуции, задаётся объектом attribution с полями commit и pr, где пустая строка убирает её совсем. Выключить встроенные инструкции про коммиты целиком можно через includeGitInstructions: false — тогда агент будет пользоваться только вашими правилами.
Перед созданием коммита видно, что в него отобрано и с какой формулировкой, — тут и решается, устраивает ли вас и то и другое. Пожеланиями во втором примере состав коммита сужается до файлов схемы, остальное остаётся в рабочем дереве нетронутым.
/commit # коммит с сообщением по формату проекта
/commit только изменения в схеме, остальное не трогай # в коммит войдут только файлы схемы/pr [пожелания]
Открыть pull request: завести ветку, запушить, создать описание через gh. [Навык] Описание собирается по тому, что реально в диффе, — не по вашему пересказу. Три шага вручную занимают пару минут, и обычно на описании как раз экономят; здесь оно пишется само.
Ветка заводится, если вы ещё на основной. Пожеланиями задаются черновик, ревьюеры, форма описания.
Шаги идут подряд — ветка, push, создание запроса через gh, — и в конце у вас на руках ссылка на открытый pull request. Пожелания вроде «черновиком» меняют то, каким запрос откроется, но не порядок шагов.
/pr # ветка, пуш, pull request с описанием
/pr черновиком, ревьюеров не назначай # то же, но запрос откроется черновиком/commit-push-pr
Все три шага одним заходом: коммит, пуш, pull request. [Навык] То же, что /commit и /pr подряд, но без пауз между ними — для случая, когда работа явно закончена и обсуждать нечего. Если хочется посмотреть на коммит до того, как он уедет, лучше идти двумя командами.
У него есть особенность: опасные флаги git и gh не одобряются автоматически. --force, --amend, --no-verify всё равно спросят подтверждение, даже если у вас щедрые права. Сделано намеренно: цепочка из трёх шагов выполняется быстро, и человек не успевает заметить, что где-то в середине переписывается история.
Всё три шага проходят без остановок, и в конце остаётся ссылка на запрос. Прервать цепочку может ровно одно — опасный флаг по пути: на нём вас всё-таки спросят, продолжать или нет.
/commit-push-pr # все три шага сразу/update-config
Поменять настройки: хуки, права, переменные окружения, — с правкой settings.json за вас. [Навык] Главный её случай — поведение вида «каждый раз, когда…»: такое умеет только хук, просьбами и памятью этого не добиться, потому что выполняет их не модель, а сама программа. Скажите словами, что должно происходить, — команда разберётся, в какой файл настроек это писать и в каком виде.
Настройки бывают проектные и личные, и это разные файлы: проектные видит каждый, кто работает с репозиторием, личные — только вы. Если правка касается ваших привычек, а не общего порядка работы, скажите об этом сразу.
Прежде чем что-то менять, вам объяснят, какая настройка появится и в каком файле, — и если файл выбран не тот, это ровно тот момент, когда стоит вмешаться.
/update-config добавь хук на форматирование после правок/claude-code-docs [вопрос]
Ответы про сам Claude Code: возможности, настройки, SDK, Claude API, Slack-приложение. [Навык] Отвечает по документации, а не по памяти модели, — а это разные вещи, потому что программа меняется от версии к версии быстрее, чем обновляются знания модели. Спрашивать лучше человеческой фразой, как спросили бы коллегу.
В ответ приходит разбор по документации со ссылками на её разделы — по ним же удобно проверить, что ответ не выдуман.
/claude-code-docs как ограничить агенту доступ к папке/claude-in-chrome
Разрешить работу в вашем Chrome: кликать, заполнять формы, читать консоль. [Навык] [не на всех тарифах] — требуется вход в аккаунт claude.ai: с API-ключом и через Amazon Bedrock, Google Cloud и Microsoft Foundry расширение недоступно. Работа идёт в вашем настоящем браузере, с вашими вкладками и сессиями, — поэтому она годится там, где проверять надо не код, а живую страницу: воспроизвести баг в интерфейсе, пройти форму, посмотреть ошибки в консоли.
Доступ выдаётся по сайтам и настраивается в самом расширении: на страницу, которую вы не разрешили, агент не пойдёт.
После вызова агент подключается к вашему браузеру и дальше работает с разрешёнными вкладками. Если нужного сайта среди разрешённых нет, выбор простой: выдать ему доступ в расширении или отказаться от этой проверки.
/claude-in-chrome # разрешить работу в браузере/plugin-types [папка]
Сгенерировать типы входных данных подключённых MCP-инструментов. Команда читает описания инструментов и раскладывает их в типы, чтобы в коде плагина вызовы проверялись компилятором, а не угадывались по памяти. Аргумент — папка плагина, для которого генерировать. Нужна при разработке своего плагина; в обычной работе с проектом не пригодится.
Смотреть тут особо не на что: результат команды — файлы с типами внутри указанной папки плагина.
/plugin-types ./my-plugin # типы MCP-инструментов для плагина/workflow-authoring
Справочник по написанию скриптов для воркфлоу. [Навык] Рассказывает, из чего складывается скрипт, как устроено возобновление после сбоя и на чём обычно спотыкаются. Читают её перед тем, как писать свой воркфлоу, а не во время его выполнения.
Сам запуск воркфлоу не разрешает.
В ответ приходит сама справка — устройство скрипта, возобновление, типичные ошибки и разобранные примеры, — после чего можно садиться писать свой.
/workflow-authoring # как писать скрипты воркфлоу/claude-api [migrate|upgrade|prompt-audit|managed-agents-onboard|cost-optimize]
Помощь по Claude API и SDK. [Навык] Единственная в этой группе команда с фиксированным набором аргументов. Нужна, когда вы пишете код, который сам ходит в Claude: идентификаторы моделей, параметры, стриминг, вызов инструментов, кэширование — всё это сверяется с документацией, а не с памятью модели.
Аргумент выбирает сценарий: без него это общая справка, с ним — конкретная работа по вашему коду.
| Аргумент | Что делает |
|---|---|
| без аргумента | Общая помощь по Claude API и SDK: параметры, стриминг, вызов инструментов, кэширование |
migrate | Миграция кода на новую модель: что поменять в идентификаторах, параметрах и ожиданиях |
upgrade | Переход на новую мажорную версию клиентской библиотеки; с 2.1.236 |
prompt-audit | Найти в промптах, навыках и описаниях инструментов указания, написанные под старые модели, и предложить правку диффом; с 2.1.221 |
managed-agents-onboard | Онбординг на серверные агенты с управляемой песочницей |
cost-optimize | Разбор расходов на API и что с ними делать; с 2.1.247 |
Навык включается и сам, без команды: если в коде проекта есть импорт официальной библиотеки Anthropic, он активируется при задачах, которые её касаются.
С аргументом команда сначала читает ваш код и возвращается со списком мест и предложенными правками — принимать их все или по одному, решаете вы.
/claude-api migrate # миграция на новую модель
/claude-api prompt-audit # найти в промптах инструкции под старые модели/deep-research <вопрос>
Веер веб-поисков по множеству источников, проверка фактов и отчёт со ссылками. [Воркфлоу] Берут её, когда одного поиска мало: вопрос спорный, источники противоречат друг другу или нужен не первый попавшийся ответ, а сверенный. Поиск идёт несколькими независимыми линиями, найденное сопоставляется между собой, и в отчёте видно, на чём именно вывод держится.
С версии 2.1.218 запускается только вами — раньше агент мог позвать её сам.
Это динамический воркфлоу: агентов запускается много, и один запуск съедает лимит тарифа заметно быстрее обычной сессии. На тарифе Pro динамические воркфлоу сначала включают строкой Dynamic workflows в /config.
Первым делом спросят разрешение на запуск воркфлоу — и это единственный ваш выбор по ходу дела. Дальше всё идёт в фоне, сессия остаётся свободной, за прогрессом при желании можно следить через /workflows, а в конце приходит отчёт со ссылками; утверждения, которые проверить не удалось, помечены как непроверенные, а не выдаются за факт.
/deep-research чем отличаются подходы к идемпотентности в очередяхСубагенты, фоновые задачи, автоматизация
/list-agents
Показывает всех, кому можно написать прямо из сессии: субагентов, которых вы запустили, тиммейтов, другие сессии Claude Code на этой машине и облачные. Имя в списке — это адрес: скопировали его и отправляете сообщение именно этому агенту. За списком тянутся не ради любопытства, а когда надо понять, кто ещё жив и как к нему обратиться. Алиас: /peers.
Тиммейты (агент-команды) по умолчанию выключены везде и включаются переменной CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 — пока её нет, строк с ними в списке не будет. И стоит помнить цену: команда агентов расходует примерно всемеро больше токенов, чем обычная сессия, потому что у каждого тиммейта своё контекстное окно и он тратит, пока не завершится.
Команда только печатает перечень и ничего не предлагает выбрать: имя нужного агента вы берёте оттуда сами и дальше подставляете в сообщение.
/tasks
Показывает всё, что работает рядом с диалогом: фоновые задачи, запущенные процессы, их состояние и сколько уже крутятся. Отсюда же ими управляют — это единственное место, где видно сразу все запущенные сборки и прогоны тестов. Пригодится, когда их несколько и непонятно, кто из них ещё жив, а кто давно упал. Алиас: /bashes.
В списке вы выбираете конкретную строку: дальше можно посмотреть вывод этой задачи или остановить её, не выходя из диалога и не разыскивая процесс в системе.
/daemon
Управляет фоновыми службами Claude Code — теми, что работают вне вашего диалога: ассистентами, запланированными задачами и удалённым управлением. Сюда идут, когда что-то из этого должно включиться, выключиться или перестать срабатывать. Обратите внимание: часть этих служб — запланированные задачи и удалённое управление — живёт только при входе в аккаунт claude.ai, и по ключу API их просто не будет.
Выбор здесь между службами, а не между задачами: вы находите нужную строку и переключаете её состояние, всё остальное происходит само.
/workflows
История воркфлоу — тех запусков, где задача раскладывается на много агентов и они работают параллельно. Показывает и текущие, и завершённые: сколько агентов, на каком шаге, чем закончилось. Отсюда запуск ставят на паузу и возобновляют — это единственное место, где на длинный прогон можно повлиять, не убивая его целиком. С фоновыми задачами не путать: те про процессы и команды, эти про многоагентные прогоны.
Один такой прогон съедает заметно больше токенов, чем та же работа в обычном диалоге, — агентов много, у каждого свой контекст. Тарифицируется это как обычный расход, отдельного счёта нет. Когда в прогоне больше 25 агентов или прогноз переваливает за 1,5 миллиона токенов, Claude Code предупреждает заранее; в режиме ultracode предупреждение не показывается — включив его, вы уже согласились на большие прогоны. На тарифе Pro сами воркфлоу сначала включают в /config.
/loop [интервал] [промпт]
Повторять промпт или команду по интервалу; без интервала темп выбирается сам. Алиас: /proactive. [Навык]
Команда принимает две вещи подряд: необязательный интервал и то, что повторять. Повторять можно и обычный промпт, и слэш-команду.
| Что передали | Что произойдёт |
|---|---|
<интервал> <промпт> | Промпт выполняется по расписанию с этим интервалом |
<интервал> /команда | То же, но повторяется слэш-команда |
<промпт> | Интервал не задан: агент сам решает, когда проснуться в следующий раз |
| ничего | Автономный цикл: агент сам выбирает и задачу, и темп |
Интервал пишется человеческим сокращением: 5m, 30m, 1h. Режим без интервала стоит понимать буквально: агент выбирает паузу исходя из того, чего ждёт. Сборку, которая идёт восемь минут, он будет ждать одной паузой, а не восемью проверками по минуте.
Ловушка ровно одна, зато дорогая: цикл, который просыпается каждую минуту, чтобы проверить фоновую задачу, почти всегда лишний. О завершении фоновой работы вам сообщат и так, а каждое пробуждение — это полноценный запрос со всем контекстом.
Что уже крутится и с какой периодичностью, показывает /usage: отдельная команда для этого, /loops, в сборке 2.1.251 выключена.
Вызов заводит цикл и сразу возвращает управление: дальше он просыпается сам, и каждое пробуждение выглядит в сессии как обычный запрос.
/loop 5m /code-review low # каждые пять минут — быстрая вычитка/loop 1h проверь, не появились ли новые упавшие тесты, и почини очевидное/loop проверяй, не сломалась ли сборка # без интервала: темп выберется сам/schedule [описание]
Создаёт, обновляет и запускает агента, который работает в облаке по расписанию. [не на всех тарифах] — нужен вход в аккаунт claude.ai: по ключу Console API, под профилем Anthropic и через Bedrock, Google Cloud и Foundry команды нет, там ближайшая замена — /loop. [сверх тарифа] — сами запуски идут в счёт обычного лимита тарифа, но у аккаунта есть дневной предел числа запусков: когда упираетесь в него или в лимит тарифа, продолжать можно только на подключённых кредитах, а без них лишние запуски отклоняются до сброса окна. Алиас: /routines. [Навык]
Отличие от /loop — место исполнения. /loop работает в вашей сессии, на вашей машине, пока она открыта. /schedule заводит задачу в облаке: она выполняется по расписанию независимо от того, включён ли ваш ноутбук.
Аргумент — описание словами, из которого выводится и расписание, и задача, и намерение: команда умеет не только создавать, но и обновлять, показывать, запускать вне очереди и удалять. Остальные требования те же, что у всего облачного: подключённый GitHub и отсутствие запрета от организации — на Team и Enterprise владелец может выключить расписания для всех. Окружение по умолчанию берётся из настройки remote. Вся функциональность помечена как исследовательская, то есть будет меняться.
Про расходы стоит помнить одно: запланированная задача просыпается и отправляет полный контекст, даже когда вы за компьютером и заняты своим. Это самая незаметная статья трат из всех.
Что окажется на экране, зависит от того, о чём вы попросили: все четыре вызова ниже — одна и та же команда, разбирающая ваше описание.
/schedule каждое утро в 9 собирай отчёт по упавшим тестам # создать задачу/schedule покажи мои запланированные задачи # что уже заведено/schedule запусти утреннюю сводку прямо сейчас # запуск вне расписания/schedule удали задачу про зависимости # удалить/autofix-pr [промпт]
Запускает облачную сессию, которая следит за pull request текущей ветки и сама пушит исправления — например, чинит упавшую сборку в CI. [не на всех тарифах] — работает через Claude Code в вебе, а для него нужен вход в claude.ai: по ключу API и через Bedrock, Google Cloud и Foundry облачных сессий нет. Необязательный аргумент сужает мандат: что править можно, а что трогать нельзя. Управление возвращается сразу — дальше сессия живёт в облаке сама, и смотреть на неё надо там.
/autofix-pr # следить за PR и чинить падения CI/autofix-pr правь только линтер, логику не трогай # то же самое, но с ограничениемАртефакты, документы и дизайн
Артефакт — опубликованная на claude.ai страница, которую можно открыть, покликать и дать посмотреть коллегам. Почти всё ниже — встроенные навыки, и набор зависит от аккаунта: часть включается только для определённых подписок и организаций.
Публикация есть на Pro, Max, Team и Enterprise: на Team включена сразу, на Enterprise её включает владелец организации, а при CMEK, HIPAA или запрете на хранение данных она закрыта совсем. Нужна сессия с входом в claude.ai — по ключу API, токену шлюза и учётным данным Bedrock, Google Cloud и Foundry страница не опубликуется. Отдельно артефакты не тарифицируются: генерация страницы расходует выходные токены, как любой другой ответ.
В официальном справочнике команд из этой группы есть только /artifacts, /design, /design-login и /design-sync, остальные полтора десятка [нет в документации] — ни в чейнджлоге, ни в поиске, так что ниже то, что в сборке есть, а не то, что где-то обещано.
/artifacts
Показывает ваши опубликованные артефакты и те, которыми поделились с вами: название, ссылку, когда обновляли. [не на всех тарифах] — как и всё в этой группе, требует сессии с входом в claude.ai. Главное применение прикладное: найти ссылку на страницу, сделанную в прошлой сессии, — без неё Claude Code опубликует новую вместо того, чтобы обновить старую. Заодно это инвентарь: видно, что уже опубликовано и не потерялось ли.
Список интерактивный: на выбранной строке артефакт либо открывается в браузере, либо его ссылка копируется в буфер — уходить из терминала для этого не надо.
/prototype
Превращает идею в работающий прототип — одну самодостаточную страницу, которую можно открыть, потыкать и показать. [не на всех тарифах] — публикация требует входа в claude.ai. Берут, когда спорить словами дороже, чем посмотреть: экран интерфейса, поток из нескольких шагов, черновик лендинга. От дизайнерских команд ниже отличается тем, что делает работающую вещь, а не картинку.
Заранее ничего не спрашивают: вы описываете идею словами, дальше работа идёт до готовой страницы, и в конце остаётся ссылка на неё.
/prototype страница подбора тарифа: три плана, переключатель месяц-год, расчёт скидки/doc
Публикует рабочий документ, который правится прямо на странице: заметка, памятка, инструкция для команды. [не на всех тарифах] — нужен тот же вход в claude.ai. Смысл в том, что документ не остаётся в переписке: у него есть адрес, его можно открыть, дописать и дать ссылку. Тянуться сюда стоит, когда результат нужен людям, а не вам одному в терминале.
Что за документ нужен, говорится прямо в команде; в ответ приходит адрес опубликованной страницы, и дальше её правят либо на самой странице, либо просьбой к агенту.
/doc собери из решений этого разговора памятку по деплою для дежурного/plan-artifact
Публикует план отдельной страницей, которой можно поделиться: этапы, что за чем идёт, что от кого нужно. [не на всех тарифах] — публикация требует входа в claude.ai. Удобно, когда план, собранный в режиме планирования, надо показать людям, а не пересказывать. От /doc отличается только заготовкой: тут это план, а не произвольный документ.
Дальше вы уточняете, что должно быть в плане; результат — страница с этапами и ссылка на неё.
/artifact-pr-review [номер или ссылка]
Разбирает pull request и выкладывает разбор отдельной страницей: вывод, рекомендация, спорные места, слепые зоны. [не на всех тарифах] — публикация требует входа в claude.ai. Аргумент — номер PR или ссылка на него. Нужна, когда разбор надо показать автору и остальным; с /code-review не путать — та ищет дефекты и работает в терминале, а эта делает читаемую страницу с выводом.
Работа идёт в два приёма и не мгновенно: сначала PR читается целиком, и только потом публикуется страница, ссылку на которую вы и получаете.
/artifact-pr-review 1234/artifact-dashboard
Собирает дашборд по готовому шаблону: показатели, графики, разрезы на одной странице. [не на всех тарифах] — публикация требует входа в claude.ai. Берут, когда есть цифры и их надо показать целиком: статус проекта, результаты прогона, метрики за период. Шаблон задаёт вёрстку и оформление — от вас данные и понимание, что здесь главное.
Дальше вы даёте данные и говорите, что в них главное; в конце остаётся ссылка на собранный дашборд.
/artifact-dashboard недельные метрики очереди: длина, время ожидания, доля повторов/artifact-report
Отчёт по готовому шаблону: выводы сверху, разделы с подробностями ниже. [не на всех тарифах] — публикация требует входа в claude.ai. Годится для итогов аудита, разбора или большого прогона, когда результат надо передать людям целиком, а не пересказывать по кускам. Отличие от дашборда — здесь текст и рассуждение, а не плитки с цифрами.
Дальше вы говорите, о чём отчёт; результат — опубликованная страница и ссылка на неё.
/artifact-report итоги нагрузочного теста для смежной команды/artifact-data-table
Публикует данные таблицей по готовому шаблону — отдельной страницей вместо простыни в терминале. [не на всех тарифах] — публикация требует входа в claude.ai. Нужна, когда строк больше, чем помещается в ответ, и по ним хочется походить глазами. Данные берутся из того, что вы дали или что собралось в этой сессии.
Дальше вы даёте строки и колонки; в конце — ссылка на страницу с таблицей.
/artifact-data-table таблица SLA по сервисам из последнего отчёта/artifact-explainer
Страница-объяснение по готовому шаблону: разбор одной темы или механизма по шагам. [не на всех тарифах] — публикация требует входа в claude.ai. Берут, когда надо объяснить устройство чего-то коллеге или новому человеку в команде, и объяснение должно жить дольше одного разговора. От отчёта отличается задачей: отчёт сообщает результат, объяснение учит понимать.
Дальше вы называете тему; результат — страница с разбором и ссылка на неё.
/artifact-explainer как устроена наша схема идемпотентности заказов/artifact-components
Подключает готовые переиспользуемые компоненты, из которых собирается артефакт. Смысл простой: не рисовать каждый раз заново то, что уже сделано и выглядит прилично. Сама ничего не публикует — работает на той странице, которую вы делаете следующим шагом.
На экране после вызова ничего не появляется: набор компонентов просто оказывается в контексте.
/artifact-design
Правила оформления артефактов: вёрстка, типографика, тёмная тема и, что важнее, соразмерность усилий задаче. Загружают перед тем, как делать страницу, чтобы она выглядела как готовая вещь, а не как черновик из терминала. Ничего не публикует и не печатает.
/artifact-diagramming
Как рисовать схемы, которые показывают реальный механизм, а не набор коробок со стрелками: когда схема вообще нужна, что на ней должно быть и как сделать её читаемой в светлой и тёмной теме. Загружают, когда в артефакте нужна схема. Ничего не публикует и на экран не выводит.
/artifact-capabilities
Описывает, что опубликованная страница умеет в рантайме: читать ваши данные, запоминать действия посетителей (опрос, чеклист, документ, который правят прямо на странице), держать общее состояние, спрашивать Claude. Загружают до того, как просить такую страницу: без этого получится обычный статичный HTML, который ничего не помнит. Набор возможностей зависит от аккаунта, и команда показывает, что доступно именно вам.
/dataviz
Правила оформления графиков и дашбордов: какой тип графика к каким данным, палитры, оси, подписи, доступность, поведение в тёмной теме. Загружают до того, как написана первая строка кода графика, — переделывать потом дороже. Работает не только для артефактов: правила те же и для картинки, и для кода на любой библиотеке.
Сам вызов ничего не выводит: правила подгружаются и действуют на следующий график.
/whiteboard
Общая доска: вы рисуете от руки, а ответы приходят прямо на неё. [не на всех тарифах] — доска живёт опубликованной страницей, а значит нужен вход в claude.ai. Годится там, где объяснять словами дольше, чем накидать эскиз: расположение элементов, структура экрана, связи между кусками системы.
Доска открывается отдельной страницей, и ссылку на неё вы получаете в ответ на вызов.
/whiteboard набросай обмен между сервисом заказов и платежами/whiteboard-mp
То же самое, но доска живая, и рисует на ней не только человек: агент добавляет своё поверх вашего, и получается работа вдвоём. [не на всех тарифах] — как и обычная доска, требует входа в claude.ai. Берут, когда нужно не «нарисовать и спросить», а набрасывать вместе.
Страница по устройству та же, со ссылкой в ответе; отличие в том, что дальше на одном полотне оказываются и ваши штрихи, и то, что дорисовал агент.
/whiteboard-mp разбираем вдвоём, где в этой схеме теряется идемпотентность/workshop
Собирает дизайн вместе с вами, по одному решению за раз: вопрос — ваш ответ — следующий шаг, вместо большой страницы, сделанной сразу целиком. [не на всех тарифах] — результат публикуется, поэтому нужен вход в claude.ai. Годится, когда вы сами ещё не знаете, чего хотите, и решение выкристаллизовывается по ходу.
Разговор начинается с вопроса и идёт вопросами до конца; готовая страница со ссылкой появляется в самом финале.
/workshop экран настроек уведомлений — по одному решению за раз/design [sync|login|consent|revoke|import|export|status|описание]
Хаб Claude Design — связки Claude Code с дизайн-системой на claude.ai. [не на всех тарифах] — есть на Pro, Max, Team и Enterprise (на Enterprise выключена по умолчанию), нужна сессия, где работают артефакты, и версия не ниже 2.1.234; на Bedrock, Google Cloud, Foundry и Claude Platform on AWS команды нет. Отдельно не тарифицируется: расход идёт в тот же общий лимит, что и обычная работа.
Официально это одна команда «с описанием дизайна», а /design-login и /design-sync — две отдельные. В бинарнике /design дополнительно понимает семь подкоманд, и это нигде не описано. Появилась вся история в версии 2.1.234 и помечена как исследовательская — то есть меняться будет.
| Подкоманда | Что делает |
|---|---|
status | Показывает состояние подключения к Claude Design |
login | Вход, он же выдача доступа |
consent | Нигде не описана |
revoke | Отзывает выданный доступ |
import | Забирает дизайн-систему оттуда в проект |
export | Выгружает дизайн-систему проекта туда |
sync | То же, что отдельная команда /design-sync |
описание | Обычный вызов: вы словами говорите, что за дизайн нужен |
Отвечают подкоманды по-разному: status сообщает состояние подключения, login уводит подтверждать доступ в браузер, а import и export переносят дизайн-систему между проектом и claude.ai.
/design status # состояние подключения к Claude Design/design login # войти/design import # забрать дизайн-систему оттуда/design export # выгрузить туда/design-sync [подсказка]
Собирает дизайн-систему React-проекта прямо из кода и выгружает её на claude.ai/design, чтобы всё, что там рисуется, выглядело как ваш продукт, а не как чужой шаблон. [не на всех тарифах] — те же требования, что у /design: вход в claude.ai и доступная публикация артефактов. Аргумент — короткая подсказка, как назвать выгрузку или на что смотреть в проекте. Если доступ ещё не выдан, начинать надо с /design-login.
Всё происходит в один заход и без вопросов: проект разбирается, дизайн-система собирается и уезжает на claude.ai/design — там её и смотрят.
/design-sync Acme DS/design-login
Авторизует доступ к дизайн-системе — тот самый, что нужен для выгрузки. [не на всех тарифах] — работает там же, где и остальной Claude Design, и требует входа в аккаунт claude.ai. Вынесена отдельно, потому что вход делается один раз, а выгрузок потом много. Если /design-sync ругается на доступ, начинать надо отсюда, а проверить результат — через /design status.
Вход подтверждается в браузере; после этого доступ остаётся выданным, и повторять его перед каждой выгрузкой не нужно.
Конфигурация и интерфейс
/config [ключ=значение]
Панель настроек: без аргумента открывается панель со всеми настройками, которые можно менять из интерфейса. Это главная точка входа во всё поведение агента — от темы до модели и режимов работы, — и заглядывать сюда проще, чем помнить имена ключей в файле настроек. Алиас: /settings.
С аргументом настройка выставляется сразу, без панели: /config theme=dark. Полный список принимаемых ключей печатает /config --help — не угадывайте, он короче, чем список ключей файла настроек.
Прямая форма появилась в 2.1.181, именованные сокращения вроде theme и model — в 2.1.182. Работает она и в неинтерактивном режиме, и с телефона через удалённое управление, что делает её основным способом поменять настройку из скрипта.
Ограничение ровно одно, но неочевидное: форма «ключ=значение» не может включить настройку, которая требует вашего подтверждения в панели. Например autoContinueAtUsageLimit она умеет выключить, но не включить — включение сопровождается диалогом, а диалог в этой форме показать негде.
/config # открыть панель настроек/config --help # какие ключи принимает форма ключ=значение/config theme=dark # выставить сразу, без панели/config model=sonnet # то же для модели/permissions
Правила разрешения и запрета инструментов, плюс вкладка авто-режима. Сюда идут в двух случаях: надоело подтверждать одну и ту же безобидную команду — или, наоборот, нужно закрыть агенту доступ к чему-то, чего он трогать не должен. Правило записывается в настройки и действует дальше само, без вопросов. Алиас: /allowed-tools.
Выбираете сначала список — разрешённое, запрещённое или требующее подтверждения, — а внутри него добавляете своё правило или снимаете лишнее; изменения действуют с этого момента, перезапуск не нужен.
/permissions # правила прав доступа/theme
Сменить цветовую тему интерфейса. Тема меняет только то, как Claude Code рисует себя в терминале — подсветку кода в дифах, рамки, выделения; на настройки самого терминала она не влияет.
Кроме светлой и тёмной есть варианты для дальтоников, ANSI-варианты для терминалов со своей палитрой и auto, подстраивающаяся под фон терминала. Свои темы кладутся в ~/.claude/themes/ или приходят из плагинов; прямо в выборе есть пункт создания новой.
Выбор идёт списком: выбранная тема применяется ко всему интерфейсу и запоминается в настройках, так что в следующей сессии останется та же.
/theme # выбрать тему/keybindings
Открыть или создать файл горячих клавиш — ~/.claude/keybindings.json. В нём переопределяются сочетания интерфейса, в том числе аккорды из двух нажатий подряд. Нужна, когда привычное сочетание перехватывает сам терминал или мультиплексор и до Claude Code оно просто не доходит. Файл открывается в редакторе; если его ещё не было, он создаётся.
/keybindings # свои горячие клавиши/terminal-setup
Настроить сочетания терминала — например Shift+Enter для переноса строки. Правки уходят в конфигурацию самого терминала, а не Claude Code: выполнить достаточно один раз на машине, но после переезда на другой терминал придётся повторить.
/terminal-setup # Shift+Enter и прочие сочетания терминала/statusline
Настроить строку состояния: своим скриптом или сгенерировать из вашего shell-промпта. Строка состояния — это то, что Claude Code печатает у поля ввода: обычно каталог, ветка и модель, но содержимое целиком ваше. Скрипт вызывается на обновление строки, и в неё попадает то, что он напечатал.
Выбор здесь между двумя путями: собрать строку из вашего приглашения оболочки, чтобы она выглядела как привычный промпт, — или указать свой скрипт и решать, что в ней будет, самому.
/statusline # настроить строку состояния/voice [hold|tap|off]
Голосовой ввод. [не на всех тарифах] — диктовка требует входа в аккаунт claude.ai: с API-ключом и у сторонних провайдеров её нет. Пригождается, когда надо надиктовать длинную постановку задачи, а не набирать её; режим выбирается по тому, как вам удобнее держать руки.
| Что передали | Что произойдёт |
|---|---|
hold | Говорить с зажатой кнопкой |
tap | Нажал — говоришь, нажал — отправил |
off | Выключить голосовой ввод |
Аргумент применяется сразу, без диалога: режим диктовки переключается на указанный.
/voice hold # говорить с зажатой кнопкой/voice tap # нажал — говоришь, нажал — отправил/voice off # выключить голосовой ввод/tui [default|fullscreen]
Рендерер интерфейса: fullscreen — полноэкранный, без мерцания, default — обратно к обычному. Полноэкранный занимает окно целиком и перерисовывает себя сам, поэтому длинный вывод не дёргается. Обычный пишет в поток терминала, и историю листает сам терминал — если вы копируете куски вывода мышью или полагаетесь на прокрутку терминала, оставайтесь на нём.
Переключиться получится не в любой сессии: если в ней действуют ограничения, которые перезапуск не перенесёт — например права, выставленные только на эту сессию, — команда откажется и не поменяет ничего.
/tui fullscreen # полноэкранный рендерер без мерцания/tui default # обратно
# отказ в сессии с ограничениями, которые перезапуск не переносит# (так это выглядит в документации):Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too./color [цвет|default]
Цвет строки промпта для текущей сессии. Это не тема, а именно цвет строки ввода; удобно, когда открыто четыре терминала и надо не перепутать.
| Что передали | Что произойдёт |
|---|---|
| цвет из палитры | Строка промпта красится в него до конца сессии |
| ничего | Цвет выбирается случайно — это не ошибка, это задумано |
default | Сброс к обычному цвету |
Палитра фиксированная: red, blue, green, yellow, purple, orange, pink, cyan, плюс default для сброса. Если подключено удалённое управление, цвет синхронизируется и в веб-интерфейс.
/color purple # цвет строки промпта/color # случайный цвет/color default # сбросить/scroll-speed
Скорость прокрутки колесом мыши. Настройка чисто бытовая: по умолчанию колесо в длинной сессии либо ползёт, либо перепрыгивает нужное место, и здесь это правится. Команда открывает выбор скорости, а проверить результат можно тут же, колесом.
/scroll-speed # скорость прокрутки колесом/focus
Фокус-вид: на экране остаётся только ваш промпт, сводка инструментов и финальный ответ. Всё промежуточное — подробности вызовов, содержимое прочитанных файлов, длинный вывод команд — с экрана уходит. Нужен, когда сессия разрослась и за технической выдачей теряется сам разговор, а также когда вы показываете работу агента кому-то ещё.
/focus # оставить только суть на экране/hooks
Просмотр настроенных хуков по событиям. Хук — это ваша команда, которую Claude Code сам запускает на событие: перед вызовом инструмента, после правки файла, в конце хода. Панель показывает, что и на какое событие подвязано, — это первое место, куда стоит заглянуть, когда хук молча не срабатывает.
/hooks # какие хуки настроены/auto-mode-setup
Рассказать авто-режиму про ваше окружение и подправить его правила. Авто-режим — это работа без подтверждения каждого шага, и по умолчанию он осторожничает просто потому, что ничего не знает про ваш проект. Команда проходит по окружению вместе с вами и превращает ответы в правила: что здесь можно делать молча, а что трогать нельзя ни при каких условиях.
/auto-mode-setup # рассказать авто-режиму про окружение/sandbox [exclude "шаблон"|install]
Настроить песочницу для команд. Песочница ограничивает, куда запущенная команда может писать и ходить по сети, и именно она позволяет выполнять рутину, не подтверждая каждый вызов. Команда видна только там, где песочница поддерживается.
| Что передали | Что произойдёт |
|---|---|
| ничего | Откроется панель песочницы с зависимостями и переопределениями |
exclude "шаблон" | Команда по шаблону выводится из-под песочницы |
install | Доустановить саму песочницу (Windows) |
exclude — это тот случай, когда сборка или контейнерная команда не работает внутри изоляции и вы сознательно её оттуда достаёте; список копится в ключе sandbox.excludedCommands.
/sandbox # панель песочницы/sandbox exclude "docker *" # вывести команду из песочницы/sandbox install # доустановить песочницу (Windows)/import [codex|gemini] [--dry-run] [--yes]
Перенести конфигурацию из другого кодинг-агента: файлы инструкций, MCP-серверы, команды, субагентов и навыки. [не на всех тарифах] — недоступна на сторонних провайдерах и при выключенной подгрузке серверных флагов. Поддерживаются codex и gemini.
| Аргумент | Что делает |
|---|---|
codex или gemini | Откуда переносить; без аргумента спросят |
--dry-run | Показать, что было бы перенесено, ничего не меняя |
--yes | Перенести без интерактивного выбора |
В неинтерактивном режиме команда печатает, что нашла, и подсказывает строку для подтверждения импорта. Требует версии 2.1.213 и новее.
Важно, чего /import не делает: файл AGENTS.md, который используют некоторые другие агенты, Claude Code сам по себе не читает — но /import умеет перенести конфигурацию оттуда в понятный ему вид.
Без --yes выбор остаётся за вами: команда показывает найденное по видам и спрашивает, что именно тащить, — можно взять только MCP-серверы, а команды и навыки оставить как есть.
/import codex # забрать конфигурацию другого агента/import gemini --dry-run # посмотреть, что перенеслось бы/import codex --yes # перенести без вопросов/cloud-plugins
Использовать ли в облачных сессиях плагины, включённые на этой машине. [не на всех тарифах] — сами облачные сессии требуют входа через аккаунт claude.ai и недоступны с API-ключом и у сторонних провайдеров. Облачная сессия запускается на чужой машине, где вашего набора плагинов нет: настройка решает, тянуть его туда или обходиться тем, что в Claude Code встроено.
Выбор простой, но с последствиями: с плагинами облачная сессия ведёт себя как ваша локальная, без них — работает на голой конфигурации, зато вы не тащите в облако лишние источники.
/cloud-plugins # плагины в облачных сессиях/skills
Список навыков с управлением их видимостью.
Описания всех доступных навыков висят в контексте постоянно, каждую сессию, независимо от того, пользуетесь вы ими или нет. На большом наборе плагинов это ощутимая доля окна — экран /skills для того и нужен.
Печатаете — список фильтруется по имени, описанию и источнику. Клавиша t сортирует по числу токенов, и вот тут обычно и обнаруживается, что половину окна занимают три навыка, которыми вы не пользовались ни разу. Space или Enter переключает видимость навыка для модели и для меню, Esc сохраняет и закрывает.
Переключить получится не всё: плагинные навыки, навыки с disable-model-invocation: true во frontmatter и те, для которых видимость задана в корпоративных настройках или через --settings, не поддаются. Постоянный эквивалент — ключ skillOverrides, а найти то, что просто не используется, помогает /skill-doctor.
/skills # список навыков и их видимость/plugin
Управление плагинами и маркетплейсами. Маркетплейс — источник, из которого плагины ставятся; сам плагин приносит с собой команды, навыки, субагентов, хуки и MCP-серверы разом, поэтому один плагин может заметно поменять поведение сессии. Через эту панель маркетплейс подключается, а плагин ставится, выключается и удаляется. Алиасы: /plugins, /marketplace.
Порядок выбора такой: сначала маркетплейс, потом плагин внутри него. Часть изменений вступает в силу не мгновенно — их добивает /reload-plugins.
/plugin # плагины и маркетплейсы/reload-skills
Подхватить навыки и команды, изменённые на диске, без перезапуска сессии. Нужна, когда вы пишете свой навык и не хотите перезапускаться на каждую правку. Перечитываются только файлы — разговор и его контекст остаются на месте.
/reload-skills # подхватить изменения навыков с диска/reload-plugins [--force]
Активировать отложенные изменения плагинов — то же, что /reload-skills, только для плагинов. Пригождается сразу после /plugin, когда плагин уже поставлен, но сессия его ещё не видит.
Смысл --force тут противоположен интуитивному: это не «перечитать глубже». Если перезагрузка изменит набор загруженных MCP-инструментов, она обнулит кэш промпта, и команда, предупредив, откажется её делать — а --force заставляет сделать всё равно. То есть флаг преодолевает отказ, а не углубляет работу.
/reload-plugins # применить отложенные изменения плагинов/reload-plugins --force # то же, даже если это сбросит кэш промптаMCP и интеграции
/mcp [reconnect|enable|disable [<сервер>|all]]
Управление MCP-серверами и их OAuth-авторизацией. MCP-сервер — внешний процесс или сервис, который приносит в сессию свои инструменты, промпты и ресурсы: трекер задач, база, браузер, внутренний API. Сюда идут, когда сервер отвалился посреди работы, когда он просит войти заново или когда его инструменты сейчас только мешают — лишний сервер лучше выключить, чем держать его описания в контексте. Сами серверы описываются в конфигурации, здесь только их текущее состояние.
| Что передали | Что произойдёт |
|---|---|
| ничего | Список серверов и их состояние |
reconnect <сервер> | Поднять упавший сервер |
reconnect all | Переподключить все |
disable <сервер> | Временно выключить сервер |
enable <сервер> | Включить обратно |
В списке напротив каждого сервера видно, подключён он, отвалился или ждёт авторизации, — по этому и решают, что переподключать, а что выключить до конца работы. У подключённого сервера панель показывает ещё и число его инструментов и отдельно помечает тот, который подключился, но не отдал ни одного.
Серверы отдают свои промпты как команды. Они появляются в меню в виде /имя-сервера:имя-промпта — и это форма, которую стоит запомнить, потому что вторая, /mcp__сервер__промпт, работает тоже, но встречается только в старых статьях. Аргументы передаются через пробел и режутся по пробелам: каждый аргумент — один токен, фразу в кавычках как один аргумент передать не выйдет.
Ресурсы сервера подтягиваются через @. Форма — @сервер:протокол://путь, и это отдельный от инструментов механизм: не «позови инструмент», а «положи содержимое в контекст».
В фоновой сессии, к которой не подключён терминал, панель не откроется вовсе: сессия перейдёт в состояние «нужен ввод», а управлять серверами предложат формой /mcp enable|disable|reconnect <сервер>.
/mcp # список серверов и их состояние/mcp reconnect github # поднять упавший сервер/mcp disable jira # временно выключить сервер/jira:create_issue login-bug high # промпт сервера, нынешняя форма/ide [open]
Интеграции с IDE и их статус. Из-за этой связи правки видно в редакторе как диффы, а выделенный там фрагмент попадает в контекст, поэтому первое, куда идут при «в редакторе ничего не происходит», — сюда: обычно окажется, что связь не установилась. Без аргумента показывает статус интеграции с редактором, с open — открывает файл в подключённой IDE.
/ide # статус интеграции с редактором/ide open # открыть файл в подключённой IDE/chrome
Настройки Claude in Chrome. [не на всех тарифах] Расширение работает только при входе в аккаунт claude.ai — с ключом API и у сторонних провайдеров его нет. Claude in Chrome — это когда агент ходит по страницам вашего же браузера: кликает, читает страницу, смотрит консоль. Разрешения выдаются по сайтам, и без них не выполнится ничего, поэтому сюда заглядывают перед первой браузерной задачей.
/chrome # настройки работы в браузереАккаунт и авторизация
/login
Войти в аккаунт Anthropic или переключить аккаунт. Здесь же выбирается, чем оплачивается работа — подпиской claude.ai или ключом API из Console, и от этого зависит не только счёт: часть возможностей (веб-сессии, мобильное приложение, кредиты сверх тарифа) есть только на подписке. Вход происходит в браузере, после подтверждения управление возвращается в терминал.
Сюда же отправляют сообщения о том, что войти надо заново: Not logged in · Please run /login, OAuth token revoked · Please run /login, OAuth token has expired · Please run /login — все три приведены в документации дословно.
/login # войти или переключить аккаунт/logout
Выйти из аккаунта. Сохранённые учётные данные стираются, и дальше сессия работать не сможет, пока вы не войдёте снова — нужно, когда машина общая или когда надо начисто переключиться на другой аккаунт.
/logout # выйти/setup-bedrock
Настроить Amazon Bedrock: авторизация, регион, пины моделей. Нужна там, где работа идёт не через Anthropic напрямую, а через AWS — обычно из-за требования держать трафик в своём облаке. Видна при включённом Bedrock.
Вместе с /setup-vertex это пример команд, скрытых по состоянию: они появляются только тогда, когда выставлена соответствующая переменная окружения провайдера. Пока её нет, их нет и в /help.
/setup-bedrock # настроить Amazon Bedrock/setup-vertex
Настроить Google Cloud: авторизация, проект, регион, пины моделей. Смысл тот же, что у Bedrock: трафик идёт через ваше облако и оплачивается там же. Как и /setup-bedrock, видна только при выставленной переменной окружения провайдера.
/setup-vertex # настроить Google Cloud/install-github-app
Установить Claude GitHub Actions для репозитория. Это приложение, через которое разбор pull request'ов происходит на стороне GitHub, а не в вашем терминале. Ставится один раз на репозиторий; локальный /code-review от него не зависит и работает без всякой установки.
/install-github-app # поставить ревью в CI на репозиторий/install-slack-app
Установить Slack-приложение. [не на всех тарифах] Claude Code в Slack требует входа в claude.ai — с ключом API и у сторонних провайдеров недоступен. После установки задачу можно поставить прямо из переписки, и ответ придёт туда же — удобно там, где обсуждение и так идёт в Slack. В корпоративном пространстве установка может упереться в права администратора.
/install-slack-app # поставить приложение в Slack/privacy-settings
Просмотр и изменение настроек приватности: что уходит наружу из вашей работы и как это разрешено использовать. Сюда идут перед работой с закрытым или чужим кодом — чтобы увидеть текущее состояние, а не гадать о нём. В корпоративных аккаунтах часть переключателей закрыта политикой организации.
/privacy-settings # что уходит наружуИспользование и стоимость
/usage
Стоимость сессии, использование лимитов тарифа и статистика активности. Алиасы: /cost, /stats. Сюда идут в двух случаях: когда надо понять, доживёте ли до сброса лимита, и когда расход вдруг вырос и надо увидеть, кто его создаёт.
Экран показывает три вещи: сколько потрачено в этой сессии, насколько заполнены лимиты тарифа и на что уходят токены — с разбивкой по навыкам, субагентам, плагинам и отдельным MCP-серверам, плюс пометки о поведении, дающем больше десяти процентов расхода. Клавиши d и w переключают окно между сутками и неделей, а запланированные задачи с 2.1.242 получают свои строки.
Дальше — четыре вещи, которые важно понимать, и ни одна из них не очевидна.
Разбивка считается по локальной истории сессий. То есть по транскриптам на этой машине. Работа с другого компьютера и из веб-интерфейса в неё не попадает — при том что сами лимиты общие на аккаунт. Расхождение между «я почти ничего не потратил» и «лимит на исходе» обычно объясняется именно этим.
Лимитов несколько, и переключение модели помогает только от одного. Сообщения «вы исчерпали лимит сессии» и «вы исчерпали недельный лимит» относятся к окнам, общим для всех моделей, — /model тут не спасёт. И только после «вы исчерпали лимит Opus» или «лимит Sonnet» переход на модель другого семейства вернёт вас в работу. С версии 2.1.234 Claude Code умеет подождать сброса и продолжить прерванную задачу сам; включается это через /rate-limit-options и ключ autoContinueAtUsageLimit.
Кэш промпта живёт час только на подписке. Как только вы начинаете тратить кредиты сверх тарифа, время жизни кэша падает с часа до пяти минут — и та же самая пауза на обед, которая вчера ничего не стоила, сегодня оборачивается переработкой всего контекста заново. На ключе API и у облачных провайдеров пять минут по умолчанию.
Счётчик сессии обнуляется на /clear. До версии 2.1.211 он копился через очистки, и цифры из старых статей с нынешними не сходятся.
Если сервер лимитов недоступен, экран покажет последние загруженные данные с пометкой и предложит повторить по клавише r. Пока подключены кредиты сверх тарифа, для них здесь есть отдельная строка.
Незаметные статьи расхода, которые не видны в разбивке, но реально жгут лимит, пока вы ничего не делаете: запланированные задачи просыпаются и уходят с полным контекстом; сообщение от другой вашей сессии приходит как новый ход (лечится crossSessionInbound: "hold"); проверки активной цели начинают ходы, пока фоновая работа идёт; каждый живой тиммейт тратит, пока не завершится. И /compact — сам по себе крупный запрос, тогда как /clear не стоит ничего.
/usage # лимиты, расход, разбивка# вывод целиком, как его привёл автор отчёта об ошибкеSessionTotal cost: $86.94Total duration (API): 1h 31m 17sTotal duration (wall): 1d 22h 35mTotal code changes: 2538 lines added, 312 lines removedUsage by model: claude-opus-4-8: 9.0k input, 461 output, 50.4k cache read, 29.9k cache write ($0.3802) claude-haiku-4-5: 2.0k input, 43 output, 0 cache read, 0 cache write ($0.0022) claude-sonnet-5: 86.5k input, 448.0k output, 197.4m cache read, 3.4m cache write ($86.55)
Current session: 17% used, resets 1:29pm (Europe/Madrid)Current week (all models): 19% used, resets Aug 13 at 8:59am (Europe/Madrid)# отдельной строкой там же, начиная с 2.1.251, — про кэш промпта; так это выглядит в документацииPrompt cache (main): 14 requests · 91% of input tokens from cache · 2 misses (last 6m 10s ago, 310.2k tokens re-cached) · 1 expected rebuild (compaction or tool-result clearing) · warm (1h TTL, last activity 40s ago)
/stats # то же, сразу на вкладке статистики/cost # то же, обычным видом/usage-credits
Настроить кредиты, чтобы продолжать работу при достижении лимита тарифа. [не на всех тарифах] Команда работает только после входа под подпиской claude.ai через /login; с авторизацией по ключу API её нет. Кредиты — это оплачиваемый сверх подписки расход по обычным ставкам API, счёт за них отдельный от тарифа. Без них при исчерпанном лимите вы просто ждёте сброса окна; с ними придёт предложение продолжить, и дальнейшая работа пойдёт за деньги.
Куда именно уводит команда, зависит от вашей роли: подписчика Pro или Max — на страницу расхода в claude.ai, участника Team или Enterprise с доступом к биллингу — в админские настройки, а участника без такого доступа она попросит подтвердить и отправит запрос администраторам организации. На самой странице выбирают три вещи: включить кредиты или нет, поставить месячный потолок трат или снять его, и пополнить баланс. У подписавшихся через мобильное приложение включение и пополнение работают только в веб-версии.
Помните про побочный эффект, описанный выше: с началом трат сверх тарифа кэш промпта живёт пять минут вместо часа.
/usage-credits # подключить кредиты сверх тарифаУдалённая работа и окружения
/desktop
Продолжить текущую сессию в desktop-приложении. [не на всех тарифах] Приложению нужен вход в claude.ai — на ключе API и у сторонних провайдеров его нет. Сессия переезжает вместе с контекстом и историей: задачу не надо ставить заново. Пригодится, когда работу удобнее продолжать в окне приложения, а не в терминале. Алиас: /app.
/desktop # продолжить в приложении/teleport
Втянуть веб-сессию в этот терминал. [не на всех тарифах] Веб-сессии — research preview для Pro, Max и Team (на Enterprise нужен подходящий тип места), требуют входа в claude.ai и недоступны на Bedrock, Google Cloud и Microsoft Foundry. Контекст, история и состояние работы переезжают к вам, и дальше вы работаете локально — это нужно, когда задачу поставили с телефона или из браузера, а доводить её удобнее руками. Выбирают из своих активных веб-сессий; после выбора терминал продолжает ту, что вы указали. Отдельной платы за облачную машину нет, расходуются обычные лимиты аккаунта. Алиас: /tp.
/teleport # забрать веб-сессию в терминал/remote-control
Открыть сессию для управления с телефона или из веба. [не на всех тарифах] Требует входа в claude.ai; с ключом API недоступно. Работа при этом остаётся на вашей машине — снаружи вы только шлёте запросы и читаете ответы, поэтому доступ к репозиторию и окружению никуда не уезжает. Удобно, когда запущено что-то долгое и хочется следить за ним, не сидя за столом. Алиас: /rc.
Отказ выглядит понятно: если сессия работает не через api.anthropic.com, команда прямо называет причину и говорит, какую переменную окружения снять.
/remote-control # открыть сессию для телефона# отказ при выставленной CLAUDE_CODE_USE_BEDROCK — так это выглядит в документацииRemote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control./session
Показать адрес удалённой сессии и QR-код для неё. Нужна после /remote-control, когда ссылку потеряли или подключаете второе устройство: телефоном проще навести камеру, чем переносить адрес руками. Работает там же, где и удалённое управление, — то есть при входе в claude.ai. Алиас: /remote.
/session # адрес сессии и QR-код/remote-env
Окружение по умолчанию для веб-сессий и телепорта. Смысл в том, чтобы облачная машина стартовала уже готовой к вашему проекту, а не пустой: иначе первая же сборка или прогон тестов спотыкается. Настраивается один раз и дальше применяется ко всем новым веб-сессиям. Касается только веба, которому нужен вход в claude.ai.
/remote-env # окружение по умолчанию для веба/web-setup
Подключить GitHub к Claude Code в вебе через локальный gh. То есть отдать наружу доступ, который на вашей машине уже настроен, вместо отдельной авторизации в браузере. Делается один раз; без этого веб-сессия не увидит приватные репозитории. Как и всё веб-направление, требует входа в claude.ai.
/web-setup # подключить GitHub к вебу# так это выглядит в документацииConnected as <your-github-username>Диагностика и помощь
/help
Справка и список доступных команд. Список собирается под вашу сессию: команды, скрытые по состоянию (вроде настройки облачных провайдеров) или выключенные администратором, в нём не появятся — поэтому это честный ответ на вопрос «что у меня вообще есть», в отличие от документации. Хорошая проверка после установки плагина: его команды должны появиться здесь.
/help # что вообще доступно/status
Версия, модель, аккаунт, связь с API и статусы инструментов. Первое место, куда идут, когда поведение не сходится с ожиданиями: не та модель, не тот аккаунт, не доехавшая настройка. Работает даже во время ответа.
Открывает панель настроек на вкладке состояния. Кроме версии, модели, аккаунта и связи там есть строка вида сессии: interactive для обычной, background job · attached или background job · unattended для фоновой — в зависимости от того, подключён ли к ней терминал. Строка появилась в 2.1.221.
Плюс с 2.1.243 там же строка о пропущенных источниках корпоративных настроек: если админ положил файл политики, а действует другой, более приоритетный, здесь будет видно, какой именно проигнорирован. Это первое, что стоит смотреть, когда «настройка от админа не доехала».
По документации на этой же вкладке встречаются строки профиля, способа входа, ключа API, адреса узла и прокси, а за корпоративным шлюзом — строки провайдера с его базовым адресом.
/status # версия, модель, аккаунт, связь# строки вкладки состояния, как их привёл автор отчёта об ошибке (сборка 2.1.199)Version: 2.1.199Session ID: 352ea81c-819d-4028-bba5-daef515d0815Login method: Claude Enterprise account…Model: claude-fable-5[1m] (claude-fable-5)Setting sources: User settings, Enterprise managed settings (remote)/doctor
Диагностика установки и приведение конфигурации в порядок. Алиас: /checkup. Сюда идут, когда CLAUDE.md разросся и каждый запрос тащит килобайты инструкций или когда после обновления что-то ведёт себя странно.
С версии 2.1.205 это не экран с отчётом, а полноценный навык, который правит вашу конфигурацию. Что он делает: вычищает дубли между локальным и закоммиченным CLAUDE.md; урезает закоммиченный, выбрасывая то, что агент и так выведет из кода; переносит вечно загруженные инструкции в навыки и вложенные файлы, подгружаемые по требованию; предлагает сделать авто-режим режимом по умолчанию и заранее одобрить безопасные команды, которые вы чаще всего запрещали. Сначала показывает находки, потом меняет.
Проверка захватывает и то, что рядом: здоровье установки, битые файлы настроек, неиспользуемые расширения и одноимённых субагентов в одной папке — на каждую находку предлагается правка.
Терминальный claude doctor — это по-прежнему диагностика без правок и без запуска сессии; читает файлы настроек в текущей папке, не спрашивая доверия к ней.
Команда остаётся доступной, даже если встроенные навыки отключены целиком: она специально помечена как переживающая disableBundledSkills. Спрятать её можно переменной DISABLE_DOCTOR_COMMAND или записью "doctor": "off" в skillOverrides.
/doctor # проверить и починить конфигурацию/feedback [отчёт]
Отправить отзыв о Claude Code. Текст можно передать прямо в аргументе или написать в открывшемся поле. Годится для «работает не так, как ожидалось» и для пожеланий; для конкретной поломки с приложенным разговором есть /bug.
/feedback # отправить отзыв/feedback правки применяются, но не показываются в диффе/bug [отчёт]
Сообщить об ошибке или поделиться разговором. Ею же пользуются, когда надо просто отдать кому-то ход сессии целиком. Прежде чем прикладывать разговор, стоит вспомнить, что в нём: имена внутренних сервисов, куски приватного кода и всё, что попало в контекст, уйдут вместе с ним. Алиас: /share.
Перед отправкой команда спрашивает, прикладывать ли разговор.
/bug # сообщить об ошибке/heapdump
Снять дамп памяти — для диагностики её высокого потребления. Скрытая.
Пишет снимок памяти и разбор потребления на рабочий стол (в домашнюю папку на Linux без рабочего стола). Команда скрыта не флагом сервера, а тем, что не показывается в меню: набирается целиком и работает. Важное предупреждение: при обращении в поддержку прикладывайте только файл с разбором, а сам снимок содержит весь ваш разговор и учётные данные, и делиться им нельзя.
/heapdump # дамп памяти на рабочий стол/insights
Отчёт-анализ ваших сессий: зоны проекта, паттерны работы, точки трения. Это взгляд на привычки, а не на деньги — сколько потрачено, показывает /usage. Смотреть имеет смысл раз в несколько недель: из отчёта обычно вылезает то, что давно пора вынести в CLAUDE.md или в навык.
За один прогон разбирается до двухсот ещё не виденных сессий, совсем короткие пропускаются. Если что-то осталось за бортом, в шапке отчёта рядом с разобранным числом стоит общее — например, 200 sessions (412 total).
/insights # анализ моих сессий/skill-doctor
Какие загруженные навыки не используются и зря занимают контекст. Каждый включённый навык стоит места в окне: его описание грузится всегда, а тело — только при срабатывании, и десяток забытых навыков заметно сужает полезный контекст. По итогам решают, что отключить, а что переписать так, чтобы срабатывало по делу.
/skill-doctor # какие навыки зря висят в контексте/explain-usage
Куда ушли токены этой сессии, человеческим языком. [Навык] В отличие от /usage, где цифры и разбивка, здесь получается разбор с выводами: какие ходы вышли дорогими и почему. Полезно, когда лимит тает быстрее ожидаемого, а по таблице непонятно, что именно с этим делать.
/explain-usage # куда ушли токены/install [версия] [--force]
Поставить нативную сборку прямо из сессии — без пакетного менеджера и без выхода в терминал. Пригодится, чтобы перейти с npm-установки на нативную или откатиться на конкретную версию, когда свежая сломала что-то важное. Аргумент — версия: stable или конкретный номер; --force ставит её поверх текущей.
/install stable # поставить стабильную сборку/install 2.1.236 --force # конкретную версию, поверх текущейИнформация и документация
/release-notes
Список изменений по версиям: что появилось, что починили, что выключили. Читать стоит после каждого обновления — заметная часть поведения Claude Code меняется от сборки к сборке, и «вчера работало» чаще всего объясняется именно здесь.
Приятная деталь: заметки печатаются в транскрипт, но не попадают в контекст модели. Когда-то это было не так, и показ всех изменений подмешивал весь чейнджлог в каждый последующий запрос.
/release-notes # что изменилось по версиям/powerup
Короткие интерактивные уроки по возможностям. Смысл в том, что многое здесь само не находится: планы, навыки, фоновые задачи, хуки. Урок идёт прямо в сессии и занимает пару минут — это способ узнать про одну штуку, а не читать документацию целиком.
/powerup # короткий урок по возможностям/mobile
QR-код для установки мобильного приложения. Приложение нужно ради работы вне рабочего места: поставить задачу в дороге и посмотреть, чем кончилось. Алиасы: /ios, /android.
/mobile # QR-код мобильного приложения/radio
Lo-fi радио Claude FM в браузере. Ровно то, чем кажется: фоновая музыка, к работе агента отношения не имеет.
/radio # фоновая музыка/passes
Поделиться бесплатной неделей с друзьями и получить кредиты. Команда видна не всем: она появляется только у аккаунтов, которым это доступно, — так что в чужом /help её может не быть.
/passes # поделиться бесплатной неделей/upgrade
Перейти на Max: выше лимиты, больше Opus. Обычно сюда попадают прямо из сообщения об исчерпанном лимите. Если упирается не тариф, а конкретная модель, сначала дешевле попробовать /model — смена семейства модели снимает как раз этот случай.
/upgrade # перейти на Max/stickers
Заказать наклейки. К работе агента отношения не имеет: открывается форма заказа.
/stickers # заказать наклейки/team-onboarding
Сгенерировать онбординг-гайд для команды из вашей истории использования. Смысл — не писать такой документ с нуля: он собирается из того, как вы работаете на самом деле, а не из общих советов. На выходе текст, который правят руками и кладут в репозиторий.
/team-onboarding # гайд для команды из моей историиУбранные и выключенные команды
Своих разделов у них нет — набирать их незачем. Таблица нужна затем, что половина статей в интернете всё ещё их советует, и когда команда «не работает», проще всего посмотреть здесь.
Убраны совсем:
| Команда | Что с ней случилось |
|---|---|
/vim | Убрана в 2.1.92. Режим клавиш переключается в /config полем «Editor mode» или ключом editorMode. |
/pr-comments | Убрана в 2.1.91. Просто попросите агента показать комментарии к pull request. |
/output-style | Объявлена устаревшей в 2.1.73 и убрана в 2.1.91. Стиль ответов задаётся ключом outputStyle. |
/ultraplan | Убрана. Вместо неё — режим планирования, /plan. |
/agents | Формально осталась, но только отвечает, что субагентов заводят файлами в .claude/agents/. Фоновые агенты — claude agents в терминале. |
/extra-usage | Переименована в /usage-credits в 2.1.144. |
/init-verifiers | Никогда не существовала — если встретили в чужой статье, это выдумка. |
--enable-auto-mode | Флаг убран в 2.1.111. Вместо него --permission-mode auto. |
Выключены изнутри в сборке 2.1.251: зарегистрированы, но не работают и в меню не показываются.
| Команда | Чем пользоваться вместо |
|---|---|
/version | Версию сессии показывает /status, версию бинарника — claude --version. |
/update (алиас /restart) | Обновление — claude update в терминале. |
/loops | Что и с какой периодичностью крутится, показывает /usage; сами циклы заводит /loop. |
/wellbeing (алиасы /breaks, /break-reminder, /downtime) | Сами настройки работают: объекты breakReminder и quietHours в файле настроек. |
/pause-memory (алиасы /memory-pause, /toggle-memory) | Автопамять выключается ключом autoMemoryEnabled. |
Есть ещё команды, которые появляются по состоянию и которых вы не увидите, пока состояние не наступит: /limit-reset и /low-priority — когда вы упёрлись в лимит сессии, /rate-limit-options, /pro-trial-expired, /design-consent и /design-revoke, а /setup-cowork живёт только в режиме Cowork. Плюс два совсем внутренних входа, __remote-workflow и workflow-launch-exec, через которые сервер передаёт сессии готовый воркфлоу.
И отдельная категория — навыки только для модели: keybindings-help, memory-types, cowork-plugin. Агент подтягивает их сам, набрать их нельзя. Механизм общий и доступен вам тоже — это поле user-invocable: false во frontmatter навыка.
Два живучих заблуждения напоследок. Команды /alias не существует: под этим именем в бинарнике лежит описание системной утилиты alias для автодополнения команд, вводимых через !. И файла .claudeignore тоже не существует — чтобы агент игнорировал файлы, используйте .gitignore, который учитывается по умолчанию, или .ignore.
Как меню ищет команду
Мелочь, экономящая нервы. С версии 2.1.236 подсветка в меню срабатывает, если буквы после / совпадают с именем команды или её алиасом — с начала имени или с начала слова внутри него, причём разделители :, _ и - при сравнении игнорируются. Поэтому /adddir подсвечивает /add-dir, а /new подсвечивает /clear через его алиас.
Что изменилось тогда же и важнее: опечатка больше не угадывается. Раньше Enter на несуществующей команде запускал похожую. Теперь после опечатки ничего не подсвечено, близкие варианты остаются в списке и выбираются стрелками или Tab, но Enter отправит ваш текст как есть и сообщит о неизвестной команде.
Недоступные команды из меню просто исчезают — вы увидите «нет команд по такому запросу». Некоторые вместо этого отвечают своим сообщением о недоступности: например /schedule на ключе API скажет, что требует аккаунта. И частичным именем скрытую команду не вытащить — её надо набрать целиком.
Свои команды
Своя слэш-команда — это файл SKILL.md в папке навыка. Раньше для этого была отдельная сущность в .claude/commands/; сейчас команды и навыки слиты в одно, старые файлы продолжают работать и дают ровно такую же команду.
Где искать и куда класть:
| Расположение | Область действия | Имя команды |
|---|---|---|
~/.claude/skills/<имя>/SKILL.md | личная, во всех проектах | /<имя папки> |
<проект>/.claude/skills/<имя>/SKILL.md | проектная, коммитится | /<имя папки> |
.claude/commands/<имя>.md | старая форма, работает | /<имя файла> |
| плагин | откуда установлен | /<плагин>:<имя> |
Имя команды берётся из имени папки, а не из поля name. Для личных и проектных навыков name — только подпись в списке. У плагинных наоборот: name заменяет последний сегмент, и my-plugin/skills/review/ с name: fancy даёт /my-plugin:fancy. Короткая форма /fancy тоже сработает, если имя больше никем не занято.
Простейший пример:
---name: fix-issuedescription: Разобрать issue по номеру, найти причину и предложить правкуargument-hint: <номер issue>allowed-tools: Bash(gh issue view:*), Bash(gh pr create:*)---
Возьми issue номер $0 из этого репозитория.
Текущее состояние ветки:
!`git status --short`
Прочитай описание, найди в коде причину, предложи минимальную правкуи объясни, почему она минимальная.Вызывается как /fix-issue 4821. Здесь $0 — это первый аргумент, то есть 4821, а строка с ! выполняется до того, как текст дойдёт до модели, и подменяется своим выводом. Про то и другое подробно ниже.
Поля frontmatter
Их двадцать. Полезно знать, что они вообще есть, — половина из них решает проблемы, которые иначе решают костылями.
| Поле | Что задаёт |
|---|---|
name | Имя; у личных и проектных навыков — только подпись |
description | Описание, по которому модель решает, подходит ли навык |
when_to_use | Уточнение, когда его брать |
argument-hint | Подсказка по аргументам в меню |
arguments | Список именованных аргументов, позиционно отображаемых на $имя |
disable-model-invocation | Запретить модели вызывать навык самой |
user-invocable | false — навык только для модели, набрать его нельзя |
allowed-tools | Что предварительно разрешить на этот ход |
disallowed-tools | Что запретить |
model | Модель на остаток хода; принимает inherit |
effort | Уровень усилий: от low до max |
context | fork — выполнить навык в субагенте |
agent | Какой тип агента взять при context: fork |
background | false — дождаться результата форкнутого навыка |
hooks | Хуки, живущие вместе с навыком |
paths | Ограничить автоматическую активацию этими путями |
shell | Чем выполнять встроенные команды: bash или powershell |
metadata | Произвольные данные |
license | Лицензия |
compatibility | Требования совместимости |
Три ограничения, на которых спотыкаются. Frontmatter читается, только если открывающие --- стоят первой строкой файла. Поля description и when_to_use в листинге обрезаются до полутора тысяч символов — всё, что длиннее, модель при выборе навыка не увидит. И в старых файлах из .claude/commands/ работает тот же frontmatter, кроме name и paths — они там игнорируются.
Отдельно про allowed-tools: это предварительное одобрение на один ход, а не ограничение. Разрешение снимается с вашим следующим сообщением, хотя содержимое навыка остаётся в контексте. И у него есть неприятное свойство, о котором стоит знать всем, кто запускает агента в чужом репозитории: доверие к папке его не сдерживает. Проектный навык применит свой allowed-tools и в папке, которую вы никогда не помечали доверенной, включая неинтерактивный запуск. То есть навык, лежащий в репозитории, может выдать себе широкие права — читайте это поле в чужих репозиториях до запуска.
Аргументы: нумерация с нуля
Самое неожиданное место во всей теме, и его стоит запомнить дословно.
| Подстановка | Что подставится |
|---|---|
$ARGUMENTS | Вся строка аргументов как вы её набрали |
$ARGUMENTS[N] | Аргумент по индексу, индексация с нуля |
$N | Короткая форма: $0 — первый аргумент, $1 — второй |
$имя | Аргумент из списка arguments во frontmatter, по позиции |
Да, $0 — это первый аргумент, а не имя команды, как в оболочке. Ошибка на единицу здесь — самая частая.
Индексированные аргументы разбираются с учётом кавычек: в /my-skill "hello world" second значение $0 — это hello world целиком. Индексированная подстановка, для которой аргумента не хватило, остаётся в тексте как есть; именованная превращается в пустую строку. Значение аргумента, внутри которого сам оказался $1 или $ARGUMENTS, вставляется буквально и второй раз не разворачивается. Экранирование — одним обратным слэшем: \$1.00. И если ни одна подстановка в теле не получила аргументов, строка ARGUMENTS: <значение> просто допишется в конец.
Встроенные команды оболочки
Запись !`команда` выполняется до того, как содержимое попадёт к модели, и заменяется своим выводом. Так в навык подставляют актуальное состояние: ветку, дифф, список упавших тестов. Чем именно её выполнять — bash или powershell — задаётся полем shell во frontmatter.
Есть два правила, которые экономят полчаса недоумения. Форма распознаётся, только если ! стоит в начале строки или сразу после пробела — в KEY=!`cmd` она останется текстом и не выполнится. И подстановка проходит по файлу один раз: вывод команды повторно не сканируется, поэтому команда не может напечатать другую подстановку в расчёте на второй проход.
Для многострочного скрипта открывают блок кода с восклицательным знаком после трёх обратных кавычек.
Выключается всё это ключом disableSkillShellExecution: каждая команда заменяется заглушкой о запрете политикой. Действует на пользовательские, проектные, плагинные навыки и навыки из добавленных папок; встроенные и корпоративные не трогает. Навыки, синхронизированные с claude.ai, такие команды локально не выполняют никогда, независимо от настройки.
Переменные путей
Внутри тела навыка и внутри правил allowed-tools подставляются ${CLAUDE_SKILL_DIR} — папка самого навыка, ${CLAUDE_PROJECT_DIR} — корень проекта, ${CLAUDE_SESSION_ID}, а в плагинных навыках ещё ${CLAUDE_PLUGIN_ROOT} и ${CLAUDE_PLUGIN_DATA}.
То, что они работают в обоих местах, — не мелочь, а рабочий приём: так навык запускает свой собственный скрипт без единого вопроса о правах.
---name: renderdescription: Отрисовать схему из исходникаallowed-tools: Bash(${CLAUDE_SKILL_DIR}/scripts/render.sh *)---
Запусти `${CLAUDE_SKILL_DIR}/scripts/render.sh $0` и покажи результат.Правило разрешает ровно ту команду, которую тело велит выполнить, — ни шире, ни уже.
Мелочи, которые полезно знать
Навыки стыкуются. В начале одного сообщения можно поставить до шести команд: /write-tests /fix-issue 123 загрузит оба навыка и передаст обоим 123 как аргументы. До версии 2.1.199 загружался только первый, а остальное считалось текстом. Исключение — /code-review, которая забирает остаток строки себе.
ultrathink в теле навыка просит модель думать глубже, когда навык срабатывает. Работает прямо словом в тексте.
Имена встроенных команд зарезервированы, даже если в вашей сессии они недоступны: навык с конфликтующим именем, приехавший из синхронизации, будет пропущен.
Проверить навык можно без плагина: claude plugin validate <путь> работает и на обычной папке с навыками и агентами. А чтобы папка с навыками стала плагином, достаточно положить в неё .claude-plugin/plugin.json.
Настройки: settings.json
Дальше — ключи файла настроек, включая экспериментальные и корпоративные, с типами и примерами. Список сведён из двух источников: официального справочника настроек, где сейчас около двухсот двадцати записей, и схемы валидации внутри самого CLI. Они не совпадают: в схеме есть ключи, которых нет в документации, и наоборот — в документации есть ключи, которых схема не знает, потому что живут они в другом файле. Про это ниже отдельно.
Обозначения: [эксп] — экспериментальный или внутренний ключ, может измениться или исчезнуть; [админ] — действует только из корпоративного источника; [устар] — устаревший; [глобальный] — живёт не в settings.json, а в ~/.claude.json.
Где лежит файл
Уровней не четыре и не пять, а больше, чем принято писать. Начнём с обычных:
| Уровень | Файл | Назначение |
|---|---|---|
| Пользовательский | ~/.claude/settings.json | Личные настройки на все проекты |
| Проектный | <проект>/.claude/settings.json | Командные, коммитятся в репозиторий |
| Локальный | <проект>/.claude/settings.local.json | Личные на конкретный проект, в .gitignore |
| Командная строка | --settings <файл или JSON> | Только на один запуск |
| Политика | зависит от системы | Корпоративная политика |
| Глобальный конфиг | ~/.claude.json | Настройки, которые в settings.json игнорируются |
Последняя строка — то, чего нет почти нигде. Часть настроек живёт только в ~/.claude.json, и если написать их в settings.json, они будут молча проигнорированы. Туда же Claude Code складывает вашу сессию входа, конфигурацию MCP-серверов и решения о доверии к папкам. Обычно этот файл пишется сам, руками в него лезут редко — но знать про него надо, потому что «я выставил ключ, и ничего не произошло» чаще всего объясняется именно этим.
Корпоративная политика тоже не одна. Источников четыре, и они ранжированы:
| Ранг | Источник |
|---|---|
| 1 | Серверные настройки от claude.ai или корпоративного шлюза |
| 2 | Политика операционной системы: домен управляемых настроек на macOS, ключ реестра HKLM\SOFTWARE\Policies\ClaudeCode на Windows |
| 3 | Файл управляемых настроек: /Library/Application Support/ClaudeCode/managed-settings.json, /etc/claude-code/managed-settings.json, C:\Program Files\ClaudeCode\managed-settings.json |
| 4 | Тот же ключ реестра, но в HKCU — доступный самому пользователю на запись, а потому не считающийся административным и применяющийся только там, где выше ничего нет |
Политика из системы и HKCU перечитываются каждые полчаса, серверные настройки — раз в час. По умолчанию источники не складываются: применяется самый старший, остальные отбрасываются. Изменить это можно ключом managedSourcesBehavior: "merge", но задать его надо в самом старшем из развёрнутых источников — нижний не может сам напроситься в слияние, а HKCU не сливается никогда.
Если админ что-то положил, а оно «не доехало» — смотрите в /status: с версии 2.1.243 там есть строка о пропущенных источниках, где прямо написано, какой файл проигнорирован.
Формат: строгий JSON
Тут я должен исправить сам себя, потому что раньше думал иначе и в интернете это повторяют часто.
Файлы настроек — строгий JSON. Комментарий // или висячая запятая — синтаксическая ошибка, и при следующем запуске файл будет помечен как ошибочный целиком. Никакого JSONC. (Путаница возникает потому, что JSONC в продукте действительно есть в других местах — например, /terminal-setup разбирает конфигурацию редактора с комментариями.)
Проверить свой файл проще всего запуском: ошибки настроек печатаются на старте. claude doctor покажет их разбором.
Полезная привычка — строка $schema:
{ "$schema": "https://json.schemastore.org/claude-code-settings.json"}Редактор начнёт подсказывать имена ключей и подчёркивать опечатки, а опечатка в имени ключа — самая частая причина того, что настройка «не работает»: неизвестные ключи молча игнорируются. Оговорка: схема иногда отстаёт от продукта. Например teammateDefaultModel в ней ещё есть, а из Claude Code он убран в 2.1.234 и ни на что не влияет.
Кто кого перекрывает
Порядок уровней — тот, что в таблице выше. Но «перекрывает» верно не для всего, и вот три исключения, которые ломают интуицию.
Списки складываются, а не заменяются. Если permissions.allow задан и в пользовательском файле, и в проектном, вы получите объединение обоих. Верхний уровень не может убрать запись нижнего — единственное, что это умеет, корпоративный allowManagedPermissionRulesOnly. Любая таблица приоритетов, где написано «каждый следующий перекрывает предыдущий», для списков неверна.
Четыре списка ведут себя иначе: fallbackModel берётся целиком из самого старшего файла, который его определяет (это упорядоченная цепочка, смешивать её бессмысленно); modelPicker — целиком из старшего среди корпоративного, --settings и пользовательского, а в проектном и локальном игнорируется; availableModels от админа применяется как есть, не подхватывая ваши добавления; modelSettings разрешается отдельно для каждой модели.
У семи ключей строгое значение снизу побеждает корпоративное. Обычно политика абсолютна — её не перебивает даже --settings. Но для этих ключей более строгий вариант из любого уровня выигрывает, потому что запретить себе лишнее вам никто мешать не станет: disableClaudeAiConnectors со значением true, enableArtifact со значением false (и disableArtifact: true), isolatePeerMachines со значением true, remoteControlAtStartup со значением false из проектного или локального файла, crossSessionInbound с более строгим значением на шкале «принимать — придержать — отказывать», useAutoModeDuringPlan и syncClaudeAiSkills со значением false.
Проектные разрешения ждут доверия к папке. permissions.allow и permissions.additionalDirectories из проектного файла начинают действовать только после того, как вы подтвердили доверие к этой папке. deny и ask действуют сразу — они только ограничивают.
А вот дальше самое важное, и это стоит прочитать всем, кто запускает claude -p в чужом репозитории. В неинтерактивном режиме диалог доверия не показывается, поэтому проектные разрешающие правила отбрасываются с предупреждением в поток ошибок — но хуки этого репозитория выполняются, его блок env применяется, его вспомогательные скрипты авторизации запускаются, поле allowed-tools его навыков действует, а серверы из его .mcp.json подключаются без вопросов. Отбрасываются именно разрешения, а не исполняемые части.
Безопасный запуск в непроверенной папке — это --setting-sources user, --bare, --restricted или --settings '{"disableAllHooks": true}'. Просто выставить disableAllHooks в своём пользовательском файле недостаточно: проектный файл старше и вернёт его обратно.
Переменные окружения — не уровень
Ещё одна вещь, которую обычно рисуют неправильно. Переменные окружения не стоят «между» уровнями настроек: кто кого перекрывает, решается для каждой пары «переменная — ключ» отдельно.
ANTHROPIC_MODELиз оболочки перекрывает ключmodelиз любого файла.ANTHROPIC_DEFAULT_MODELдействует, только еслиmodelне задан нигде.--modelи/modelперекрываютANTHROPIC_MODEL.- А
CLAUDE_CODE_EFFORT_LEVELустроен наоборот и перекрывает--effortи/effort.
И отдельно: значение из блока env в настройках побеждает экспорт из оболочки, а не наоборот, как принято думать. Claude Code записывает каждую запись блока в окружение процесса поверх унаследованного значения. Удалить переменную из файла настроек нельзя — можно выставить её в пустую строку, что при выборе провайдера считается «не задана» (хотя дочерние процессы получат пустое значение). Переменные оболочки читаются один раз на старте, а значения из env перечитываются при изменении файла — кроме подсистем, которые настраиваются только при запуске, вроде телеметрии.
Скелет файла
Скаляры вроде model, theme, чисел и флагов пишутся на верхнем уровне. Сгруппированные настройки — permissions, env, hooks, statusLine, worktree, voice, sandbox, sshConfigs — вложенные объекты.
{ "$schema": "https://json.schemastore.org/claude-code-settings.json", "model": "opus", "outputStyle": "default", "theme": "dark", "autoCompactEnabled": true, "cleanupPeriodDays": 30, "includeCoAuthoredBy": false, "env": { "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1", "DISABLE_TELEMETRY": "1" }, "permissions": { "allow": ["Bash(npm run build)", "Edit(src/**)"], "ask": ["Bash(git push:*)"], "deny": ["Read(./.env)"], "defaultMode": "acceptEdits", "additionalDirectories": ["../shared-lib"] }, "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "npm run lint" }] } ] }, "statusLine": { "type": "command", "command": "~/.claude/statusline.sh", "padding": 1 }, "worktree": { "symlinkDirectories": ["node_modules"], "baseRef": "fresh" }, "enabledPlugins": { "formatter@anthropic-tools": true }}Аутентификация и провайдеры
| Параметр | Тип | Что делает |
|---|---|---|
apiKeyHelper | строка, путь к скрипту | Скрипт, печатающий в стандартный вывод значение для авторизации. Удобно для временных и ротируемых ключей. |
proxyAuthHelper | строка, команда | [эксп] Команда, печатающая значение заголовка авторизации прокси. |
awsCredentialExport | строка, путь | Скрипт, экспортирующий учётные данные AWS для Bedrock. |
awsAuthRefresh | строка, путь | Скрипт, обновляющий аутентификацию AWS до истечения срока. |
gcpAuthRefresh | строка, команда | Команда обновления аутентификации Google Cloud. |
otelHeadersHelper | строка, путь | Скрипт, печатающий HTTP-заголовки для экспорта телеметрии. |
policyHelper | объект | [админ] Исполняемый файл, вычисляющий настройки политики на старте: path, timeoutMs, refreshIntervalMs. |
policyHelpers | объект по системам | [админ] То же, но отдельно для macOS, Linux, Windows и WSL. |
forceLoginMethod | claudeai, console, gateway | Жёстко задать способ входа: подписка, биллинг через Console или корпоративный шлюз. |
forceLoginOrgUUID | строка или массив | [админ] Разрешить вход только в указанную организацию или в любую из списка. |
forceLoginGatewayUrl | строка, адрес | [админ] Обязательный адрес корпоративного шлюза для входа. |
forceRemoteSettingsRefresh | boolean | [админ] Блокировать старт, пока не подтянутся свежие настройки политики. |
parentSettingsBehavior | first-wins, merge | [админ] Как слой родителя из SDK сочетается с админским. |
xaaIdp | объект | [эксп] Подключение внешнего провайдера идентификации: issuer, clientId, callbackPort. |
Значение gateway у forceLoginMethod учитывается только из источника, лежащего на самой машине: файла политики, домена настроек macOS или ветки HKLM. В пользовательском, проектном, локальном и в HKCU оно считается незаданным — иначе корпоративный вход можно было бы перенаправить из репозитория.
Модель, мышление, усилия
| Параметр | Тип | Что делает |
|---|---|---|
model | строка | Модель по умолчанию: алиас или полный идентификатор. |
availableModels | массив строк | [админ] Белый список моделей. Пустой массив — только модель по умолчанию. |
enforceAvailableModels | boolean | [админ] Распространить белый список и на строку «по умолчанию» в выборе модели. |
modelOverrides | объект | [админ] Соответствие идентификаторов Anthropic идентификаторам провайдера. |
modelPicker | объект | Свой список в /model: записи {model, label, description}; replaceBuiltInOptions заменяет встроенный. |
modelSettings | объект | Настройки, привязанные к конкретной модели, — сейчас уровень усилий. |
modelPricing | объект | [админ] Тарифы организации вместо прайс-листа: множитель скидки и поштучные цены. |
advisorModel | строка | Модель для советчика. |
agent | строка | Имя агента для главного потока: его системный промпт, ограничения и модель. |
alwaysThinkingEnabled | boolean | false выключает размышления. |
showThinkingSummaries | boolean | Показывать сводки размышлений в диалоге и в транскрипте. |
effortLevel | low, medium, high, xhigh | Сохранённый уровень усилий. max схема не принимает. |
ultracode | boolean | [эксп] xhigh плюс постоянная оркестровка воркфлоу. |
fastMode | boolean | Включён ли ускоренный режим вывода. |
fastModePerSessionOptIn | boolean | Не сохранять fast-режим между сессиями. |
autoCompactEnabled | boolean | Автоматически сжимать разговор при заполнении контекста. |
autoCompactWindow | число 100000–1000000 | Размер окна автосжатия в токенах. |
precomputeCompactionEnabled | boolean | Готовить сжатие заранее, пока идёт работа. |
switchModelsOnFlag | boolean | При срабатывании фильтра безопасности переключиться на другую модель. По умолчанию true. |
fallbackModel | массив строк | Модели для отката при перегрузке основной; пробуются по порядку. |
promptCacheTtl | 5m, 1h | Время жизни кэша промпта основного разговора. |
subagentPromptCacheTtl | 5m, 1h | То же для субагентов; по умолчанию пять минут. |
Три значения по умолчанию, которые меняют поведение и о которых редко пишут.
switchModelsOnFlag включён. То есть при срабатывании фильтра безопасности модель молча меняется, чтобы не прерывать диалог. Если выключить, интерактивная сессия встанет и спросит вас, а неинтерактивный запуск завершит запрос ошибкой — для скриптов это часто правильнее, потому что тихая подмена модели в CI выглядит как необъяснимая смена поведения.
promptCacheTtl подбирается сам: час на подписке, пять минут иначе. Переменная окружения его перекрывает.
effortLevel не принимает max намеренно, чтобы максимальный уровень не оставался включённым навсегда; на сессию он ставится командой или флагом.
Права доступа инструментов
Самая практически важная часть файла — и самая недооценённая по количеству подводных камней. Вложенный объект permissions:
| Поле | Тип | Что делает |
|---|---|---|
allow | массив правил | Что разрешено без вопросов. |
deny | массив правил | Что запрещено всегда. |
ask | массив правил | Что всегда требует подтверждения. |
defaultMode | см. ниже | Режим по умолчанию. |
disableBypassPermissionsMode | "disable" | Запретить режим обхода подтверждений. |
additionalDirectories | массив путей | Дополнительные директории в области доступа. |
Рядом ключи верхнего уровня: skipDangerousModePermissionPrompt и skipAutoPermissionPrompt помнят, что вы уже приняли соответствующее предупреждение; allowManagedPermissionRulesOnly [админ] велит учитывать списки только из политики; disableAutoMode выключает авто-режим; useAutoModeDuringPlan разрешает применять его в режиме планирования, по умолчанию да.
Режимы
| Режим | Что делает |
|---|---|
default | Обычный: спрашивать, когда нужно. Алиас — manual, с версии 2.1.200 принимается и в настройках |
acceptEdits | Автоматически принимать правки файлов |
plan | Только анализ, ничего не менять |
auto | Решение принимает классификатор |
dontAsk | Автоматически отказывать во всём, что потребовало бы вопроса |
bypassPermissions | Принимать всё |
dontAsk — не «не спрашивать по мелочам». Это самое опасное недопонимание во всей теме прав, и я сам его повторял. Режим не смягчает, а ужесточает: всё, что в обычном режиме вызвало бы вопрос, автоматически запрещается. Работает только то, что попало в allow, встроенный набор безопасных команд чтения и то, что одобрил хук. Ваши собственные правила ask в этом режиме не спрашивают, а отказывают; вопрос агента к вам тоже отклоняется, даже если разрешён.
Ещё одна тонкость: значение auto не действует из проектных и локальных настроек — его надо задавать в пользовательском файле. А сессии, запущенные из расширения VS Code, читают только пользовательский, корпоративный и --settings.
Формат правила
Правило записывается как Инструмент(уточнение): Bash(npm run build), Edit(src/**), Read(~/.zshrc).
{ "permissions": { "allow": ["Bash(npm run:*)", "Edit(src/**)", "Read(~/.config/**)"], "ask": ["Bash(git push:*)"], "deny": ["Read(./secrets/**)", "Read(./.env)"], "defaultMode": "acceptEdits", "additionalDirectories": ["../shared", "/tmp/workspace"] }}Выглядит просто. Дальше — двенадцать правил поведения, каждое из которых объясняет какой-нибудь популярный вопрос «почему моё правило не работает».
Порядок проверки: сначала запрет, потом вопрос, потом разрешение
Правила проверяются в фиксированном порядке — deny, затем ask, затем allow, — и побеждает первое совпадение, а не самое точное. Отсюда два следствия, которые ломают ожидания.
Широкий запрет перекрывает узкое разрешение: deny с Bash(aws *) заблокирует allow с Bash(aws s3 ls). Исключений из запрета не бывает — механизма «запретить всё, кроме» здесь нет.
Совпавшее ask спрашивает, даже если есть более точное allow. Это не ошибка, это способ сказать «эту команду всегда подтверждаю руками», и она работает поверх любых разрешений.
Между уровнями настроек то же самое: запрет из пользовательского файла бьёт разрешение из проектного и наоборот, потому что все deny со всех уровней проверяются раньше любых allow.
Ещё одна мелочь с большими последствиями: голое имя инструмента в deny убирает инструмент из контекста целиком. Запись "Bash" в запретах означает, что агент про этот инструмент вообще не узнает. А Bash(rm *) оставляет инструмент видимым и запрещает только совпадающие вызовы.
Защищённые пути проверяются раньше ваших правил
Существует список путей, запись в которые проверяется до того, как посмотрят на allow. Поэтому Edit(.claude/**) в любом файле настроек не даёт ровным счётом ничего — и это самый частый источник вопросов «почему моё разрешение игнорируется».
В списке защищённых каталогов: .git, .config/git, .vscode, .idea, .husky, .cargo, .devcontainer, .yarn, .mvn и .claude целиком, кроме .claude/worktrees. Из файлов — .gitconfig, .gitmodules, все файлы профилей и запуска оболочки, .envrc, .npmrc, .yarnrc*, .pnp.cjs, bunfig.toml, .bazelrc, .pre-commit-config.yaml, lefthook.*, gradle-wrapper.properties, .ripgreprc, pyrightconfig.json, .mcp.json и .claude.json.
Логика понятна: всё это — файлы, правка которых меняет поведение вашей же машины при следующей команде, вплоть до того, что выполнится вместо git commit. Что произойдёт при попытке, зависит от режима: обычный и acceptEdits спросят, plan разрешит только если доступен обход, auto отдаст классификатору, dontAsk откажет, bypassPermissions разрешит. В диалоге при этом есть отдельный пункт — разрешить правку своих настроек на эту сессию.
Предохранитель на удаление
rm и rmdir, нацеленные на критические пути, не одобряются ничем: ни правилом в allow, ни хуком, вернувшим разрешение.
Критические пути — это корень файловой системы и любой его непосредственный потомок, домашняя папка, корни дисков на Windows и их каталоги первого уровня, текущая рабочая папка и её родители, а также шаблоны внутри добавленных директорий.
Самое интересное — таблица по режимам, потому что она устроена не так, как все ожидают:
| Режим | Что будет |
|---|---|
обычный, acceptEdits, plan | Спросит |
auto | Отдаст классификатору |
dontAsk | Откажет |
bypassPermissions | Спросит |
То есть режим «обходить все подтверждения» здесь строже, чем авто-режим: --dangerously-skip-permissions на таком удалении всё равно остановится.
Считается и то, что выглядит безобидно: rm -rf "$DIR"/* попадает под предохранитель, потому что пустая переменная превращает это в удаление от корня. Спрятать команду в подстановку, обратные кавычки или подстановку процесса не поможет — проверка их видит.
Четыре якоря пути
Правила Read и Edit используют синтаксис .gitignore, и в нём четыре разных способа привязать путь. Их путают постоянно.
| Запись | К чему привязано |
|---|---|
//путь | Корень файловой системы |
~/путь | Домашняя папка |
/путь | Источник настроек, а не корень диска |
путь или ./путь | Текущая рабочая папка |
Третья строка — ловушка. Одиночный слэш в начале не означает абсолютный путь: он привязывает правило к тому файлу настроек, где оно написано. Правило Read(/secrets/**) в ~/.claude/settings.json означает ~/.claude/secrets/**, а вовсе не secrets в вашем проекте. В проектных настройках тот же слэш отсчитывается от основной рабочей папки, в --settings — от папки указанного файла, а правила из локальных настроек с версии 2.1.211 привязаны к рабочей папке сессии, а не к корню репозитория, — то есть в отдельной рабочей копии Edit(/src/**) попадёт в её собственный src.
Голое имя файла ведёт себя как в .gitignore и совпадает на любой глубине: Read(.env) — это то же самое, что Read(**/.env). А вот Read(//**/.env) привязано к корню файловой системы.
На Windows пути приводятся к POSIX-виду до сравнения: C:\Users\alice превращается в /c/Users/alice. Поэтому правило на все диски пишется как //**/.env, а на конкретный — //c/**/.env.
Одно и то же правило ловит разную глубину в allow и в deny
Односегментный относительный шаблон папки ведёт себя асимметрично, и это специально.
Edit(src/**) в allow совпадает только с папкой src в корне рабочей директории. Он же в deny или ask совпадает с папкой src на любой глубине — то есть поймает и vendor/pkg/src/lib.js.
Смысл понятный: разрешение должно быть узким, запрет — широким. Все остальные формы ведут себя одинаково в любом типе правил: Edit(/src/**) и Edit(src/components/**) совпадают только там, где написаны, Edit(**/src/**) — везде. Поведение поменялось в 2.1.214: до неё Edit(src/**) ловил любую глубину и в разрешениях тоже.
Двоеточие только в конце, а пробел перед звёздочкой значим
Форма Bash(ls:*) — это ровно то же самое, что Bash(ls *). Но распознаётся она только в конце шаблона: в Bash(git:* push) двоеточие — обычный символ, и правило не совпадёт ни с чем.
Пробел перед звёздочкой — часть правила. Bash(ls *) требует пробела и потому не совпадает с lsof; Bash(ls*) — совпадает. Завершающая звёздочка ловит и голую команду без аргументов, но только если она в правиле единственная: Bash(ls *) совпадёт с ls, а Bash(* --help *) совпадёт с npm --help x и не совпадёт с npm --help.
Всё, что стоит до первой звёздочки, сравнивается буквально. Отсюда неприятность: Bash(git * main) разрешает любую подкоманду git, включая -c с произвольной конфигурацией. С версии 2.1.246 на разрешающие правила со звёздочкой перед подкомандой печатается предупреждение при запуске.
Составные команды
Разделители, которые Claude Code понимает: &&, ||, ;, |, |&, & и перевод строки. Каждая часть должна совпасть с правилом отдельно — общего разрешения на всю строку не бывает.
Отдельный случай: если оператор оказался в конце и после него ничего нет — например npm test &&, — команда считается неразбираемой и не делится вовсе. Тогда даже Bash(npm *) её не одобрит.
Когда вы отвечаете «да, и больше не спрашивай» на составную команду, сохраняется отдельное правило на каждую часть, которой это требовалось. Переход в подпапку породит своё правило на чтение. Больше пяти правил из одной команды не сохранится.
Перенаправления вывода >, >>, 2> проверяются как запись в файл — против ваших правил Edit, списка защищённых путей и рабочих директорий. /dev/null из проверки исключён; цель, начинающаяся с ~ или содержащая шаблон, требует подтверждения всегда.
Какие обёртки снимаются, а какие нет
Перед сопоставлением с правилами из команды убираются: timeout, time, nice, nohup, stdbuf, встроенные command и builtin, noglob из zsh и голый xargs — последний только без флагов, xargs -n1 grep разбирается как команда xargs.
Снимается и ведущее присваивание известной безопасной переменной, поэтому Bash(npm test *) совпадёт с NODE_ENV=test npm test. Разрешающее правило дальше присваивания любой другой переменной не пройдёт, а запрещающее пройдёт через любое.
Список фиксирован и не настраивается. И в нём нет ни одного запускателя окружения: npx, docker exec, direnv exec, devbox run, mise exec не снимаются. Практический вывод: Bash(devbox run *) — это разрешение на devbox run rm -rf ., потому что для проверки это команда devbox, а не rm.
Отдельно есть команды, которые нельзя одобрить префиксным правилом никогда: watch, setsid, ionice, flock, а также find с -exec или -delete. В обычном режиме они спросят всегда.
Правила для Write, Glob, NotebookEdit и MultiEdit принимаются и не работают
Файловые права проверяются только против правил Edit(...) и Read(...). Правило вида Write(docs/**) или Glob(docs/**) будет разобрано, сохранено, показано в /permissions — и никогда не использовано. С версии 2.1.210 на такое печатается предупреждение при запуске.
Пишите Edit(...) вместо Write, NotebookEdit и MultiEdit и Read(...) вместо Glob. Голое имя инструмента без пути при этом работает: запретить Write целиком можно.
Полезное следствие: запрещающее правило Read на путь заодно блокирует правку и запись по нему — но не NotebookEdit.
Символические ссылки
Каждое обращение к файлу проверяется по двум путям сразу: по самой ссылке и по тому, куда она ведёт. Правила при этом асимметричны.
Разрешение действует, только если совпали оба пути. Поэтому ссылка внутри разрешённой папки, ведущая наружу, всё равно спросит.
Запрет действует, если совпал хотя бы один. Поэтому ссылка на запрещённый файл запрещена сама.
На практике: если разрешено Read(./project/**) и запрещено Read(~/.ssh/**), то ./project/key, ведущий на ~/.ssh/id_rsa, будет заблокирован.
Правила по параметрам инструмента
Малоизвестное семейство. Запрещающие и спрашивающие правила умеют совпадать по скалярному полю входных данных инструмента:
{ "permissions": { "deny": ["Agent(model:opus)", "Agent(isolation:worktree)", "Bash(run_in_background:true)"] }}Один параметр на правило, вложенные поля не поддерживаются, * подставляется вместо значения. Параметр, который модель не передала, не совпадает никогда — то есть Agent(model:opus) не поймает вызов, где модель не указана вовсе. Значение сравнивается с тем, что пришло, до нормализации: алиас opus совпадёт, а полный идентификатор той же модели — нет.
Главное поле инструмента таким образом не матчится намеренно: command, file_path, path, notebook_path, url исключены. Правило Bash(command:rm *) игнорируется с предупреждением — его было бы слишком легко обойти составной командой.
Для MCP-инструментов параметрические правила работают только через флаг --disallowedTools: любое правило с mcp__ и скобками в файле настроек пропускается и попадает в список некорректных настроек и в вывод claude doctor.
Шаблоны в имени инструмента
В запрещающих и спрашивающих правилах имя инструмента можно задавать шаблоном, и он должен покрывать имя целиком: "*" — все инструменты, "mcp__*" — все инструменты MCP.
В разрешающих правилах шаблон допустим только после буквального префикса mcp__<сервер>__, причём имя сервера должно быть без шаблонов. То есть mcp__github__get_* работает, а "*", "B*" и "mcp__*" в allow пропускаются с предупреждением и не разрешают ничего.
И ещё одна ловушка: имя инструмента на экране может отличаться от канонического. То, что показано как «Stop Task», канонически называется TaskStop, и в правилах и в фильтрах хуков работает только каноническое имя.
WebFetch — два разных правила с похожим видом
Голое WebFetch и WebFetch(domain:*) — не одно и то же, потому что вторая форма заодно правит список доменов песочницы.
| Правило | Что делает |
|---|---|
allow: WebFetch | Загружает страницы без вопросов, но песочницу не расширяет — curl из песочницы к тому же хосту всё равно спросит |
allow: WebFetch(domain:*) | Плюс разрешает песочнице сетевой доступ |
deny: WebFetch | Убирает инструмент целиком |
deny: WebFetch(domain:*) | Инструмент остаётся, каждая загрузка отклоняется, сеть песочницы закрыта |
Шаблоны в домене: *.example.com ловит поддомены любой глубины, но не сам example.com. В любой другой позиции звёздочка совпадает только с текстом между двумя точками — example.* поймает example.org и не поймает example.evil.com.
И трезвое замечание: пока у агента есть доступ к оболочке, разрешения WebFetch не ограничивают сетевой доступ вообще никак.
Встроенный набор безопасных команд
Часть команд выполняется без вопроса в любом режиме, и этот список зашит: ls, cat, echo, pwd, head, tail, grep, find, wc, which, diff, stat, du, cd и read-only формы git. Расширить его нельзя, можно только перекрыть своим правилом ask или deny.
Но и он спросит, если: незакавыченный шаблон встретился в команде, у которой есть флаги записи или запуска (find, sort, sed, git — шаблон мог бы развернуться в -delete); у docker есть -H, --context, --url или --connection; у file есть -m, --magic-file, -f или --files-from; в аргументах сетевой путь Windows; команда длиннее десяти тысяч символов или не разбирается. Плюс cd вместе с git спросит, если папка действительно меняется — в новой папке могут быть свои хуки git.
PowerShell
Правила для PowerShell устроены так же, сравниваются без учёта регистра и приводят популярные псевдонимы к канону: PowerShell(Get-ChildItem *) совпадёт и с gci, и с ls, и с dir. Команда разбирается по синтаксическому дереву и делится по |, ;, а на седьмой версии ещё по && и ||; каждая часть проверяется отдельно.
У Remove-Item своя проверка, более жёсткая, чем у rm: системные пути и цели с шаблоном — голая *, всё, что кончается на /* или \*, включая $dir/*, — запрещаются во всех режимах без вопроса, ещё до классификатора. По обычным правилам режима идёт только случай «рабочая папка или её родитель с рекурсией», и вот он обходом подтверждений снимается.
И отдельно про Windows: любая команда, в аргументах которой есть сетевой путь вида \\сервер\ресурс\файл, спросит подтверждение, даже если во всём остальном она безобидна, — такой путь может утащить учётные данные Windows.
Авто-режим
С 14 августа 2026 это режим по умолчанию для новых сессий на Pro, Max и Team. Решение о каждом действии принимает классификатор, а не список правил, и настраивается он отдельным объектом autoMode.
| Поле | Тип | Что делает |
|---|---|---|
autoMode.environment | массив строк | Что классификатор должен знать про ваше окружение. Это и заполняет /auto-mode-setup. |
autoMode.allow | массив строк | Что он пропускает. |
autoMode.soft_deny | массив строк | О чём он вас спрашивает. |
autoMode.hard_deny | массив строк | Что запрещает без вопросов. |
autoMode.classifyAllShell | boolean | Прогонять ли через классификатор вообще все команды оболочки. По умолчанию нет. |
Три вещи, которые тут важнее самой таблицы.
Строка "$defaults" обязательна почти всегда. В любом из четырёх списков она подмешивает штатный набор правил. Если её не написать, весь встроенный список этой секции молча исчезает — вместе с мягкими блоками на форс-пуш, на curl | bash, на деплой в продакшен и на обход самого авто-режима, и с жёстким блоком на утечку данных. Ваши правила должны дополнять набор, а не заменять его.
Узкие разрешения обходят классификатор. Правило вроде Bash(npm test) в авто-режиме продолжает действовать и разбирается до классификатора. Приостанавливаются только широкие разрешения на произвольное выполнение — Bash(*), интерпретаторы со звёздочкой — и все правила, называющие инструмент наблюдения. То есть узкое правило может пропустить разрушительный аргумент, которого никто не посмотрел. Закрывается это classifyAllShell: true, и тогда на время авто-режима отключаются все разрешающие правила оболочки.
Классификатор не читает настройки проекта. Он берёт autoMode только из пользовательского файла, корпоративного и --settings. Иначе репозиторий мог бы подсунуть себе разрешения; локальные настройки читались до версии 2.1.207, теперь нет.
Посмотреть и разобрать конфигурацию можно из терминала:
claude auto-mode config # что действует и откуда взялосьclaude auto-mode defaults # штатные правила всех четырёх списковclaude auto-mode defaults --label 'Git Destructive' # полный текст одного правилаclaude auto-mode critique # разбор ваших правил модельюclaude auto-mode reset --yes # сбросить к штатным без вопросаПодкоманда critique — недооценённая: она просит модель разобрать ваши собственные правила и показать те, что двусмысленны, избыточны или будут давать ложные срабатывания.
Выключается режим ключом disableAutoMode, и здесь есть ловушка: значение должно быть строкой "disable". Массив или true схема пропустит без ошибки, но код сравнивает именно со строкой, и режим тихо останется включённым. Скрыть мастер настройки можно записью "auto-mode-setup": "off" в skillOverrides; disableBundledSkills его не выключает, потому что это встроенная команда, а не навык.
MCP-серверы
| Параметр | Тип | Что делает |
|---|---|---|
enableAllProjectMcpServers | boolean | Автоматически одобрять все серверы из .mcp.json проекта. |
enabledMcpjsonServers | массив имён | Явно одобренные серверы из .mcp.json. |
disabledMcpjsonServers | массив имён | Явно отклонённые серверы. |
allowedMcpServers | массив объектов | [админ] Белый список: по имени, команде или адресу. Пустой массив — не разрешён ни один. |
deniedMcpServers | массив объектов | [админ] Чёрный список. Приоритетнее белого. |
allowManagedMcpServersOnly | boolean | [админ] Белый список читается только из политики. |
allowAllClaudeAiMcps | boolean | [админ] Грузить облачные коннекторы вместе с управляемым списком. |
managedMcpServers | массив объектов | [админ] Сами серверы, разосланные администратором: транспорт, подключение и карта разрешённых инструментов. |
Последняя строка исправляет распространённое утверждение, которое я и сам раньше повторял: «серверы задаются только в .mcp.json, а в настройках — лишь права на них». Это верно для вас, но не для администратора: managedMcpServers в корпоративных настройках содержит именно конфигурации серверов и раскатывается на всех через файл политики или систему управления устройствами.
Обычные же серверы задаются в .mcp.json или через claude mcp add.
Хуки
Хуки — тема на отдельную статью, и она у меня есть: там разобраны все события, форматы обмена и рабочие примеры. Здесь ключи настроек и то, что чаще всего ломается.
hooks — объект вида «событие → массив матчеров». У матчера есть фильтр matcher и список обработчиков.
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "npm run lint" }, { "type": "command", "command": "echo", "args": ["done"] } ] } ] }}Событий тридцать три. По инструментам: PreToolUse, PostToolUse, PostToolUseFailure, PostToolBatch. По разговору: UserPromptSubmit, UserPromptExpansion, Stop, StopFailure, Notification, MessageDisplay. По сессии: SessionStart, SessionEnd, Setup, InstructionsLoaded, ConfigChange. По сжатию и смене модели: PreCompact, PostCompact, PreModelSwitch, PostModelSwitch. По правам: PermissionRequest, PermissionDenied. По субагентам и задачам: SubagentStart, SubagentStop, TeammateIdle, TaskCreated, TaskCompleted. По файлам и папкам: FileChanged, CwdChanged, DirectoryAdded, WorktreeCreate, WorktreeRemove. И две на формы MCP: Elicitation, ElicitationResult.
Обработчик бывает пяти видов, вид задаётся полем type: command запускает программу или строку оболочки, prompt спрашивает маленькую быструю модель, agent отправляет полноценного агента, http дёргает адрес, mcp_tool вызывает инструмент MCP-сервера. Общие необязательные поля — if с условием, timeout, statusMessage для спиннера, once для однократного выполнения за сессию и async с родственным asyncRewake.
| Параметр | Тип | Что делает |
|---|---|---|
hooks | объект | Сами хуки. |
disableAllHooks | boolean | Отключить все хуки и выполнение строки состояния. |
allowManagedHooksOnly | boolean | [админ] Выполнять только хуки из политики. |
allowedHttpHookUrls | массив строк | [админ] Белый список адресов для HTTP-хуков. |
httpHookAllowedEnvVars | массив строк | Какие переменные окружения HTTP-хуки могут подставлять в заголовки. |
disableSkillShellExecution | boolean | Запретить встроенные вызовы оболочки в навыках и своих командах. |
Три вещи, из-за которых хук «работает, но ничего не делает»
Код выхода 1 ничего не блокирует. Блокирует только код 2, и только примерно на трети событий. Единица и любой другой ненулевой код на большинстве событий — это просто неблокирующая ошибка в журнале. Код 2 при этом сильнее вашего же JSON: даже если вы вернули решение «разрешить», двойка запретит.
Где двойка блокирует: PreToolUse, UserPromptSubmit (стирая промпт), UserPromptExpansion, Stop, SubagentStop, TeammateIdle, TaskCreated, TaskCompleted, ConfigChange, PostToolBatch, PreModelSwitch. Где игнорируется: PermissionRequest и PermissionDenied — там решают поля JSON, — и StopFailure. На PostToolUse двойка не блокирует, а показывается модели. На WorktreeCreate прерывает любой ненулевой код. И отдельная асимметрия: истёкший таймаут на PreToolUse не блокирует, а на PreModelSwitch — блокирует.
Вывод хука модель почти никогда не видит. Обычный текст в стандартный вывод при коде 0 попадает в отладочный журнал, а не в разговор. Модели он показывается ровно на четырёх событиях: UserPromptSubmit, UserPromptExpansion, SessionStart и PostModelSwitch. Поток ошибок не показывается нигде и никогда. На остальных событиях передать что-то модели можно только структурированным ответом — полем дополнительного контекста или системным сообщением. JSON при этом разбирается, только если вывод начинается с { и заканчивается }.
Фильтр иногда игнорируется целиком, а иногда это регулярное выражение. "*", пустая строка или отсутствие поля означают «все». Фильтр, состоящий только из букв, цифр, _, -, пробелов, запятых и |, — это точное совпадение или перечисление. Любой другой символ превращает его в регулярное выражение, которое проверяется без привязки к началу и концу, если вы не написали их сами. Регистр учитывается.
И фильтр не всегда про имя инструмента. На SessionStart он сравнивается со способом старта, на SessionEnd — с причиной завершения, на сжатии — с manual или auto, на ConfigChange — с тем, какой файл настроек изменился, на FileChanged — с именем файла, на смене модели — с каноническим именем модели. А события UserPromptSubmit, PostToolBatch, Stop, CwdChanged, TeammateIdle, задачи, рабочие копии и MessageDisplay фильтра не принимают вовсе и молча игнорируют написанный.
Таймауты по умолчанию неодинаковые: у command, http и mcp_tool — десять минут, но на UserPromptSubmit и на событиях смены модели тридцать секунд, а на MessageDisplay десять; у prompt — тридцать секунд, у agent — минута; всем хукам SessionEnd вместе отводится полторы секунды. Асинхронные не ограничены вовсе.
На Windows стоит помнить про форму с отдельным списком аргументов: она выполняется без оболочки, и ей нужен настоящий исполняемый файл — обёртки .cmd и .bat требуют либо строковой формы, либо запуска через интерпретатор.
Git: коммиты, pull request, атрибуция
| Параметр | Тип | Что делает |
|---|---|---|
attribution | объект | Текст атрибуции в коммитах и описаниях; пустая строка прячет её. Поле sessionUrl управляет ссылкой на сессию. |
includeCoAuthoredBy | boolean | [устар] Добавлять соавторство. Лучше использовать attribution. |
includeGitInstructions | boolean | Включать встроенные инструкции по коммитам в системный промпт. По умолчанию да. |
prUrlTemplate | строка | Шаблон ссылки на pull request: {host}, {owner}, {repo}, {number}, {url}. |
doneMeansMerged | boolean | [эксп] «Готово значит смержено»: агент продолжает, пока pull request не готов к слиянию. |
{ "attribution": { "commit": "", "pr": "" }, "includeGitInstructions": true}Интерфейс и терминал
| Параметр | Тип | Что делает |
|---|---|---|
theme | см. ниже | Цветовая тема. |
editorMode | normal, vim | Режим клавиш в поле ввода. Заменил убранную команду /vim. |
keybindingFlavor | classic, readline | Как ведут себя словесные клавиши. readline — как в Bash: стирание до пробела, переходы по словам, пунктуация разделяет слова. |
vimInsertModeRemaps | объект | Свои выходы из режима вставки, например {"jj": "<Esc>"}. |
emojiCompletionEnabled | boolean | Автодополнение эмодзи в поле ввода. По умолчанию включено. |
wheelScrollAccelerationEnabled | boolean | Ускорение прокрутки колесом. Только в полноэкранном режиме. |
defaultView | chat, transcript | С какого вида открывается сессия. |
axScreenReader | boolean | Плоский вывод для экранных читалок. |
tui | default, fullscreen | Рендерер интерфейса. |
viewMode | default, verbose, focus | Режим просмотра транскрипта на старте. |
verbose | boolean | Полный вывод инструментов вместо сокращённых сводок. |
autoScrollEnabled | boolean | Автопрокрутка диалога вниз. Только в полноэкранном режиме. |
syntaxHighlightingDisabled | boolean | Выключить подсветку синтаксиса в диффах. |
prefersReducedMotion | boolean | Уменьшить или убрать анимации. |
showTurnDuration | boolean | Показывать длительность после каждого хода. |
showMessageTimestamps | boolean | Штамповать сообщения временем прихода. |
terminalProgressBarEnabled | boolean | Слать прогресс длинных операций управляющими последовательностями терминала. |
terminalTitleFromRename | boolean | Пусть /rename меняет заголовок вкладки. По умолчанию да. |
spinnerTipsEnabled | boolean | Показывать подсказки в спиннере ожидания. |
spinnerVerbs | объект | Свои глаголы спиннера: добавить к стандартным или заменить их. |
spinnerTipsOverride | объект | Свои подсказки: списком, файлом или со своим заголовком вместо «Tip». |
footerLinksRegexes | массив объектов | Свои значки-ссылки в подвале по регулярному выражению. Максимум пять. |
spellcheck | объект | Подчёркивать опечатки в поле ввода. Нужен установленный проверятор: aspell, hunspell или ispell. |
companyAnnouncements | массив строк | Объявления на старте; если их несколько, показывается случайное. |
todoFeatureEnabled | boolean | Включить панель отслеживания задач. |
Значения theme: auto (по фону терминала), dark, light, light-daltonized, dark-daltonized, light-ansi, dark-ansi, а также custom:<имя> для темы из ~/.claude/themes/ и custom:<плагин>:<имя> для темы из плагина.
Часть ключей читается только из пользовательского файла, --settings и политики: spinnerTipsOverride с файлом подсказок, footerLinksRegexes и spellcheck. Проектный файл их переопределить не может — иначе репозиторий смог бы дорисовать вам в интерфейс произвольную ссылку.
Настройки, живущие в ~/.claude.json
Эти ключи в settings.json игнорируются молча. Обычно их пишет сам Claude Code или /config, но знать про них полезно.
| Параметр | Тип | Что делает |
|---|---|---|
permissionExplainerEnabled | boolean | [глобальный] Ctrl+E на диалоге разрешения показывает разбор команды: что делает, зачем и что может пойти не так, с оценкой риска. По умолчанию включено. |
diffTool | auto, terminal | [глобальный] Где показывать дифф правки, если подключена IDE. По умолчанию в IDE. |
autoConnectIde | boolean | [глобальный] Подключаться к запущенной IDE автоматически при старте из внешнего терминала. По умолчанию нет. |
autoInstallIdeExtension | boolean | [глобальный] Ставить расширение автоматически при запуске из терминала VS Code. По умолчанию да. |
externalEditorContext | boolean | [глобальный] При правке промпта во внешнем редакторе по Ctrl+G показывать прошлый ответ комментариями в начале буфера. |
skippedMarketplaces | массив строк | [глобальный] Маркетплейсы, установку которых вы отклонили. |
skippedPlugins | массив строк | [глобальный] Плагины, установку которых вы отклонили. |
Первый ключ стоит того, чтобы про него узнать: сочетание Ctrl+E на вопросе о запуске команды даёт человеческий разбор того, что эта команда делает, — без её выполнения. На незнакомой команде из чужого репозитория это ровно та кнопка, которой не хватает.
Строка состояния
| Параметр | Тип | Что делает |
|---|---|---|
statusLine | объект | Своя строка состояния внизу, которую рисует внешний скрипт. |
subagentStatusLine | объект | Строка состояния для каждого субагента в панели агентов. |
Поля statusLine: type со значением "command", command со скриптом, padding, refreshInterval — пересчитывать раз в столько секунд, — и hideVimModeIndicator, если скрипт рисует режим vim сам.
{ "statusLine": { "type": "command", "command": "~/.claude/statusline.sh", "padding": 1, "refreshInterval": 5 }}Скрипту приходит на вход JSON с контекстом сессии: модель, папка, стоимость, заполненность контекста. Печатает он одну строку. Это, пожалуй, самая недооценённая настройка: постоянно видимые цифры расхода меняют поведение сильнее, чем любые инструкции об экономии. Учтите только, что disableAllHooks выключает и её.
Контекст, память, сессии
| Параметр | Тип | Что делает |
|---|---|---|
cleanupPeriodDays | число от 1 | Сколько дней хранить транскрипты. По умолчанию тридцать. Заодно определяет срок жизни контрольных точек. |
desktopSessionCleanupPeriodDays | число от 0 | Потолок для исключения, по которому сессии desktop-приложения переживают обычную очистку. |
crossSessionInbound | accept, hold, refuse | Что делать с сообщениями от других ваших сессий. |
dialogExpiry | 60s, 5m, 10m, never | Через сколько протухает неотвеченный диалог. По умолчанию пять минут. |
askUserQuestionTimeout | те же значения | То же для вопросов агента к вам. По умолчанию не протухают. |
autoContinueAtUsageLimit | boolean | Продолжать сессию, когда сбросится лимит тарифа. По умолчанию включено. |
autoMemoryEnabled | boolean | Автоматическая память проекта. |
autoMemoryDirectory | строка, путь | Папка хранилища автопамяти. Читается из любого уровня настроек. |
autoDreamEnabled | boolean | Фоновая консолидация памяти. |
fileCheckpointingEnabled | boolean | Снимать копии файлов перед правками, чтобы /rewind мог их восстановить. |
outputStyle | строка | Стиль ответов ассистента. |
language | строка | Предпочтительный язык ответов и голосового ввода, например "russian". |
promptSuggestionEnabled | boolean | Показывать подсказки для промптов. |
awaySummaryEnabled | boolean | [эксп] Резюме сессии при возвращении после отсутствия дольше пяти минут. |
showClearContextOnPlanAccept | boolean | Предлагать очистку контекста при принятии плана. По умолчанию нет. |
plansDirectory | строка, путь | Папка для файлов планов относительно корня проекта. |
claudeMd | строка | [админ] Инструкции в стиле CLAUDE.md как организационная память. |
claudeMdExcludes | массив шаблонов | Какие файлы CLAUDE.md не загружать. Файл политики исключить нельзя. |
respectGitignore | boolean | Файловый пикер учитывает .gitignore. По умолчанию да; .ignore учитывается всегда. |
fileSuggestion | объект | Свой источник подсказок файлов для упоминаний через @. |
Про autoContinueAtUsageLimit стоит знать две вещи: он включён по умолчанию и читается только из пользовательского файла, --settings и политики — то есть проектный или локальный файл, который его задаёт, не игнорируется, а выключает возможность.
Навыки
| Параметр | Тип | Что делает |
|---|---|---|
skillOverrides | объект | Видимость навыка: on, name-only — только имя без описания, user-invocable-only — скрыть от модели, но оставить вызов по имени, off — скрыть полностью. |
skillListingMaxDescChars | число | Лимит символов на описание навыка в листинге. По умолчанию 1536. |
skillListingBudgetFraction | число 0–1 | Доля контекста под весь листинг навыков. По умолчанию один процент. |
disableSkillShellExecution | boolean | Запретить встроенные вызовы оболочки в навыках и своих командах. |
disableBundledSkills | boolean | Не загружать встроенные навыки. Исключение — /doctor. |
syncClaudeAiSkills | boolean | Тянуть ли навыки, синхронизированные с claude.ai. Учитывается только значение false. |
syncClaudeAiPlugins | boolean | То же для плагинов. |
skillOverrides стоит знать всем, у кого много навыков: их описания висят в контексте постоянно, и name-only для редко нужных освобождает заметный кусок. Тот же ключ — способ запретить агенту самому запускать конкретную команду, оставив её вам: значение user-invocable-only.
Плагины и маркетплейсы
| Параметр | Тип | Что делает |
|---|---|---|
enabledPlugins | объект | Какие плагины включены; ключ — плагин@маркетплейс. |
pluginConfigs | объект | Конфигурация каждого плагина. В проектных настройках игнорируется. |
extraKnownMarketplaces | объект | Дополнительные маркетплейсы для этого репозитория. |
strictKnownMarketplaces | массив источников | [админ] Только эти источники можно добавлять. Поддерживает owner/* — вся организация. |
blockedMarketplaces | массив источников | [админ] Заблокированные источники. |
pluginSuggestionMarketplaces | массив строк | [админ] Чьи плагины могут попадать в подсказки на установку. |
strictPluginOnlyCustomization | boolean или массив | [админ] Запретить кастомизацию вне плагинов для skills, agents, hooks, mcp. |
pluginTrustMessage | строка | [админ] Дополнительный текст к предупреждению перед установкой. |
disableCommandPluginSources | boolean | [админ] Запретить маркетплейсы вида «локальная команда печатает путь к плагину». |
disableSideloadFlags | boolean | [админ] Запретить подсовывать плагины флагами. |
Воркфлоу, агенты, тиммейты
| Параметр | Тип | Что делает |
|---|---|---|
enableWorkflows | boolean | Включить или выключить воркфлоу. |
disableWorkflows | boolean | Выключить воркфлоу. |
workflowKeywordTriggerEnabled | boolean | Слово «ultracode» в промпте включает воркфлоу на ход. По умолчанию да. |
skipWorkflowUsageWarning | boolean | [эксп] Предупреждение о стоимости мульти-агентных воркфлоу принято. |
workflowSizeGuideline | unrestricted, small, medium, large | Ориентир по размеру вееров: меньше пяти агентов, меньше пятнадцати, меньше пятидесяти или без подсказки. |
disableAgentView | boolean | [админ] Выключить экран агентов, фоновый запуск и фоновую службу. |
disableAutoMode | "disable" | Выключить авто-режим. Только строкой. |
teammateMode | in-process, tmux, iterm2, auto | Как показываются тиммейты. По умолчанию in-process. |
Значение auto у teammateMode определено точно: разделённые панели, если сессия идёт внутри tmux, или внутри iTerm2 с доступной утилитой командной строки, или если tmux установлен; иначе всё выполняется внутри процесса. Значение iterm2 — родные разделённые панели iTerm2, появилось в 2.1.186.
Ключ teammateDefaultModel в схеме ещё есть, но из продукта убран в 2.1.234 и ни на что не влияет.
Worktree
Вложенный объект worktree управляет тем, как заводятся отдельные рабочие копии под сессии и фоновых агентов.
| Поле | Тип | Что делает |
|---|---|---|
symlinkDirectories | массив строк | Что симлинкать из основного репозитория, чтобы не раздувать диск. По умолчанию ничего. |
sparsePaths | массив строк | Какие пути включать через разреженную выгрузку. Сильно ускоряет в монорепозиториях. |
baseRef | fresh, head | От чего ветвятся новые копии: от удалённой основной ветки или от локального состояния. |
bgIsolation | worktree, none | Изоляция фоновых сессий. По умолчанию фоновый агент не правит основное дерево. |
location | строка, путь | Где desktop-приложение создаёт копии для сессий по SSH. CLI её пока не читает. |
{ "worktree": { "symlinkDirectories": ["node_modules", ".cache"], "sparsePaths": ["packages/app", "packages/shared"], "baseRef": "fresh", "bgIsolation": "worktree" }}Удалённое управление, SSH, окружения
| Параметр | Тип | Что делает |
|---|---|---|
disableRemoteControl | boolean | [админ] Выключить удалённое управление целиком. |
remoteControlAtStartup | boolean | Поднимать мост удалённого управления в каждой сессии. |
isolatePeerMachines | boolean | Требовать подтверждения, прежде чем сообщение уйдёт в сессию на другой машине. |
autoUploadSessions | boolean | Зеркалить локальные сессии в веб только для просмотра. |
daemonColdStart | transient, ask | Когда фоновой службы нет: поднять на сессию или предложить установить постоянно. |
remote | объект | Окружение по умолчанию для удалённых сессий. |
sshConfigs | массив объектов | [админ] Преднастроенные SSH-подключения: id, name, sshHost, sshPort, sshIdentityFile, startDirectory. |
sshHostAllowlist | массив шаблонов | [админ] Ограничить SSH-сессии приложения этими хостами. * — любой, *.example.com — домен и поддомены. |
disableDesktopLocalSessions | boolean | [админ] Запретить сессии на самой машине в desktop-приложении: работать только по SSH. |
browserExternalPageTools | "disabled" | [админ] Запретить агенту читать и трогать внешние страницы в браузере приложения. Локальные предпросмотры работают. |
disableBrowserExternalNavigation | boolean | [админ] Запретить внешнюю навигацию в браузере приложения и агенту, и человеку. |
disableMobileSimulatorTools | boolean | [админ] Отобрать у агента инструменты симулятора iOS; человеку панель остаётся. |
requireCoworkFullVmSandbox | boolean | [админ] Выполнять инструменты в изолированной виртуальной машине. |
channelsEnabled | boolean | [админ] Разрешить канальные уведомления. |
allowedChannelPlugins | массив объектов | [админ] Белый список канальных плагинов. |
Три из этих ключей принимают только настоящее булево true: строка "true" или единица будут проигнорированы с предупреждением в журнале. Это disableDesktopLocalSessions, disableBrowserExternalNavigation и disableMobileSimulatorTools. Терминальный CLI их не читает вовсе — они про desktop-приложение.
Про requireCoworkFullVmSandbox есть важный побочный эффект: внутри полной виртуальной машины нет ни политики устройства, ни файла корпоративных настроек — доставлять их туда придётся иначе.
{ "remote": { "defaultEnvironmentId": "env-123" }, "sshConfigs": [ { "id": "prod-box", "name": "Prod", "sshHost": "deploy@prod.example.com", "sshPort": 22, "startDirectory": "~/app" } ]}Уведомления, голос, перерывы
| Параметр | Тип | Что делает |
|---|---|---|
preferredNotifChannel | auto, iterm2, terminal_bell, iterm2_with_bell, kitty, ghostty, notifications_disabled | Каким каналом слать системные уведомления. |
inputNeededNotifEnabled | boolean | Пуш на телефон, когда ждёт подтверждение или вопрос. |
agentPushNotifEnabled | boolean | Разрешить агенту слать проактивные мобильные пуши. |
voice | объект | Голосовой ввод: enabled, mode со значением hold или tap, autoSubmit. |
voiceEnabled | boolean | Диктовка при входе через claude.ai, если политика организации это разрешает. Не то же самое, что voice.enabled, который её перекрывает. |
breakReminder | объект | [эксп] Напоминание о перерыве после долгой непрерывной работы. Никогда не блокирует. |
quietHours | объект | [эксп] Тихие часы: один мягкий намёк за сессию внутри заданного окна местного времени. |
{ "voice": { "enabled": true, "mode": "hold", "autoSubmit": true }, "breakReminder": { "enabled": true, "intervalMinutes": 120 }, "quietHours": { "enabled": true, "start": "22:00", "end": "07:00" }}Песочница и сеть
Объект sandbox управляет тем, что разрешено процессам внутри изоляции. Самый длинный раздел схемы и самый редко используемый — но если вы пускаете агента в режиме, где он не спрашивает разрешений, читать надо именно его.
Сразу исправлю распространённую ошибку в структуре: пути на чтение и запись лежат не прямо в sandbox, а в sandbox.filesystem. Правило "sandbox": {"denyRead": [...]} не сработает.
| Поле | Тип | Что делает |
|---|---|---|
enabled | boolean | Включить песочницу. |
enabledPlatforms | массив macos, linux, wsl, windows | [админ] Ограничить всю конфигурацию этими системами. На остальных она инертна целиком. |
autoAllowBashIfSandboxed | boolean | Автоматически разрешать команды, если они выполняются в песочнице. |
allowUnsandboxedCommands | boolean | Разрешить повторить заблокированную команду вне песочницы. По умолчанию true. |
failIfUnavailable | boolean | Падать, если песочницу поднять не удалось, вместо тихого запуска без неё. |
excludedCommands | массив строк | Команды, выведенные из песочницы; их задаёт /sandbox exclude. |
ignoreViolations | объект | Какие нарушения не показывать. |
filesystem.allowWrite | массив путей | Дополнительные пути, куда разрешена запись. |
filesystem.denyWrite | массив путей | Пути, запрещённые для записи, в том числе внутри разрешённой папки. |
filesystem.denyRead | массив путей | Пути, запрещённые для чтения. |
filesystem.allowRead | массив путей | Исключения, снова разрешающие чтение внутри запрещённых областей. |
filesystem.allowManagedReadPathsOnly | boolean | [админ] Пути на чтение берутся только из политики. |
filesystem.disabled | boolean | Отключить файловую часть песочницы. Не из проектных настроек. |
network.allowedDomains | массив строк | Разрешённые домены. |
network.deniedDomains | массив строк | Всегда блокируемые домены. |
network.allowManagedDomainsOnly | boolean | [админ] Разрешать только домены из политики. |
network.strictAllowlist | boolean | Разрешать только явно перечисленные домены. |
network.allowUnixSockets | массив строк | Разрешённые сокеты Unix. Только macOS. |
network.allowAllUnixSockets | boolean | Разрешить все сокеты Unix. |
network.allowLocalBinding | boolean | Разрешить локальную привязку портов. |
network.allowMachLookup | массив строк | Разрешённые сервисы Mach. Только macOS, звёздочка допустима лишь в конце. |
network.httpProxyPort | число | Порт внутреннего HTTP-прокси песочницы. |
network.socksProxyPort | число | Порт внутреннего SOCKS-прокси. |
network.tlsTerminate | объект | [эксп] Терминировать TLS своим удостоверяющим центром — нужно для маскировки секретов. |
credentials.envVars | массив объектов | Что делать с секретами в переменных: deny или mask, плюс извлечение и разбор. |
credentials.files | массив объектов | То же для файлов с секретами. |
credentials.awsPairs | массив объектов | Пары переменных AWS, которые песочница переподписывает. |
credentials.sigv4 | объект | Что делать с формами запросов AWS, которые нельзя переподписать: потоковой загрузкой, предподписанным адресом и асимметричной подписью. Каждое поле — deny или passthrough; по умолчанию всё запрещено. |
credentials.allowPlaintextInject | boolean | Разрешить подставлять секреты открытым текстом. По умолчанию нет. |
allowAppleEvents | boolean | Разрешить Apple Events. Только macOS. |
enableWeakerNetworkIsolation | boolean | Ослабляет защиту. Более слабая сетевая изоляция на macOS. |
enableWeakerNestedSandbox | boolean | Ослабляет защиту. Разрешить вложенную песочницу послабее. |
bwrapPath | строка, абсолютный путь | [админ] Свой бинарник bubblewrap на Linux. |
socatPath | строка, абсолютный путь | [админ] Свой бинарник socat. |
ripgrep | объект | Свой ripgrep для песочницы. Проектные настройки его не переопределяют. |
Три вещи стоит выделить.
allowUnsandboxedCommands по умолчанию включён. То есть заблокированную песочницей команду агент может повторить снаружи через специальный параметр. Если вы включали песочницу ради изоляции, это, скорее всего, не то, чего вы хотели, — выключается явным false.
enabledPlatforms делает конфигурацию инертной целиком. На системе не из списка не будет ни песочницы, ни автоматических разрешений, ни предупреждения при старте, ни падения по failIfUnavailable. Тихо, как будто раздела и нет.
Маскировка секретов работает не везде. На macOS и Windows режим mask вырождается в deny: подменить значение на лету там нечем. У записей маскировки есть ещё поле onExtractNoMatch — что делать, если регулярное выражение ничего не нашло: warn (по умолчанию) пропустит переменную немаскированной, deny уберёт её внутри песочницы, error остановит запуск.
{ "sandbox": { "enabled": true, "autoAllowBashIfSandboxed": true, "allowUnsandboxedCommands": false, "network": { "allowedDomains": ["api.example.com", "*.githubusercontent.com"], "deniedDomains": ["telemetry.example.com"] }, "filesystem": { "denyRead": ["~/.ssh", "~/.aws"], "denyWrite": ["~/.config"] } }}Обновления и всё остальное
| Параметр | Тип | Что делает |
|---|---|---|
autoUpdatesChannel | latest, stable, rc | Канал автообновлений. |
minimumVersion | строка | Не даёт откатиться ниже указанной версии при переключении каналов. |
requiredMinimumVersion | строка | [админ] Ниже этой версии организация работать не даёт. |
requiredMaximumVersion | строка | [админ] Потолок версии для организации. |
managedSourcesBehavior | first-wins, merge | [админ] Как складываются несколько источников политики. |
wslInheritsWindowsSettings | boolean | [админ, Windows] WSL читает политику из полной цепочки политик Windows. |
processWrapper | строка | [админ] Чем оборачивать порождаемые процессы. |
allowManagedPermissionRulesOnly | boolean | [админ] Учитывать правила прав только из политики. |
defaultShell | bash, powershell | Оболочка для команд, вводимых через !. По умолчанию bash на всех платформах. |
respondToBashCommands | boolean | Отвечать на команды, введённые через !. По умолчанию да. |
feedbackSurveyRate | число 0–1 | Вероятность показа опроса о качестве сессии. |
feedbackDrafts | notify, quiet, off | Может ли агент сам готовить черновик отзыва. Отправляете всё равно вы. |
enableArtifact | boolean | Публикация артефактов. Выключение в любом слое побеждает. |
disableArtifact | boolean | [устар] Обратный по смыслу предшественник: true выключает, false игнорируется. |
disableClaudeAiConnectors | boolean | Не грузить облачные коннекторы. |
skipWebFetchPreflight | boolean | Пропустить проверку списка запрещённых адресов в строгих корпоративных средах. |
$schema | строка | Ссылка на схему настроек: автодополнение и проверка в редакторе. |
Схема принимает ещё несколько служебных ключей: modelProposedGoals, totalTokensReminder с родственниками и disableDeepLinkRegistration. Они внутренние, в интерфейсе не появляются и нигде не описаны.
Переменные окружения
Блок env в настройках — это объект «имя → значение». Все значения строки: числа и флаги пишутся в кавычках, "PORT": "3000", флаг — "1".
Честная оговорка о полноте: официальная документация перечисляет по именам триста сорок девять переменных, включая по регионам на каждую модель у каждого провайдера и весь набор телеметрии. Пересказывать их здесь бессмысленно. Ниже — те, что реально используются, плюс поведение блока env, которое нигде не собрано в одном месте.
{ "env": { "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1", "ANTHROPIC_MODEL": "claude-opus-5", "BASH_DEFAULT_TIMEOUT_MS": "120000", "DISABLE_TELEMETRY": "1" }}Как ведёт себя блок env
Он побеждает экспорт из оболочки. Значение из файла настроек записывается в окружение процесса поверх унаследованного. Это ровно обратно тому, что обычно ожидают.
Удалить переменную нельзя — можно выставить пустую строку. При выборе провайдера пустое значение считается незаданным, но дочерние процессы получат именно пустую строку.
Значения перечитываются на ходу, когда меняется файл, — кроме подсистем, настраиваемых только при запуске, вроде телеметрии. А /cd с версии 2.1.246 накладывает env новой папки поверх старой.
Проектным и локальным настройкам разрешено не всё. Отбрасываются три группы: переменные, задающие расположение файлов (CLAUDE_CONFIG_DIR, CLAUDE_CODE_TMPDIR, HOME, TMPDIR, TMP, TEMP, XDG_*); переменные, включающие выгрузку содержимого сессии (OTEL_LOG_RAW_API_BODIES, ENABLE_BETA_TRACING_DETAILED, BETA_TRACING_ENDPOINT); и переменные, влияющие на запуск и синхронизацию (CLAUDE_CODE_PROCESS_WRAPPER, CLAUDE_CODE_SYNC_SKILLS, CLAUDE_CODE_SYNC_PLUGINS, кэш и seed-папка плагинов). Список расширился как раз в 2.1.251. Предупреждение об этом видно только под отладкой.
Ещё несколько переменных игнорируются в любом файле и читаются только из окружения запуска: CLAUDE_CODE_REMOTE, CLAUDE_CODE_ACCOUNT_UUID, сокет и токен межсессионного обмена, CLAUDE_CODE_PROJECT_DIR_NAME и CLAUDE_CODE_RESTRICTED.
И обратное направление, о котором почти не пишут: Claude Code сам выставляет переменные дочерним процессам. Их видно из хуков и из любого запущенного скрипта: CLAUDECODE=1, CLAUDE_CODE_CHILD_SESSION=1, CLAUDE_CODE_SESSION_ID, CLAUDE_PID — собственный идентификатор процесса, CLAUDE_EFFORT с текущим уровнем усилий (режим ultracode показывается как xhigh), а в облачных сессиях CLAUDE_CODE_REMOTE=true и идентификатор удалённой сессии. Хук, которому нужно знать уровень усилий или отличить дочернюю сессию от основной, берёт это отсюда, а не гадает.
Провайдеры и аутентификация
| Переменная | Что делает |
|---|---|
ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN | Ключ и токен Anthropic API. |
CLAUDE_CODE_OAUTH_TOKEN | Токен подписки — вход без интерактивного логина. |
ANTHROPIC_BASE_URL | Свой базовый адрес API: прокси или шлюз. |
ANTHROPIC_CUSTOM_HEADERS | Дополнительные HTTP-заголовки к API. |
ANTHROPIC_BETAS | Beta-заголовки в запросах. |
CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX | Включить Amazon Bedrock или Google Cloud как провайдера. |
ANTHROPIC_BEDROCK_REGION_PREFIX | Какой межрегиональный профиль предпочесть вместо выведенного из региона AWS. |
ANTHROPIC_BEDROCK_BASE_URL, ANTHROPIC_VERTEX_BASE_URL | Свои адреса провайдеров. |
AWS_BEARER_TOKEN_BEDROCK, ANTHROPIC_VERTEX_PROJECT_ID | Учётные данные Bedrock и проект Google Cloud. |
CLAUDE_CODE_SKIP_BEDROCK_AUTH, CLAUDE_CODE_SKIP_VERTEX_AUTH | Пропустить авторизацию провайдера, когда её делает шлюз. |
HTTPS_PROXY, HTTP_PROXY, NO_PROXY | Прокси для исходящего трафика. |
NODE_EXTRA_CA_CERTS | Свой корневой сертификат для корпоративного прокси. |
Провайдеров, кстати, не два и не три: кроме Anthropic API, Amazon Bedrock и Google Cloud поддерживаются Microsoft Foundry и Claude Platform на AWS, и у каждого свой набор переменных и своё соответствие алиасов моделям.
Модели, контекст, лимиты
| Переменная | Что делает |
|---|---|
ANTHROPIC_MODEL | Основная модель. Перекрывает ключ model из файлов. |
ANTHROPIC_DEFAULT_MODEL | Модель для новых сессий; действует, только если model не задан нигде. |
ANTHROPIC_DEFAULT_OPUS_MODEL и такие же для sonnet, haiku и fable | Что стоит за алиасами. |
ANTHROPIC_SMALL_FAST_MODEL | [устар] Малая быстрая модель. Заменена на ANTHROPIC_DEFAULT_HAIKU_MODEL. |
CLAUDE_CODE_SUBAGENT_MODEL | Модель для субагентов. |
CLAUDE_CODE_EFFORT_LEVEL | Уровень усилий. Перекрывает --effort и /effort. |
MAX_THINKING_TOKENS | Лимит токенов на размышления. |
CLAUDE_CODE_MAX_OUTPUT_TOKENS, MAX_MCP_OUTPUT_TOKENS | Лимит выходных токенов и вывода MCP. |
CLAUDE_CODE_DISABLE_1M_CONTEXT | Не использовать окно на миллион токенов. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | Свой потолок контекстного окна. |
CLAUDE_CODE_AUTO_COMPACT_WINDOW, CLAUDE_AUTOCOMPACT_PCT_OVERRIDE | Окно автосжатия в токенах и в процентах. |
DISABLE_AUTO_COMPACT | Выключить автосжатие. |
DISABLE_PROMPT_CACHING | Выключить кэширование промпта. |
API_TIMEOUT_MS, CLAUDE_CODE_MAX_RETRIES | Таймаут запроса к API и число повторов. |
Поведение и среда
| Переменная | Что делает |
|---|---|
CLAUDE_CONFIG_DIR | Другая папка конфигурации целиком. |
CLAUDE_CODE_PROJECT_DIR_NAME | Короткое имя папки транскриптов и автопамяти проекта. Задаётся только вместе с CLAUDE_CONFIG_DIR и только из окружения запуска. |
CLAUDE_CODE_TMPDIR | Каталог для временных файлов. |
CLAUDE_CODE_USE_POWERSHELL_TOOL | Использовать инструмент PowerShell вместо bash. |
CLAUDE_CODE_GIT_BASH_PATH | Путь к Git Bash на Windows. |
CLAUDE_CODE_SHELL, CLAUDE_CODE_SHELL_PREFIX | Оболочка и префикс к командам оболочки. |
CLAUDE_ENV_FILE | Скрипт, выполняемый перед каждой командой оболочки в том же процессе — так переживают вызовы активации виртуального окружения. |
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR | Возвращаться в исходную папку после каждой команды: cd внутри вызова не сохраняется. |
BASH_DEFAULT_TIMEOUT_MS, BASH_MAX_TIMEOUT_MS | Таймаут команд по умолчанию и максимальный. |
BASH_MAX_OUTPUT_LENGTH | Лимит длины вывода команды. |
CLAUDE_CODE_TOOL_MEMORY_LIMIT | Лимит памяти для команд через контрольные группы. Только Linux. |
MCP_TIMEOUT, MCP_TOOL_TIMEOUT | Таймаут старта сервера и вызова инструмента. |
CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS | Сколько субагентов работает одновременно. По умолчанию двадцать. |
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH | Глубина вложенности субагентов. По умолчанию три; единица отключает вложенность. |
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY | Сколько параллельных вызовов только на чтение. По умолчанию десять. |
TASK_MAX_OUTPUT_LENGTH | Потолок вывода субагента в символах: по умолчанию 32000, максимум 160000. |
CLAUDE_CODE_ENABLE_TASKS | Какие инструменты задач давать: по умолчанию новые, ноль возвращает старый единый инструмент. |
CLAUDE_CODE_ENABLE_TODO_TOOLS | Вернуть инструменты задач на моделях, где их убрали. |
USE_BUILTIN_RIPGREP | Использовать встроенный ripgrep. |
CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS | Сколько держать в кэше загруженные страницы. По умолчанию пятнадцать минут. |
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS | Выключить фоновые задачи. |
CLAUDE_CODE_DISABLE_CLAUDE_MDS | Не загружать файлы CLAUDE.md. |
CLAUDE_CODE_SAFE_MODE, CLAUDE_CODE_RESTRICTED, CLAUDE_CODE_SIMPLE | То же, что одноимённые флаги запуска. |
Три засады в этой таблице стоит проговорить.
Таймауты MCP различаются на пять порядков. Старт сервера — тридцать секунд. А вызов инструмента по умолчанию — около двадцати восьми часов, то есть фактически без ограничения. Плюс у серверов по HTTP и у облачных коннекторов каждый запрос дополнительно ограничен минутой, и это отдельный лимит.
CLAUDE_CODE_PROJECT_DIR_NAME в одиночку не работает — только вместе с CLAUDE_CONFIG_DIR, и только из окружения, а не из файла настроек.
Безопасный режим отбирает больше, чем кажется. CLAUDE_CODE_SAFE_MODE — это не только инструкции и навыки: не грузятся плагины, хуки, MCP-серверы, свои команды и агенты, стили вывода, воркфлоу, темы, горячие клавиши, строка состояния, источник подсказок файлов, языковые серверы и автопамять. Остаётся только корпоративная политика, включая заданные ею хуки и строку состояния. Это отладочный режим «выключить всё, что я настроил», и для поиска сломанной конфигурации он идеален.
Рендеринг и доступность
Одной строкой, потому что переменных много, а нужны они редко. Классический рендерер возвращает CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN, и он сильнее и CLAUDE_CODE_NO_FLICKER, и настройки tui. Есть отдельные выключатели мыши и кликов, скорости прокрутки, виртуальной прокрутки, полной перерисовки, родного курсора, подсветки синтаксиса, гиперссылок и truecolor в tmux. Для доступности — CLAUDE_AX_SCREEN_READER и родственные ей.
Приватность, телеметрия, обновления
| Переменная | Что делает |
|---|---|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | Один выключатель для всего необязательного исходящего трафика. |
DISABLE_TELEMETRY, CLAUDE_CODE_ENABLE_TELEMETRY | Выключить и включить телеметрию. |
DO_NOT_TRACK | Общепринятая переменная того же смысла. |
DISABLE_GROWTHBOOK | Не подтягивать серверные флаги функций. |
DISABLE_ERROR_REPORTING | Не слать отчёты об ошибках. |
DISABLE_AUTOUPDATER, DISABLE_UPDATES | Выключить автообновления. |
DISABLE_COST_WARNINGS | Скрыть предупреждения о стоимости. |
DISABLE_FEEDBACK_COMMAND | Скрыть отправку отзывов. Старое имя DISABLE_BUG_COMMAND тоже принимается. |
DISABLE_DOCTOR_COMMAND | Скрыть /doctor. |
Семейство OTEL_* | Экспорт метрик, логов и трейсов. |
Три вещи, которые здесь ловят людей.
DISABLE_BUG_COMMAND — не отдельный выключатель. Это старое имя DISABLE_FEEDBACK_COMMAND, и одна переменная выключает и /feedback, и черновики отзывов, и /bug с /share, потому что они уходят по тому же каналу.
Значение 0 не включает обратно. У CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC любое присутствие переменной, включая 0 и false, отключает трафик. Чтобы вернуть, переменную надо убрать совсем.
Выключение телеметрии отключает и функции. Вместе с флагами функций перестают работать: авто-режим по умолчанию, /auto-mode-setup, удалённое управление, /import, /schedule, советчик, комментарии к артефактам, новый клиент MCP и инструмент PowerShell по умолчанию на Windows. Это осознанный размен, а не побочный дефект, но знать о нём стоит до того, как вы полчаса ищете, куда делось удалённое управление.
Что именно покрывает «весь необязательный трафик»: автообновления, телеметрию, отчёты об ошибках, отправку отзывов, заметки о выпуске, обновление списка моделей у шлюза и проверки доступности. Плюс — что неожиданно — фоновый запуск локальных команд-источников плагинов, потому что они могут потянуть за собой установку зависимостей. А вот автоустановку официального маркетплейса он не покрывает, для неё своя переменная.
Терминальные команды и флаги
Всё, что вводится не внутри сессии, а в обычной оболочке. У каждой подкоманды ниже собрано всё сразу: её собственные подкоманды и флаги, тонкости и примеры.
Сразу главное, и это официальная формулировка, а не моё наблюдение: claude --help перечисляет не все флаги. Отсутствие флага в справке не значит, что его нет. Ниже помечено, чего в справке нет, — таких как минимум дюжина, и среди них вполне рабочие вещи вроде ограничения числа ходов.
Если ошибиться в имени подкоманды, вам предложат ближайшую и выйдут, не запуская сессию: на claude udpate вы получите вопрос, не имели ли вы в виду claude update.
Подкоманды
claude [промпт]
Запустить интерактивную сессию в текущей папке — обычный способ начать работу. Промпт в аргументе режим не меняет: сессия остаётся интерактивной, просто первый ход делается сразу, без ожидания ввода. Удобно, когда задача уже сформулирована и не хочется отдельно её печатать. Не путайте с -p: там ответ печатается один раз, и процесс завершается.
Открывается одна и та же стартовая заставка: версия, аккаунт и модель, текущая папка, подсказки и недавняя активность. С промптом в аргументе она тоже показывается, но ввода никто не ждёт — первый ход начинается сразу.
claude # интерактивная сессия
# так стартовый экран выглядит в отчёте пользователя, сборка 2.0.26╭─── Claude Code v2.0.26 ─────────────────────────────────────────────────────╮│ │ Tips for getting started ││ Welcome back ksmith! │ Ask Claude to create a new appor c… ││ │ ││───────────────────────────────────────│ ││ ▐▛███▜▌ │ Recent activity ││ ▝▜█████▛▘ │ No recent activity ││ ▘▘ ▝▝ │ ││ │ ││ Sonnet 4.5 · Claude Max │ ││ /Users/ksmith/claude-context-test │ │╰─────────────────────────────────────────────────────────────────────────────╯
claude "почини падающий тест в orders" # сессия, сразу с задачейclaude -p "<промпт>"
Неинтерактивный запуск: Claude Code отрабатывает один промпт, печатает результат в стандартный вывод и завершается. Это основной режим для скриптов, конвейеров и CI — вывод можно передать дальше или сохранить в файл. Сессия при этом полноценная: инструменты, права и настройки проекта действуют те же, просто спрашивать вас не у кого. Отсюда и тонкость: если выбрана модель или режим, списывающие кредиты, одноразового согласия на списание вам не покажут — интерактивная сессия спрашивает, -p и Agent SDK списывают молча.
На экране появляется только сам ответ: ни заставки, ни строки ввода в этом режиме нет.
claude -p "что делает этот скрипт?" # ответить и выйтиclaude auth login|logout|status
Вход, выход и статус авторизации. Статус печатается в JSON — этим удобно проверять в скрипте, что машина вообще залогинена, прежде чем что-то на ней запускать. Часть возможностей завязана не на ключ API, а именно на вход в аккаунт claude.ai, так что разбор непонятного «функция недоступна» разумно начинать отсюда.
Вход предлагает выбрать, каким счётом платить: подпиской claude.ai или биллингом Console. Флаг --console выбирает второе сразу, без вопроса. Дальше открывается браузер и ждёт подтверждения; logout удаляет сохранённые учётные данные с машины.
claude auth login --console # вход через биллинг Console
claude auth status # статус авторизации в JSON
claude auth logout # выйтиclaude setup-token
Выпустить долгоживущий токен авторизации. [не на всех тарифах] Нужна подписка. Токен нужен там, где интерактивно войти нельзя — сервер сборки, контейнер, CI: его кладут в переменную окружения, и claude -p работает без браузера и без человека.
Вход подтверждается в браузере, после чего токен печатается в терминал — оттуда его и переносят в окружение машины сборки.
claude setup-token # долгоживущий токен для CIclaude agents
Экран управления фоновыми агентами; он же их запускатель. Фоновый агент — это сессия, живущая отдельно от вашего терминала: вы ставите задачу, закрываете окно и возвращаетесь за результатом. На этом экране видно, что запущено, что закончилось и что упало; всё то же самое доступно отдельными подкомандами (attach, logs, stop, rm), экран просто собирает их в одном месте.
Выбираете из списка нужную сессию, а дальше — что с ней сделать: открыть у себя в терминале, посмотреть вывод, остановить или удалить вместе с рабочей копией. Держите в уме, что каждая фоновая сессия расходует лимит тарифа как обычная: пятеро агентов, работающих одновременно, съедают его впятеро быстрее.
claude agents # экран фоновых агентов
# так этот список выглядит в документацииPinned ✽ clawd walk cycle Drawing the walk-cycle sprite frames 3m
Ready for review ∙ jump physics Opened PR with collision fix #2048 2h
Needs input ✻ power-up design double jump or wall climb? 1m
Working ✽ collision detection Adding swept-AABB checks to CollisionSystem 2m ✢ playtest level 3 run 12 · all checkpoints cleared in 4m
Completed ✻ title screen result: menu, options, and credits done 9m ∙ sound effects result: 14 SFX exported to assets/audio 4h … 6 moreclaude attach <id>
Открыть фоновую сессию в этом терминале. Вы получаете её разговор целиком и продолжаете работу так, будто запустили её здесь. Нужно, когда агент упёрся в вопрос или пошёл не туда и дальше проще вести его руками. Идентификатор берут из claude agents или из вывода при запуске.
claude attach a1b2c3 # подключиться к фоновой сессииclaude logs <id>
Напечатать последний вывод фоновой сессии и выйти. Быстрый способ понять, чем агент занят, не забирая его себе и не мешая ему работать. Удобно дёргать из скрипта, когда нужно дождаться результата или просто убедиться, что работа идёт.
claude logs a1b2c3 # последний вывод фоновой сессииclaude stop <id>
Остановить фоновую сессию; разговор сохраняется. Алиас: kill. Это не удаление: сессия перестаёт работать и тратить лимит, но её вывод и рабочая копия остаются на месте, и посмотреть их можно. Если сессия нужна не остановленной, а убранной совсем — это claude rm.
claude stop a1b2c3 # остановитьclaude respawn [id]
Перезапустить фоновую сессию или все на текущей версии. Смысл в том, что уже запущенные агенты продолжают крутиться на той версии, с которой стартовали, и обновление Claude Code к ним само не приезжает. Отдельную сессию перезапускают по идентификатору, --all — все разом.
claude respawn --all # перезапустить все на новой версииclaude rm <id>
Удалить фоновую сессию и её рабочую копию. В отличие от stop, это необратимо: пропадает и разговор, и отдельная папка, в которой агент работал, вместе со всем, что вы из неё не забрали в ветку. Прибирать закончившиеся сессии полезно — иначе список зарастает, а рабочие копии занимают место.
Если в рабочей копии остались коммиты, которых нигде больше нет, команда откажется её трогать и скажет, что оставила всё как есть.
claude rm a1b2c3 # удалить сессию и её рабочую копиюclaude daemon
Фоновая служба, которая держит все фоновые сессии. Подкоманда, о которой мало кто знает, хотя работает она у всех: это супервизор, поднимающий и держащий фоновые сессии. Сама по себе она вам не нужна ровно до того момента, когда агент перестал отвечать или список сессий выглядит подозрительно пустым — тогда сюда идут за состоянием и журналом.
| Подкоманда | Что делает |
|---|---|
status | Состояние службы: версия, папка сокетов, число рабочих процессов |
run [путь] | Запустить службу вручную |
logs | Журнал службы |
stop | Остановить; --any — вместе с сессиями, --keep-workers — оставив рабочие процессы |
uninstall | Убрать службу |
Флаги --json-path и --log-file меняют расположение файла состояния и журнала; по умолчанию это ~/.claude/daemon.json и ~/.claude/daemon.log. В версии 2.1.251 постоянная установка службы отключена: она поднимается по требованию и завершается, когда отключается последний клиент.
Ловушка для скриптов: claude --dangerously-skip-permissions daemon status работает, а любой другой глобальный флаг перед словом daemon запустит интерактивную сессию вместо подкоманды. Ставьте подкоманду первой.
claude daemon status # состояние фоновой службы
claude daemon stop --any --keep-workers # остановить службу, оставив рабочие процессыclaude mcp
Настройка MCP-серверов без запуска сессии. MCP-сервер — это то, чем модель дотягивается наружу проекта: до трекера задач, базы, файловой системы, внутреннего API. Всё то же самое настраивается и внутри сессии, но из оболочки удобнее, когда серверы раскатываются скриптом или их нужно одинаково завести на нескольких машинах.
| Подкоманда | Что делает |
|---|---|
add <имя> <команда-или-адрес> [аргументы...] | Добавить сервер. |
add-json <имя> <json> | Добавить сервер одной строкой JSON. |
add-from-claude-desktop | Импортировать серверы из Claude Desktop. Только macOS и WSL. |
list, get <имя> | Список и детали. |
login <имя>, logout <имя> | Авторизация в сервере или сброс сохранённых учётных данных. |
remove <имя> | Удалить сервер. |
reset-project-choices | Сбросить решения «одобрен или отклонён» по проектным серверам. |
serve | Запустить сам Claude Code как MCP-сервер. |
Самый важный флаг здесь — --scope, и его пропуск объясняет добрую половину вопросов «почему сервер видит только у меня» или «почему он вдруг у всех». Значения: local (по умолчанию), project — в .mcp.json, который коммитится, и user — в пользовательские настройки. Он есть у add, add-json, add-from-claude-desktop и remove.
Транспортов четыре, а не три: stdio, http, sse и ws. Короткие формы: -t вместо --transport, -H вместо --header. Для OAuth есть --client-id, --client-secret (спросит, либо возьмёт из переменной окружения) и --callback-port; у login дополнительно --no-browser.
Неодобренные серверы из .mcp.json показываются в списке как ожидающие одобрения и не подключаются. Добавление подтверждается строкой о том, куда именно ушла запись; list перед печатью обходит серверы и проверяет, отвечают ли они, а serve не завершается — процесс остаётся в работе и говорит по стандартному вводу-выводу.
claude mcp add fs npx -- -y @modelcontextprotocol/server-filesystem ~/work # в локальную область
claude mcp add --scope project github https://api.example.com/mcp -t http # в .mcp.json проекта
claude mcp add-json local-tools '{"command":"./tools","args":["--serve"]}' # то же самое из готового JSON
claude mcp list # что подключено и в каком состоянии
# снято на сборке 2.1.252Checking MCP server health…
claude.ai Google Drive: https://drivemcp.googleapis.com/mcp/v1 - ✔ Connectedserena: C:/Users/user/.local/bin/uvx.exe --python 3.13 --from git+... - ✔ Connected
claude mcp serve # отдать сам Claude Code как MCP-серверclaude plugin
Плагины и маркетплейсы. Алиас: plugins. Плагин — это набор навыков, агентов, команд, хуков и MCP-серверов, поставляемый и обновляемый одним куском из маркетплейса. Отсюда их ставят, включают, выключают и собирают свои. Работает без запуска сессии, поэтому одинаковый набор на всю команду удобно раскатывать скриптом.
| Подкоманда | Что делает |
|---|---|
install <плагин> | Поставить из маркетплейса. Алиас i. |
uninstall <плагин> | Удалить. Алиасы remove, rm. |
enable, disable | Включить или выключить установленный. |
list | Список установленных. Алиас ls. |
details <имя> | Инвентарь компонентов и оценка того, сколько контекста плагин съест. |
update <плагин> | Обновить; применится после перезапуска. |
marketplace | Управление маркетплейсами. |
init <имя> | Создать заготовку плагина. Алиас new. |
validate <путь> | Проверить манифест, а также навыки, агентов и команды в папке. |
eval [цель] | Прогнать проверочные случаи против плагина и показать оценки. |
tag [путь] | Создать git-тег релиза, сверив манифест с записью в маркетплейсе. |
prune | Убрать автоматически поставленные зависимости, которые больше не нужны. Алиас autoremove. |
Почти у всех подкоманд есть -s, --scope со значениями user (по умолчанию), project и local, а у update ещё и managed. Кроме того: у install — --config ключ=значение (можно несколько) и -y; у uninstall — --keep-data, --prune, -y; у disable — -a для всех; у list — --json и --available; у prune — --dry-run и -y; у validate — --strict, превращающий предупреждения в ошибки; у init — --description, --author, --author-email, -f и --with со списком компонентов: skills, agents, hooks, mcp, lsp, output-style, channel.
Полезно знать, что validate работает и на обычной папке с навыками и агентами, без всякого плагина.
Обычный list печатает установленные плагины с версией, областью и состоянием — включён или выключен; с --json то же самое приходит машиночитаемым, для разбора в скрипте.
claude plugin install code-review@claude-plugins-official # поставить из маркетплейса
claude plugin list --json # что установлено, машиночитаемо
# снято на сборке 2.1.252, без --jsonInstalled plugins:
❯ frontend-design@claude-plugins-official Version: unknown Scope: project Status: ✔ enabled
claude plugin details formatter # сколько контекста он занимает
claude plugin init my-tools --with skills,hooks # заготовка плагина
claude plugin validate ./my-tools --strict # проверить манифест и содержимое папкиclaude auto-mode
Конфигурация классификатора авто-режима. Авто-режим решает, что выполнить без вопроса, а на чём остановиться и спросить вас; решает он это по набору правил, и правила приходят из трёх мест — штатный набор, ваши настройки, настройки проекта. Эти подкоманды показывают, что из них сейчас действует и откуда взялось, дают прочитать штатное правило целиком и попросить модель разобрать ваши собственные. Идти сюда стоит, когда авто-режим переспрашивает слишком часто или, наоборот, пропускает то, чего пропускать не должен.
| Подкоманда | Что делает |
|---|---|
config | Что действует и откуда |
defaults | Штатные правила; с --label — полный текст одного правила |
critique | Разбор ваших правил моделью |
reset | Сброс; --yes — без подтверждения |
defaults печатает JSON: объект с ключами allow, soft_deny, hard_deny и environment, в каждом — массив длинных текстовых правил с названиями вида «Security Discussion: …». Флаг --label вырезает оттуда одно правило целиком.
claude auto-mode config # что действует и откуда
claude auto-mode defaults --label 'Git Destructive' # полный текст одного правила
claude auto-mode critique # разбор ваших правил моделью
claude auto-mode reset --yes # сброс без подтвержденияclaude project purge [путь]
Удалить всё состояние по проекту: транскрипты, задачи, историю файлов, запись в конфигурации. Сам код не трогается — убирается только то, что Claude Code накопил рядом с ним. Нужно, когда проект закрыт или когда в накопленном состоянии завелось что-то, чего там быть не должно. Перед настоящим запуском есть смысл посмотреть список через --dry-run.
claude project purge ~/work/my-repo --dry-run # что было бы удалено
# так это выглядит в документацииPurge plan for /home/user/work/my-repo:
dir: /home/user/.claude/projects/-home-user-work-my-repo project transcripts (.jsonl) and memory/ config: projects["/home/user/work/my-repo"] project entry in ~/.claude.json (trust, history, MCP servers) filter: /home/user/.claude/history.jsonl 12 prompt(s) typed in this project
shell-snapshots/ are not project-scoped and will not be touchedbackups/ may still contain this project entry in old .claude.json snapshots (/home/user/.claude/backups); at most 5 are kept and they rotate out automaticallyDry run: 3 item(s) would be deleted.claude doctor
Диагностика установки без запуска сессии и без правок. Прогоняет набор проверок по тому, как Claude Code установлен и в каком состоянии его окружение, и печатает результат построчно. Сама она ничего не чинит: это диагноз, а не лечение. С неё разумно начинать любой разбор «почему не работает», прежде чем менять настройки наугад.
claude doctor # диагностика без правок
# снято на сборке 2.1.252Claude Code doctor
Running: native (2.1.252)Commit: c0778c45886dPlatform: win32-x64Path: C:\Users\user\.local\bin\claude.exeConfig install method: nativeSearch: OK (bundled)Auto-updates: enabledAuto-update channel: latestLast update attempt: success → 2.1.252 (2026-08-31)Managed settings (remote): not fetched — requires an Enterprise or Team subscription
Remote ControlControl this session from claude.ai/code or the Claude mobile app
No installation issues found.
For a full setup checkup that can also fix issues, run /doctor in a Claude Code session.claude import [источник]
Перенести конфигурацию из другого кодинг-агента, чтобы не переписывать руками правила, команды и настройки, уже собранные под другой инструмент. Источник указывается аргументом. --dry-run показывает, что именно перенеслось бы, ничего при этом не меняя, — с него стоит начать, если в текущей конфигурации уже есть что терять.
claude import codex --dry-run # что перенеслось бы из другого агентаclaude install [версия]
Поставить нативную сборку: stable, latest или конкретную версию. Нативная — это отдельный бинарник вместо пакета из npm, и он умеет обновляться сам. Аргумент выбирает, что именно ставится: stable — проверенный канал, latest — самый свежий, а точный номер закрепляет версию намертво, как и делают на машинах сборки, где поведение должно быть одинаковым сегодня и через месяц.
claude install stable # поставить стабильную сборкуclaude update
Проверить обновления и поставить. Алиас: upgrade. Нативная сборка обновляется и сама, поэтому руками команду зовут, когда свежая версия нужна прямо сейчас — например ради возможности из конкретного выпуска. Уже запущенные фоновые сессии обновление не подхватят: их после этого перезапускают через claude respawn --all.
Начинается всё с текущей версии и проверки канала, а дальше — либо установка, либо сообщение о том, что скачать не удалось.
claude update # обновиться
# первые строки настоящего вывода; в том прогоне дальше пришла ошибка загрузкиCurrent version: 2.1.241Checking for updates to latest version...…claude ultrareview [цель]
Облачное мульти-агентное ревью с печатью находок в терминал. [сверх тарифа] На Pro и Max есть три бесплатных прогона — они одноразовые и не восстанавливаются, а на Team и Enterprise бесплатных нет вовсе; дальше ревью списывается из кредитов, обычно на 5–25 долларов за прогон в зависимости от размера изменений, а при выключенных кредитах запуск просто блокируется. [не на всех тарифах] Нужен вход в аккаунт claude.ai: через Amazon Bedrock, Google Cloud Agent Platform и Microsoft Foundry, а также в организациях с Zero Data Retention команда недоступна.
Разбор идёт не на вашей машине: изменения уходят в облачную сессию, где несколько агентов работают над ними параллельно, и в терминал возвращается уже готовый список находок. Прогон засчитывается с момента, когда облачная сессия стартовала: остановленное на полпути ревью бесплатный прогон всё равно израсходует, а платное спишет только за отработанную часть. Согласия на списание кредитов спрашивают один раз за разговор.
claude ultrareview # находки печатаются прямо в терминалclaude gateway
Запустить корпоративный шлюз авторизации и телеметрии. Через него разработчики ходят в API не напрямую: учётные данные остаются на шлюзе, а он же собирает статистику использования — так ключи не расходятся по машинам и видно, кто и сколько тратит. Конфигурация задаётся отдельным файлом через флаг. Вещь сугубо корпоративная, в одиночку она не нужна.
Команда не завершается: это сервер, который остаётся в работе, пока его не остановят.
claude gateway --config gateway.yaml # корпоративный шлюзclaude remote-control
Скрытая: держать удалённое управление как сервер. Алиас: rc. Машина при этом остаётся на связи, и к её сессии можно подключиться с другого устройства, не подходя к самому компьютеру. Процесс не завершается сам — он живёт, пока вы его не остановите, а --continue подхватывает последнюю сессию управления вместо новой. [не на всех тарифах] Нужен вход в аккаунт claude.ai — с ключом API удалённое управление не работает.
claude remote-control --continue # вернуться в последнюю сессию управленияclaude self-hosted-runner
Скрытая: превратить машину или контейнер в площадку, где выполняются веб-, мобильные и desktop-сессии. [не на всех тарифах] Это публичная бета для Team и Enterprise, по умолчанию выключенная: владелец организации должен разрешить самостоятельно размещаемые окружения, у организации должен быть включён веб-Claude Code, а с Zero Data Retention это не работает. Отдельной платы за такую площадку нет — железо ваше, а сессии на нём расходуют тот же лимит организации, что и сессии на инфраструктуре Anthropic.
У неё есть подкоманда setup и отдельный оркестратор, поднимающий исполнителей по мере накопления очереди, а флагов около двадцати: адрес API, файл секрета окружения, папка хуков, порт проверки здоровья, ёмкость, тайм-ауты слива и остановки, время жизни простаивающего исполнителя, метка клиента. Всё это описано в отдельном справочнике по самостоятельно размещаемым окружениям — вопреки распространённому мнению, что подкоманда недокументирована.
claude self-hosted-runner setup # подготовить машину как площадкуУстановка и обновление
Способов больше, чем npm install, и это стоит знать, потому что нативная сборка обновляется сама, а пакет из npm — нет.
# macOS, Linux, WSL — нативный установщикcurl -fsSL https://claude.ai/install.sh | bashcurl -fsSL https://claude.ai/install.sh | bash -s stable # закрепить каналcurl -fsSL https://claude.ai/install.sh | bash -s 2.1.236 # закрепить версию
# Windowsirm https://claude.ai/install.ps1 | iex # PowerShellwinget install Anthropic.ClaudeCode # или пакетным менеджером
# macOS через Homebrew — два разных пакетаbrew install --cask claude-code # стабильный, отстаёт примерно на неделюbrew install --cask claude-code@latest # свежий
# npm — работает, но требует Node 22+npm install -g @anthropic-ai/claude-codeЕсть и подписанные репозитории для apt, dnf и apk. А claude install и claude update работают, когда Claude Code уже стоит.
Коды выхода
Раздел на три строки, но для скриптов важный.
| Код | Что означает |
|---|---|
| 0 | Успех |
| ненулевой | Запуск не удался |
| 143 | Прервано сигналом завершения |
| 137 | Установка убита до завершения |
Тонкость: неверный флаг сообщается в поток ошибок до начала работы, а сбой внутри работы — например отсутствие авторизации — печатается как результат в обычный вывод. То есть по одному лишь коду возврата отличить «не запустилось» от «запустилось и не смогло» не выйдет.
Прерывание сигналом оставляет текущий ход незавершённым и без результата, убивает дерево процессов запущенных команд, выполняет хуки завершения сессии — и при возобновлении сессии этот ход продолжится с места остановки.
Флаги запуска
Пометка [нет в справке] означает, что флаг работает, но claude --help в сборке 2.1.251 его не печатает.
Сессия и её продолжение
| Флаг | Что делает |
|---|---|
-c, --continue | Продолжить последний разговор в текущей папке. Фоновые сессии пропускает. |
-r, --resume [значение] | Продолжить по идентификатору или открыть интерактивный выбор. |
--fork-session | При продолжении завести новый идентификатор вместо переиспользования старого. |
--session-id <uuid> | Задать конкретный идентификатор сессии. |
-n, --name <имя> | Отображаемое имя сессии. |
--from-pr [значение] | Продолжить сессию, связанную с pull request. |
--no-session-persistence | Не сохранять сессию на диск. Только с неинтерактивным режимом. |
--teleport [сессия] | Забрать веб-сессию в терминал. |
--cloud [описание|id|адрес] | Создать облачную сессию или подключиться к существующей. |
--remote | [устар] Старое имя --cloud. Встречается в чужих скриптах. |
--environment <id> | Создать облачную сессию на своём окружении. |
--ref <ветка> | [нет в справке] С каким ref разворачивать облачное окружение. Работает вместе с --environment. |
--remote-control [имя], --rc | Запустить сессию с включённым удалённым управлением. |
--remote-control-session-name-prefix <префикс> | Префикс для автоматических имён таких сессий. |
--bg, --background | Запустить в фоне и вернуть управление; печатает идентификатор. |
--exec <команда> | [нет в справке] Запустить не сессию, а обычную команду фоновой задачей. |
-w, --worktree [имя] | Завести под сессию новую рабочую копию git. |
--tmux | Поднять сессию tmux для рабочей копии. |
--teammate-mode <режим> | [нет в справке] Как показывать тиммейтов: in-process, auto, tmux, iterm2. |
claude -c # продолжить последний разговорclaude -r # выбрать из спискаclaude -r 8f3c1d2e --fork-session # продолжить копией, оригинал не трогаяclaude -n "рефакторинг оплаты" # запустить с именемclaude --from-pr 1234 # сессия по pull requestclaude --bg "прогони весь тест-сьют" # фоном, вернёт idclaude --bg --exec 'pytest -x' # фоновая задача вообще без сессииclaude -w feature-x # своя рабочая копия под сессиюclaude -w feature-x --tmux # она же в tmuxclaude --cloud "почини флейки в CI" # облачная сессияclaude --environment ccpool_abc --ref main -p "прогони дымовые тесты"Флаг --exec заслуживает отдельной строки: он превращает CLI в запускатель фоновых задач вообще без модели. Команда выполняется в псевдотерминале, её вывод читается через claude logs, останавливается она claude stop. Удобно, когда нужен единый способ следить за долгими процессами.
Вывод и неинтерактивный режим
| Флаг | Что делает |
|---|---|
-p, --print | Напечатать ответ и выйти. Диалог доверия к папке пропускается. |
--output-format <формат> | text по умолчанию, json или stream-json. |
--input-format <формат> | text по умолчанию или stream-json. |
--json-schema <схема> | Схема для валидации структурированного ответа. |
--include-partial-messages | Отдавать куски сообщений по мере поступления. |
--include-hook-events | Включить в поток события жизненного цикла хуков. |
--forward-subagent-text | Пробрасывать текст и размышления субагентов. |
--replay-user-messages | Возвращать пользовательские сообщения обратно в вывод. |
--max-turns <n> | [нет в справке] Потолок числа ходов с инструментами. Главный рычаг контроля расходов в CI. |
--max-budget-usd <сумма> | Потолок трат на вызовы API. |
--permission-prompt-tool <инструмент> | [нет в справке] MCP-инструмент, который отвечает на запросы разрешений вместо человека. |
--ax-screen-reader | Плоский текст без рамок и анимаций. |
--verbose | Перекрыть соответствующую настройку из файла. |
claude -p "перечисли публичные эндпойнты" --output-format json | jq -r '.result'claude -p "собери отчёт" --json-schema ./report.schema.json | jq '.structured_output'claude -p "почини линтер" --max-turns 5 # потолок ходовclaude -p "проверь стиль" --max-budget-usd 0.50 # потолок тратclaude -p "..." --permission-prompt-tool mcp_auth_toolcat diff.patch | claude -p "оцени риск этих изменений"Два флага здесь — самые полезные и при этом отсутствующие в справке. --max-turns ограничивает число ходов с вызовом инструментов; при достижении потолка запуск завершается с соответствующим признаком в результате, и именно его официально советуют как основной рычаг контроля стоимости в CI. --permission-prompt-tool называет MCP-инструмент, который будет отвечать на запросы разрешений вместо человека, — единственный способ получить логику одобрения в неинтерактивном запуске.
Что нужно знать про неинтерактивный режим
Слэш-команды в нём работают. Свои навыки и команды подставляются прямо в текст промпта. Терминальных встроенных вроде /login там нет, но /model, /effort, /fast, /color и /rename принимают значение аргументом, а /mcp без аргумента печатает текстовую сводку по серверам. Настройку меняют через /config ключ=значение.
claude -p "/model sonnet /code-review low"claude -p "/config thinking=false расскажи, что делает этот модуль"Формат json отдаёт заметно больше, чем текст ответа. Вот настоящий ответ на тривиальный запрос, снятый со сборки 2.1.252 и сокращённый — выброшены только повторяющиеся счётчики:
{ "type": "result", "subtype": "success", "is_error": false, "result": "ок", "session_id": "8a792c19-cd74-4531-8311-f5cab07771d8", "num_turns": 1, "total_cost_usd": 0.351315, "duration_ms": 4988, "duration_api_ms": 2029, "ttft_ms": 2271, "stop_reason": "end_turn", "terminal_reason": "completed", "usage": { "input_tokens": 2, "output_tokens": 4, "cache_creation_input_tokens": 34368, "cache_read_input_tokens": 15050, "service_tier": "standard" }, "modelUsage": { "claude-opus-5": { "inputTokens": 2, "outputTokens": 4, "costUSD": 0.351315, "contextWindow": 1000000, "maxOutputTokens": 64000, "provider": "firstParty" } }, "permission_denials": [], "subagent_stats": { "spawned": 0, "completed": 0, "failed": 0 }, "fast_mode_state": "off", "fast_mode_disabled_reason": "sdk_opt_in_required"}Смотреть тут стоит на три вещи. Текст ответа лежит в result — это то, ради чего обычно и зовут jq -r '.result'. Стоимость в total_cost_usd считается клиентом, а не сервером, и разложена по моделям в modelUsage. А usage показывает, куда на самом деле ушли деньги: в примере выше на четыре токена ответа пришлось тридцать четыре тысячи токенов записи кэша — то есть платите вы за контекст, а не за ответ. Со схемой валидации структурированный ответ кладётся в отдельное поле рядом с этими же метаданными.
session_id можно сохранить и продолжить разговор потом — причём из другой папки, начиная с версии 2.1.223.
Конфликты флагов. -p вместе с --bg — ошибка. --cloud с описанием задачи вместе с -p — тоже; а вот --cloud <id> вместе с -p поставит сообщение в очередь этой облачной сессии и выйдет.
Ограничения потока. Ввод по конвейеру ограничен десятью мегабайтами: больше — понятная ошибка и ненулевой код. Если поток ввода не читается вовсе, будет предупреждение, а работа продолжится с промптом из командной строки.
Фоновые задачи заканчиваются вместе с запуском. Команда, запущенная в фоне во время claude -p, снимается примерно через пять секунд после того, как напечатан результат. Фоновые субагенты и воркфлоу — исключение, их ждут, но не дольше десяти минут непрерывного простоя.
--bare — рекомендуемый режим для скриптов, и в будущем он станет для -p поведением по умолчанию. Разница существенная: без него неинтерактивный запуск выполняет хуки из .claude/settings.json проекта и подключает серверы из его .mcp.json даже в папке, которой вы никогда не доверяли, без единого вопроса.
Модель, усилия, режим прав
| Флаг | Что делает |
|---|---|
--model <модель> | Алиас (fable, opus, sonnet, haiku) или полное имя. |
--fallback-model <модель,...> | Откат при перегрузке основной модели. Только с -p. |
--effort <уровень> | low, medium, high, xhigh, max, а по документации ещё и ultracode. |
--advisor <модель> | [нет в справке] Включить советчика и задать ему модель. |
--agent <агент> | Агент для сессии; перекрывает настройку. |
--agents <json> | Объявить своих агентов прямо в командной строке. Проверяется при запуске. |
--permission-mode <режим> | default (он же manual), acceptEdits, plan, auto, dontAsk, bypassPermissions. |
--dangerously-skip-permissions | Обходить проверки прав. |
--allow-dangerously-skip-permissions | Сделать обход доступным вариантом, не включая его. |
--restricted | Ограниченный режим. |
--safe-mode | Выключить все кастомизации. |
--bare | Минимальный режим для скриптов. |
claude --model haiku -p "перечисли изменённые файлы"claude --effort xhigh # сессия с глубокими рассуждениямиclaude --effort ultracode # сразу с оркестровкой воркфлоуclaude --advisor opus # подключить советчикаclaude --permission-mode plan # стартовать в режиме планированияclaude --permission-mode acceptEdits # автоматически принимать правкиclaude --safe-mode # без хуков, навыков, плагинов и MCPclaude --bare -p "..." # минимальный режим для скриптаТри предупреждения. --dangerously-skip-permissions не работает из-под администратора: на Linux и macOS запуск от root или через sudo отклоняется, потому что root плюс отсутствие вопросов — это доступ ко всему на машине. Внутри распознанной песочницы проверка снимается. Организация может запретить режим совсем ключом disableBypassPermissionsMode.
Документация и бинарник расходятся в двух местах. У --permission-mode документация перечисляет и default, и manual как его алиас, а справка бинарника — только manual. У --effort документация знает ultracode, справка — нет. В обоих случаях работает более широкий вариант.
--safe-mode и --bare — разные вещи. Первый выключает всю кастомизацию для диагностики. Второй — минимальный режим исполнения для скриптов, где ещё и авторизация идёт строго ключом. Для отладки «что-то сломалось после моих настроек» нужен первый.
Инструменты, папки, MCP
| Флаг | Что делает |
|---|---|
--tools <инструменты...> | Набор встроенных инструментов: пустая строка выключает все, default включает все, либо перечислить имена. |
--allowedTools, --allowed-tools | Разрешить инструменты списком. Обе формы работают. |
--disallowedTools, --disallowed-tools | Запретить инструменты списком. |
--add-dir <папки...> | Дополнительные рабочие папки. |
--mcp-config <конфиги...> | Загрузить MCP-серверы из файлов или строк JSON. |
--strict-mcp-config | Использовать только серверы из этого флага. |
--plugin-dir <путь> | Загрузить плагин из папки или архива только на эту сессию. |
--plugin-url <адрес> | То же, но архив по ссылке. |
--channels <серверы...> | [нет в справке] Какие MCP-серверы слушать на предмет внешних событий. |
--dangerously-load-development-channels | [нет в справке] Разрешить каналы вне утверждённого списка. |
--disable-slash-commands | Выключить все навыки. |
--chrome, --no-chrome | Включить или выключить интеграцию с Chrome. |
--ide | Автоматически подключаться к IDE, если подходящая ровно одна. |
Оба списка инструментов принимают перечисление и через запятую, и через пробел. С -p серверы из --mcp-config ожидаются до первого хода, но не дольше таймаута старта; некорректная запись пропускается, а работа продолжается и завершается штатно — то есть проверять в CI надо не код возврата, а список ошибок серверов в первом событии потока.
Настройки, промпт, прочее
| Флаг | Что делает |
|---|---|
--settings <файл-или-json> | Дополнительные настройки: путь к файлу или строка JSON. |
--setting-sources <источники> | Какие слои настроек грузить: user, project, local. |
--system-prompt <промпт> | Полностью заменить системный промпт. |
--system-prompt-file <путь> | [нет в справке] То же, но из файла. |
--append-system-prompt <промпт> | Дописать к системному промпту. |
--append-system-prompt-file <путь> | [нет в справке] То же, но из файла. |
--append-subagent-system-prompt <текст> | [нет в справке] Дописать к системному промпту каждого субагента. |
--exclude-dynamic-system-prompt-sections | Вынести машинозависимые куски в первое пользовательское сообщение — лучше переиспользуется кэш. |
--autocompact <auto|токены> | Порог автосжатия. |
--betas <беты...> | Beta-заголовки в запросах. |
--init | [нет в справке] Выполнить хуки инициализации перед сессией. Только с -p. |
--init-only | [нет в справке] Выполнить хуки старта и выйти, не начиная разговор. |
--maintenance | [нет в справке] Выполнить хуки обслуживания. Только с -p. |
--file <id:путь ...> | Скачать файловые ресурсы на старте. |
--prompt-suggestions [вкл] | Подсказки следующего промпта. |
--brief | Включить инструмент общения агента с пользователем. |
-d, --debug [фильтр] | Отладочный режим с фильтром категорий. |
--debug-file <путь> | Писать отладочный лог в файл. |
-v, --version | Версия. |
-h, --help | Справка. |
claude --settings '{"disableAllHooks": true}' -p "..." # запуск без хуков репозиторияclaude --setting-sources user -p "..." # игнорировать настройки проектаclaude --append-system-prompt-file ./team-rules.mdclaude --append-subagent-system-prompt "всегда указывай пути к файлам"claude --init-only # прогреть контейнер и выйтиclaude -d "api,hooks" # отладка по категориямclaude -d "!1p,!file" --debug-file ./claude.log # всё, кроме этих категорийПро --init-only стоит сказать отдельно: это естественный способ прогреть контейнер или рабочую папку в CI — выполняются хуки установки и старта сессии, после чего процесс завершается, не начиная разговора.
И про расхождение, которое стоит запомнить, если пишете скрипты по документации: -v в сборке 2.1.251 — это --version, хотя документация утверждает, что это короткая форма --verbose. Проверьте на своей версии, прежде чем полагаться.
Чего нет ни в какой документации
Оговорка на будущее: раз этих вещей нет в документации, никто не обещал их сохранять. Строить на них автоматизацию — осознанный риск.
Полтора десятка команд для артефактов. В официальном справочнике из этой группы есть только /artifacts, /design, /design-login и /design-sync. Всё остальное — /prototype, /doc, /plan-artifact, /artifact-pr-review, /artifact-dashboard, /artifact-report, /artifact-data-table, /artifact-explainer, /artifact-components, /artifact-design, /artifact-diagramming, /artifact-capabilities — не упоминается нигде. Туда же /whiteboard, /whiteboard-mp и /workshop.
Семь подкоманд /design. Официально это одна команда, принимающая описание дизайна. В бинарнике она понимает sync, login, consent, revoke, import, export и status.
Диагностика собственного расхода. /skill-doctor, показывающий неиспользуемые навыки, и /explain-usage, объясняющий расход человеческим языком, не документированы ни один, ни другой. Как и /plugin-types, генерирующий типы подключённых MCP-инструментов.
Ещё пять команд повседневного обихода. /brief — режим коротких ответов. /daemon — управление фоновыми службами. /cloud-plugins — плагины в облачных сессиях. /session (алиас /remote) — адрес удалённой сессии и QR-код к ней; в справочнике есть /remote-control и /teleport, а этой строки нет. И /install, ставящий нативную сборку прямо из сессии.
Встроенные навыки, которыми пользуются все. /commit, /pr, /update-config, /claude-code-docs, /claude-in-chrome не описаны ни в справочнике команд, ни в разделе про встроенные навыки. Единственное косвенное упоминание в чейнджлоге — исправление ошибки, где агент звал несуществующий навык коммита.
Команды, выключенные в этой сборке. /version, /update, /loops, /wellbeing со всеми алиасами и /pause-memory — зарегистрированы, но не работают. Ни одна из них не упомянута в чейнджлоге ни как убранная, ни как добавленная: /version, /wellbeing и /pause-memory не встречаются там вообще ни разу за всю историю, а упоминания /update — это исправления ошибок, где она ещё работает.
Команды, появляющиеся по состоянию. /limit-reset, /low-priority, /pro-trial-expired, /design-consent, /design-revoke и относящаяся к режиму Cowork /setup-cowork. Документация признаёт ровно одну скрытую команду — снятие дампа памяти — и отдельно упоминает, что настройка провайдеров появляется вместе с переменной окружения. Про эти шесть нет ничего.
Внутренние входы и навыки только для модели. __remote-workflow и workflow-launch-exec, через которые сервер передаёт сессии готовый воркфлоу. И три навыка, которые агент подтягивает сам, а набрать их нельзя: keybindings-help, memory-types, cowork-plugin. Механизм — поле user-invocable: false — описан, а сами навыки нет.
Устройство /code-review изнутри. Документация описывает уровни качественно. Сколько там независимых углов поиска, сколько кандидатов на угол и какой потолок находок на каждом уровне, а также то, что на Opus 5 средний и высокий уровни сейчас сводятся к одному проходу, — этого нет нигде. Как и трёх правил разбора аргументов, из-за которых ultra работает только первым словом.
Форма /sandbox exclude "шаблон". Официальная строка про эту команду — одно предложение: переключить режим песочницы. Про вывод отдельных команд из-под изоляции и про подкоманду доустановки на Windows не сказано.
Алиас /name у команды /rename. Строка про саму команду в справочнике необычно подробная — с санитизацией имени и лимитом длины, — но алиаса в ней нет.
Флаг --file. Скачивание файловых ресурсов на старте в перечне флагов отсутствует.
Восемь ключей настроек. По ним нет ни строчки ни в документации, ни в чейнджлоге, ни в опубликованной схеме: doneMeansMerged — «готово значит смержено»; breakReminder и quietHours — напоминания о перерывах и тихие часы (в поиске находится статья про потребительское приложение Claude, но это другое и без ключей настроек); precomputeCompactionEnabled; daemonColdStart; defaultView; autoUploadSessions; showMessageTimestamps. Плюс xaaIdp вместе с включающей его переменной, syncClaudeAiPlugins — при том что его брат syncClaudeAiSkills документирован, — и proxyAuthHelper.
Ключи, которые есть только в опубликованной схеме. sandbox.enabledPlatforms, skippedMarketplaces и skippedPlugins — ноль упоминаний в документации и чейнджлоге, схема остаётся их единственным публичным следом.
Восемь переменных окружения. Официальная страница перечисляет триста сорок девять штук, и этих среди них нет: CLAUDE_CODE_GOAL_CHECKIN_MINUTES, CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS, CLAUDE_CODE_DISABLE_AGENT_VIEW, CLAUDE_CODE_DISABLE_WORKFLOWS, CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING, CLAUDE_CODE_DISABLE_CLAUDE_MDS, CLAUDE_CODE_SHELL вместе с CLAUDE_CODE_SHELL_PREFIX и USE_BUILTIN_RIPGREP. Для части из них есть документированные соседи с другими именами и слегка другим смыслом — например для отключения размышлений или для переключения поиска файлов, — но это не они.
Подкоманда claude plugin eval. Прогон проверочных случаев против плагина: в справочнике по плагинам перечислены десять подкоманд, и этой среди них нет.
И отсутствие того, чего нет. Команды /init-verifiers не существует, /alias не является слэш-командой, а файла .claudeignore нет вовсе. Про несуществующее документация, естественно, молчит — а статьи в интернете нет.
Отдельно стоит сказать про число. В официальном справочнике сто одиннадцать строк, и там честно написано, что не каждая команда доступна каждому. Сколько их зарегистрировано всего, не публикуется; в сборке 2.1.251 получается около полутора сотен вместе с навыками. Community-шпаргалки называют то двести семьдесят два (считая заодно флаги командной строки), то около семидесяти — и обе цифры ни на чём не основаны.
С чего начать, если всё это видишь впервые
Таблиц много, и первое желание — закрыть страницу. Поэтому короткий практический минимум: что стоит настроить в первый день, а к чему возвращаться по мере надобности.
Сразу, в пользовательском файле. Права инструментов: без них вас будут спрашивать про каждую сборку и каждый git status, и через час вы начнёте жать «разрешить» не читая — а это ровно та привычка, из-за которой потом что-нибудь удаляется. Строку состояния: постоянно видимые расход и заполненность контекста меняют поведение сильнее любых благих намерений. И cleanupPeriodDays побольше, если собираетесь когда-нибудь искать старый разговор или откатываться к контрольной точке.
В проекте, коммитом в репозиторий. Разрешения на команды именно этого проекта, хуки, которые держат инварианты, и .mcp.json с серверами, нужными всей команде.
На потом. Песочница, самостоятельно размещаемые окружения, корпоративные ключи. Они решают задачи, которых у вас, скорее всего, пока нет; а раздел про песочницу стоит прочитать ровно в тот день, когда вы впервые запускаете агента с обходом подтверждений.
Файл, с которого нормально начать:
{ "$schema": "https://json.schemastore.org/claude-code-settings.json", "cleanupPeriodDays": 365, "fileCheckpointingEnabled": true, "permissions": { "allow": [ "Bash(git status)", "Bash(git diff:*)", "Bash(git log:*)", "Bash(npm run build)", "Bash(npm test:*)" ], "ask": ["Bash(git push:*)"], "deny": ["Read(./.env)", "Read(./.secrets/**)"] }, "statusLine": { "type": "command", "command": "~/.claude/statusline.sh" }}Пять разрешений — это уже заметно меньше вопросов. Один запрет на файл с секретами — потому что запрет побеждает разрешение, и это самый дешёвый способ сделать так, чтобы содержимое .env никогда не уехало в контекст. Контрольные точки включены явно: без них /rewind не вернёт ни одного файла, а понимаешь это обычно в неподходящий момент.
Источники
Всё, на чём статья держится, — со ссылками. Документация Claude Code живёт на code.claude.com/docs; старые адреса на docs.claude.com туда редиректят, так что закладки годичной давности ведут не туда, куда вы привыкли.
| О чём в статье | Страница документации |
|---|---|
| Слэш-команды: список, аргументы, версии | commands |
| Горячие клавиши и поведение поля ввода | interactive-mode |
| Ревью: уровни, флаги, цель | code-review |
| Облачное ревью: лимиты диффа и цена | ultrareview |
| Правила прав: синтаксис, якоря путей, защищённые пути | permissions |
Режимы прав, включая dontAsk | permission-modes |
| Настройки: где лежат и кто кого перекрывает | settings |
| Каждый ключ настроек по отдельности | settings-reference |
| Корпоративные настройки и источники политики | managed-settings |
| Переменные окружения — все 349 | env-vars |
| Телеметрия, метрики и события | monitoring-usage |
| Хуки: события, коды выхода, матчеры | hooks |
| Терминальные подкоманды и флаги запуска | cli-reference |
| Неинтерактивный режим и форматы вывода | headless |
| MCP: транспорты, области, таймауты | mcp |
Навыки и формат SKILL.md | skills |
| Субагенты и их frontmatter | sub-agents |
| Плагины, манифест и маркетплейсы | plugins-reference |
Память проекта и CLAUDE.md | memory |
| Песочница: файлы, сеть, секреты | sandboxing |
Контрольные точки и /rewind | checkpointing |
| Лимиты тарифа, кредиты, стоимость | costs |
| Fast-режим и то, чем он оплачивается | fast-mode |
| Модели, алиасы и кредитные варианты | model-config |
| Советчик | advisor |
| Задачи по расписанию | routines |
| Авто-режим и его правила | auto-mode-config |
| Экран фоновых агентов | agent-view |
| Строка состояния | statusline |
| Свои окружения для облачных сессий | self-hosted-environments-reference |
| Ревью в GitHub Actions | github-actions |
| Тексты ошибок и предупреждений | errors |
| Из чего складывается заполнение контекста | context-window |
Два источника — не документация, и без них половины статьи не было бы. Список изменений в репозитории anthropics/claude-code — единственное место, где написано, что и в какой версии убрали или переименовали; отдельной страницы с заметками о выпуске у продукта больше нет. Схема настроек знает ключи, которых нет в документации, — правда, и отстаёт от продукта: в ней до сих пор лежит ключ, убранный в 2.1.234.
Дословный вывод команд искался по всему корпусу документации одним файлом — так проще, чем обходить сто девяносто страниц по одной.
И третий источник — сама установленная программа. Списки команд, ключей настроек и флагов сняты с неё, а не с документации: там их больше, и местами они расходятся. Всё, что можно было проверить запуском, проверено запуском.