---
title: "Claude Code — команди, налаштування, прапорці"
url: "https://romankryvolapov.com/uk/claude-code-commands-and-settings/"
description: "Довідник Claude Code: усі слеш-команди з розбором аргументів і прикладами, ключі settings.json, правила прав доступу, термінальні підкоманди, прапорці та змінні оточення. Актуально на серпень 2026."
language: uk
updated: 2026-08-31
---
**Привіт!**

Це довідник. Не розповідь про те, як правильно працювати з агентом — про це в мене є [окрема стаття](/uk/claude-code-best-practices/), — а перелік: що можна набрати, що можна написати в налаштуваннях, що з цього що робить і як це виглядає на практиці.

**Актуальність: серпень 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 Usage
Opus 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 за репозиторієм
```

```bash
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` у промпті теж спрацює. Якщо це заважає — лишити команду доступною для ручного набору, але заборонити агентові й розкладу її запускати:

```json title=".claude/settings.json"
{
  "skillOverrides": { "code-review": "user-invocable-only" }
}
```

Хмарний режим — виняток: **`ultra` агент не запускає ніколи**, ні сам, ні за розкладом.

**Порядок аргументів.** Три правила, через які виклик спрацьовує не так, як очікувалося:

1. `ultra` розпізнається лише першим словом. `/code-review ultra --fix` — хмарне рев'ю, а `/code-review --fix ultra` — звичайне локальне, у якому слово `ultra` зрозуміле як ціль.
2. Рівень — перше слово після того, як із рядка прибрані прапорці. Тому `/code-review --fix high` працює, і рівень буде `high`.
3. Прапорці можна ставити де завгодно: на початку, у кінці, між рівнем і ціллю. Єдиний виняток — правило 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 хмарне рев'ю запускається неінтерактивно:

```bash
claude -p '/code-review ultra'
```

Команда стартує рев'ю, друкує посилання для відстеження і не чекає результату. Але якщо рев'ю має списати кредити, запуск зупиниться: підтвердження оплати потребує інтерактивної сесії. Для такого випадку є окрема підкоманда, сам факт запуску якої вважається вашою згодою на списання:

```bash
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                                   # ліміти, витрата, розбивка
# вивід цілком, як його навів автор звіту про помилку
Session
Total cost:            $86.94
Total duration (API):  1h 31m 17s
Total duration (wall): 1d 22h 35m
Total code changes:    2538 lines added, 312 lines removed
Usage 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.199
Session ID: 352ea81c-819d-4028-bba5-daef515d0815
Login 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` теж спрацює, якщо ім'я більше ніким не зайняте.

Найпростіший приклад:

```markdown title=".claude/skills/fix-issue/SKILL.md"
---
name: fix-issue
description: Розібрати 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}`.

Те, що вони працюють в обох місцях, — не дрібниця, а робочий прийом: так навичка запускає власний скрипт без жодного питання про права.

```markdown title=".claude/skills/render/SKILL.md"
---
name: render
description: Намалювати схему з вихідника
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`:

```json title=".claude/settings.json"
{
  "$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` — вкладені об'єкти.

```json title=".claude/settings.json"
{
  "$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)`.

```json title=".claude/settings.json"
{
  "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`, буде заблокований.

#### Правила за параметрами інструмента

Маловідома родина. Заборонні правила та правила з підтвердженням уміють збігатися за скалярним полем вхідних даних інструмента:

```json title=".claude/settings.json"
{
  "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, тепер ні.

Подивитися й розібрати конфігурацію можна з термінала:

```bash
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`.

### Хуки

Хуки — тема на окрему статтю, і вона [в мене є](/uk/claude-code-hooks/): там розібрані всі події, формати обміну і робочі приклади. Тут — ключі налаштувань і те, що найчастіше ламається.

`hooks` — об'єкт вигляду «подія → масив матчерів». У матчера є фільтр `matcher` і список обробників.

```json title=".claude/settings.json"
{
  "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 не готовий до злиття. |

```json title=".claude/settings.json"
{
  "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 сам.

```json title=".claude/settings.json"
{
  "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 його поки не читає.** |

```json title=".claude/settings.json"
{
  "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` є важливий побічний ефект: усередині повної віртуальної машини **немає ні політики пристрою, ні файлу корпоративних налаштувань** — доставляти їх туди доведеться інакше.

```json title=".claude/settings.json"
{
  "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` | об'єкт | **[експ]** Тихі години: один м'який натяк за сесію всередині заданого вікна місцевого часу. |

```json title=".claude/settings.json"
{
  "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` зупинить запуск.

```json title=".claude/settings.json"
{
  "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`, яку ніде не зібрано в одному місці.

```json title=".claude/settings.json"
{
  "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`: там відповідь друкується один раз, і процес завершується.

Відкривається та сама стартова заставка: версія, акаунт і модель, поточна тека, підказки та нещодавня активність. З промптом в аргументі вона теж показується, але введення ніхто не чекає — перший хід починається одразу.

```bash
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 списують мовчки.

На екрані з'являється лише сама відповідь: ані заставки, ані рядка введення в цьому режимі немає.

```bash
claude -p "що робить цей скрипт?"         # відповісти й вийти
```

#### `claude auth login|logout|status`

Вхід, вихід і статус авторизації. Статус друкується в JSON — цим зручно перевіряти в скрипті, що машина взагалі залогінена, перш ніж щось на ній запускати. Частина можливостей зав'язана не на ключ API, а саме на вхід в акаунт claude.ai, тож розбір незрозумілого «функція недоступна» розумно починати звідси.

Вхід пропонує обрати, яким рахунком платити: передплатою claude.ai чи білінгом Console. Прапорець `--console` обирає друге одразу, без запитання. Далі відкривається браузер і чекає підтвердження; `logout` видаляє збережені облікові дані з машини.

```bash
claude auth login --console               # вхід через білінг Console

claude auth status                        # статус авторизації в JSON

claude auth logout                        # вийти
```

#### `claude setup-token`

Випустити довгоживучий токен авторизації. **[не на всіх тарифах]** Потрібна передплата. Токен потрібен там, де інтерактивно увійти не можна — сервер збірки, контейнер, CI: його кладуть у змінну оточення, і `claude -p` працює без браузера та без людини.

Вхід підтверджується в браузері, після чого токен друкується в термінал — звідти його й переносять в оточення машини збірки.

```bash
claude setup-token                        # довгоживучий токен для CI
```

#### `claude agents`

Екран керування фоновими агентами; він же їх запускач. Фоновий агент — це сесія, яка живе окремо від вашого термінала: ви ставите задачу, закриваєте вікно й повертаєтеся по результат. На цьому екрані видно, що запущено, що закінчилося і що впало; усе те саме доступне окремими підкомандами (`attach`, `logs`, `stop`, `rm`), екран просто збирає їх в одному місці.

Обираєте зі списку потрібну сесію, а далі — що з нею зробити: відкрити в себе в терміналі, подивитися вивід, зупинити або видалити разом із робочою копією. Тримайте на думці, що кожна фонова сесія витрачає ліміт тарифу як звичайна: п'ятеро агентів, які працюють одночасно, з'їдають його вп'ятеро швидше.

```bash
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 more
```

#### `claude attach <id>`

Відкрити фонову сесію в цьому терміналі. Ви отримуєте її розмову цілком і продовжуєте роботу так, ніби запустили її тут. Потрібно, коли агент уперся в запитання або пішов не туди й далі простіше вести його руками. Ідентифікатор беруть із `claude agents` або з виводу при запуску.

```bash
claude attach a1b2c3                      # підключитися до фонової сесії
```

#### `claude logs <id>`

Надрукувати останній вивід фонової сесії й вийти. Швидкий спосіб зрозуміти, чим агент зайнятий, не забираючи його собі й не заважаючи йому працювати. Зручно смикати зі скрипта, коли треба дочекатися результату або просто переконатися, що робота йде.

```bash
claude logs a1b2c3                        # останній вивід фонової сесії
```

#### `claude stop <id>`

Зупинити фонову сесію; розмова зберігається. Аліас: `kill`. Це не видалення: сесія перестає працювати й витрачати ліміт, але її вивід і робоча копія лишаються на місці, і подивитися їх можна. Якщо сесія потрібна не зупиненою, а прибраною зовсім — це `claude rm`.

```bash
claude stop a1b2c3                        # зупинити
```

#### `claude respawn [id]`

Перезапустити фонову сесію або всі на поточній версії. Сенс у тому, що вже запущені агенти продовжують крутитися на тій версії, з якої стартували, і оновлення Claude Code до них саме не приїжджає. Окрему сесію перезапускають за ідентифікатором, `--all` — усі разом.

```bash
claude respawn --all                      # перезапустити всі на новій версії
```

#### `claude rm <id>`

Видалити фонову сесію та її робочу копію. На відміну від `stop`, це незворотно: зникає і розмова, і окрема тека, в якій агент працював, разом з усім, що ви з неї не забрали в гілку. Прибирати сесії, що закінчилися, корисно — інакше список заростає, а робочі копії займають місце.

Якщо в робочій копії лишилися коміти, яких більше ніде немає, команда відмовиться її чіпати й скаже, що лишила все як є.

```bash
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` запустить інтерактивну сесію** замість підкоманди. Ставте підкоманду першою.

```bash
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` не завершується — процес лишається в роботі й говорить стандартним введенням-виведенням.

```bash
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.252
Checking MCP server health…

claude.ai Google Drive: https://drivemcp.googleapis.com/mcp/v1 - ✔ Connected
serena: 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` те саме приходить машиночитним, для розбору в скрипті.

```bash
claude plugin install code-review@claude-plugins-official   # поставити з маркетплейсу

claude plugin list --json                # що встановлено, машиночитно

# знято на збірці 2.1.252, без --json
Installed 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` вирізає звідти одне правило цілком.

```bash
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`.

```bash
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 touched
backups/ may still contain this project entry in old .claude.json snapshots (/home/user/.claude/backups); at most 5 are kept and they rotate out automatically
Dry run: 3 item(s) would be deleted.
```

#### `claude doctor`

Діагностика встановлення без запуску сесії та без правок. Проганяє набір перевірок щодо того, як Claude Code встановлено і в якому стані його оточення, і друкує результат по рядках. Сама вона нічого не лагодить: це діагноз, а не лікування. З неї розумно починати будь-який розбір «чому не працює», перш ніж міняти налаштування навмання.

```bash
claude doctor                             # діагностика без правок

# знято на збірці 2.1.252
Claude Code doctor

Running: native (2.1.252)
Commit: c0778c45886d
Platform: win32-x64
Path: C:\Users\user\.local\bin\claude.exe
Config install method: native
Search: OK (bundled)
Auto-updates: enabled
Auto-update channel: latest
Last update attempt: success → 2.1.252 (2026-08-31)
Managed settings (remote): not fetched — requires an Enterprise or Team subscription

Remote Control
Control 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` показує, що саме перенеслося б, нічого при цьому не змінюючи, — з нього варто почати, якщо в поточній конфігурації вже є що втрачати.

```bash
claude import codex --dry-run             # що перенеслося б з іншого агента
```

#### `claude install [версія]`

Поставити нативну збірку: `stable`, `latest` або конкретну версію. Нативна — це окремий бінарник замість пакета з npm, і він уміє оновлюватися сам. Аргумент обирає, що саме ставиться: `stable` — перевірений канал, `latest` — найсвіжіший, а точний номер закріплює версію намертво, як і роблять на машинах збірки, де поведінка має бути однаковою сьогодні й за місяць.

```bash
claude install stable                     # поставити стабільну збірку
```

#### `claude update`

Перевірити оновлення й поставити. Аліас: `upgrade`. Нативна збірка оновлюється й сама, тому руками команду кличуть, коли свіжа версія потрібна прямо зараз — наприклад заради можливості з конкретного випуску. Уже запущені фонові сесії оновлення не підхоплять: їх після цього перезапускають через `claude respawn --all`.

Починається все з поточної версії та перевірки каналу, а далі — або встановлення, або повідомлення про те, що завантажити не вдалося.

```bash
claude update                             # оновитися

# перші рядки справжнього виводу; у тому прогоні далі прийшла помилка завантаження
Current version: 2.1.241
Checking 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 команда недоступна.

Розбір іде не на вашій машині: зміни йдуть у хмарну сесію, де кілька агентів працюють над ними паралельно, і в термінал повертається вже готовий список знахідок. Прогін зараховується з моменту, коли хмарна сесія стартувала: зупинене на півдорозі рев'ю безкоштовний прогін усе одно витратить, а платне спише тільки за відпрацьовану частину. Згоду на списання кредитів питають один раз за розмову.

```bash
claude ultrareview                        # знахідки друкуються просто в термінал
```

#### `claude gateway`

Запустити корпоративний шлюз авторизації та телеметрії. Через нього розробники ходять в API не напряму: облікові дані лишаються на шлюзі, а він же збирає статистику використання — так ключі не розходяться по машинах і видно, хто й скільки витрачає. Конфігурація задається окремим файлом через прапорець. Річ суто корпоративна, поодинці вона не потрібна.

Команда не завершується: це сервер, який лишається в роботі, доки його не зупинять.

```bash
claude gateway --config gateway.yaml      # корпоративний шлюз
```

#### `claude remote-control`

**Прихована:** тримати віддалене керування як сервер. Аліас: `rc`. Машина при цьому лишається на зв'язку, і до її сесії можна підключитися з іншого пристрою, не підходячи до самого комп'ютера. Процес не завершується сам — він живе, доки ви його не зупините, а `--continue` підхоплює останню сесію керування замість нової. **[не на всіх тарифах]** Потрібен вхід в акаунт claude.ai — з ключем API віддалене керування не працює.

```bash
claude remote-control --continue          # повернутися в останню сесію керування
```

#### `claude self-hosted-runner`

**Прихована:** перетворити машину або контейнер на майданчик, де виконуються веб-, мобільні та desktop-сесії. **[не на всіх тарифах]** Це публічна бета для Team і Enterprise, за замовчуванням вимкнена: власник організації має дозволити самостійно розміщувані оточення, в організації має бути увімкнений веб-Claude Code, а із Zero Data Retention це не працює. Окремої плати за такий майданчик немає — залізо ваше, а сесії на ньому витрачають той самий ліміт організації, що й сесії на інфраструктурі Anthropic.

У неї є підкоманда `setup` та окремий оркестратор, який піднімає виконавців у міру накопичення черги, а прапорців близько двадцяти: адреса API, файл секрета оточення, тека хуків, порт перевірки здоров'я, ємність, тайм-аути зливу та зупинки, час життя виконавця, що простоює, мітка клієнта. Усе це описано в окремому довіднику щодо самостійно розміщуваних оточень — усупереч поширеній думці, що підкоманда недокументована.

```bash
claude self-hosted-runner setup           # підготувати машину як майданчик
```

### Встановлення та оновлення

Способів більше, ніж `npm install`, і це варто знати, тому що нативна збірка оновлюється сама, а пакет із npm — ні.

```bash
# macOS, Linux, WSL — нативний інсталятор
curl -fsSL https://claude.ai/install.sh | bash
curl -fsSL https://claude.ai/install.sh | bash -s stable     # закріпити канал
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.236    # закріпити версію

# Windows
irm https://claude.ai/install.ps1 | iex                      # PowerShell
winget 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`. |

```bash
claude -c                                # продовжити останню розмову
claude -r                                # вибрати зі списку
claude -r 8f3c1d2e --fork-session        # продовжити копією, оригінал не чіпаючи
claude -n "рефакторинг оплати"            # запустити з ім'ям
claude --from-pr 1234                    # сесія за pull request
claude --bg "прожени весь тест-сьют"      # фоном, поверне id
claude --bg --exec 'pytest -x'           # фонова задача взагалі без сесії
claude -w feature-x                      # своя робоча копія під сесію
claude -w feature-x --tmux               # вона ж у tmux
claude --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` | Перекрити відповідне налаштування з файлу. |

```bash
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_tool
cat diff.patch | claude -p "оціни ризик цих змін"
```

Два прапорці тут — найкорисніші й водночас відсутні в довідці. `--max-turns` обмежує кількість ходів із викликом інструментів; коли стеля досягнута, запуск завершується з відповідною ознакою в результаті, і саме його офіційно радять як основний важіль контролю вартості в CI. `--permission-prompt-tool` називає MCP-інструмент, який відповідатиме на запити дозволів замість людини, — єдиний спосіб отримати логіку схвалення в неінтерактивному запуску.

#### Що треба знати про неінтерактивний режим

**Слеш-команди в ньому працюють.** Власні навички та команди підставляються прямо в текст промпта. Термінальних вбудованих на кшталт `/login` там немає, але `/model`, `/effort`, `/fast`, `/color` і `/rename` приймають значення аргументом, а `/mcp` без аргументу друкує текстове зведення про сервери. Налаштування змінюють через `/config ключ=значення`.

```bash
claude -p "/model sonnet /code-review low"
claude -p "/config thinking=false розкажи, що робить цей модуль"
```

**Формат `json` віддає помітно більше, ніж текст відповіді.** Ось справжня відповідь на тривіальний запит, знята зі збірки 2.1.252 і скорочена — викинуто лише повторювані лічильники:

```json
{
  "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` | Мінімальний режим для скриптів. |

```bash
claude --model haiku -p "перелічи змінені файли"
claude --effort xhigh                    # сесія з глибокими роздумами
claude --effort ultracode                # одразу з оркеструванням воркфлоу
claude --advisor opus                    # підключити радника
claude --permission-mode plan            # стартувати в режимі планування
claude --permission-mode acceptEdits     # автоматично приймати правки
claude --safe-mode                       # без хуків, навичок, плагінів і MCP
claude --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` | Довідка. |

```bash
claude --settings '{"disableAllHooks": true}' -p "..."   # запуск без хуків репозиторію
claude --setting-sources user -p "..."                   # ігнорувати налаштування проєкту
claude --append-system-prompt-file ./team-rules.md
claude --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` із серверами, потрібними всій команді.

**На потім.** Пісочниця, самостійно розміщувані середовища, корпоративні ключі. Вони розв'язують задачі, яких у вас, найімовірніше, поки що немає; а розділ про пісочницю варто прочитати рівно того дня, коли ви вперше запускаєте агента з обходом підтверджень.

Файл, з якого нормально почати:

```json title="~/.claude/settings.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](https://code.claude.com/docs/en/commands) |
| Гарячі клавіші та поведінка поля вводу | [interactive-mode](https://code.claude.com/docs/en/interactive-mode) |
| Ревʼю: рівні, прапорці, ціль | [code-review](https://code.claude.com/docs/en/code-review) |
| Хмарне ревʼю: ліміти дифу та ціна | [ultrareview](https://code.claude.com/docs/en/ultrareview) |
| Правила дозволів: синтаксис, якорі шляхів, захищені шляхи | [permissions](https://code.claude.com/docs/en/permissions) |
| Режими дозволів, зокрема `dontAsk` | [permission-modes](https://code.claude.com/docs/en/permission-modes) |
| Налаштування: де лежать і що що перекриває | [settings](https://code.claude.com/docs/en/settings) |
| Кожен ключ налаштувань окремо | [settings-reference](https://code.claude.com/docs/en/settings-reference) |
| Корпоративні налаштування та джерела політики | [managed-settings](https://code.claude.com/docs/en/managed-settings) |
| Змінні оточення — усі 349 | [env-vars](https://code.claude.com/docs/en/env-vars) |
| Телеметрія, метрики та події | [monitoring-usage](https://code.claude.com/docs/en/monitoring-usage) |
| Хуки: події, коди виходу, матчери | [hooks](https://code.claude.com/docs/en/hooks) |
| Термінальні підкоманди та прапорці запуску | [cli-reference](https://code.claude.com/docs/en/cli-reference) |
| Неінтерактивний режим і формати виводу | [headless](https://code.claude.com/docs/en/headless) |
| MCP: транспорти, області, таймаути | [mcp](https://code.claude.com/docs/en/mcp) |
| Навички та формат `SKILL.md` | [skills](https://code.claude.com/docs/en/skills) |
| Підагенти та їхній frontmatter | [sub-agents](https://code.claude.com/docs/en/sub-agents) |
| Плагіни, маніфест і маркетплейси | [plugins-reference](https://code.claude.com/docs/en/plugins-reference) |
| Памʼять проєкту та `CLAUDE.md` | [memory](https://code.claude.com/docs/en/memory) |
| Пісочниця: файли, мережа, секрети | [sandboxing](https://code.claude.com/docs/en/sandboxing) |
| Контрольні точки та `/rewind` | [checkpointing](https://code.claude.com/docs/en/checkpointing) |
| Ліміти тарифу, кредити, вартість | [costs](https://code.claude.com/docs/en/costs) |
| Fast-режим і те, чим він оплачується | [fast-mode](https://code.claude.com/docs/en/fast-mode) |
| Моделі, аліаси та кредитні варіанти | [model-config](https://code.claude.com/docs/en/model-config) |
| Радник | [advisor](https://code.claude.com/docs/en/advisor) |
| Завдання за розкладом | [routines](https://code.claude.com/docs/en/routines) |
| Авто-режим і його правила | [auto-mode-config](https://code.claude.com/docs/en/auto-mode-config) |
| Екран фонових агентів | [agent-view](https://code.claude.com/docs/en/agent-view) |
| Рядок стану | [statusline](https://code.claude.com/docs/en/statusline) |
| Власні оточення для хмарних сесій | [self-hosted-environments-reference](https://code.claude.com/docs/en/self-hosted-environments-reference) |
| Ревʼю в GitHub Actions | [github-actions](https://code.claude.com/docs/en/github-actions) |
| Тексти помилок і попереджень | [errors](https://code.claude.com/docs/en/errors) |
| З чого складається заповнення контексту | [context-window](https://code.claude.com/docs/en/context-window) |

Два джерела — не документація, і без них половини статті не було б. [Список змін](https://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.md) у репозиторії `anthropics/claude-code` — єдине місце, де написано, що і в якій версії прибрали або перейменували; окремої сторінки з нотатками про випуск продукт більше не має. [Схема налаштувань](https://www.schemastore.org/claude-code-settings.json) знає ключі, яких немає в документації, — щоправда, і відстає від продукту: у ній досі лежить ключ, прибраний у 2.1.234.

Дослівний вивід команд шукався по [всьому корпусу документації одним файлом](https://code.claude.com/docs/llms-full.txt) — так простіше, ніж обходити сто девʼяносто сторінок по одній.

І третє джерело — сама встановлена програма. Списки команд, ключів налаштувань і прапорців зняті з неї, а не з документації: там їх більше, і подекуди вони розходяться. Усе, що можна було перевірити запуском, перевірено запуском.
