# Авто-Одобрение

Источник: https://docs.kodik.ru/agent/auto-approve

Меню Авто-Одобрения позволяет устанавливать детализированные разрешения для того, что Kodik делает в автоматическом режиме, не прерывая вас запросами. Эти настройки находятся в отдельном разделе **Auto Approve** настроек Kodik.

Авто-одобрение отвечает на вопрос «когда Kodik спрашивает разрешение?». Если нужно, чтобы агент вообще не имел какой-то возможности, управляйте инструментом в разделе **Harness** — это полностью убирает его у агента, а его переключатели автоодобрения становятся неактивными. См. [Инструменты](https://docs.kodik.ru/agent/tools).

![Image](https://docs.kodik.ru/img/image4.png)

## Как это работает

По умолчанию авто-одобрение отключено: Kodik будет запрашивать ваше подтверждение перед каждым вызовом инструмента, включая чтение или редактирование файлов. После включения авто-одобрения вы задаёте детальные разрешения — отдельно для файлов внутри рабочего пространства и за его пределами.

## Режимы одобрения

Переключатель **Режим подтверждений** (`mode`) выбирает один из трёх уровней:

- **Стандартные подтверждения** (`default`) — без запроса выполняются только включённые ниже гранулярные разрешения и шаблоны команд; список заблокированных (см. ниже) всегда имеет приоритет. Всё остальное требует подтверждения.
- **Автопилот** (`autopilot`) — все действия и команды терминала выполняются автоматически. Основной ограничитель — суждение самой модели: команду, которую модель пометила как рискованную, всё ещё нужно подтвердить, и карточка одобрения показывает причину от модели (например, «Перезаписывает историю удалённого репозитория» для force-push). Команда из вашего списка заблокированных всё равно запрашивает подтверждение, даже здесь.
- **Полный доступ** (`fullAccess`) — всё выполняется без каких-либо запросов, кроме команд из вашего списка заблокированных, которые всё равно требуют подтверждения. Используйте только в изолированных одноразовых средах.

В режимах Автопилот и Полный доступ также снимается защита чувствительных файлов — агент может редактировать их без дополнительного подтверждения.

> В ранних версиях был переключатель Автопилота (`autopilotMode`). Включённый переключатель автоматически мигрирует в `mode: "autopilot"`; прежнее поведение Автопилота — отказ от команд с подстановками `$(...)` — убрано, теперь такие случаи покрывает собственная оценка риска моделью.

## Гранулярные разрешения

Каждое разрешение действует отдельно для файлов **внутри рабочего пространства** и **за его пределами** (`...Externally`).

| Разрешение                                                      | Инструмент                             | По умолчанию |
| --------------------------------------------------------------- | -------------------------------------- | ------------ |
| **Чтение файлов проекта** (`readFiles`)                         | `read_file`                            | включено     |
| **Чтение всех файлов** (`readFilesExternally`)                  | `read_file` за пределами workspace     | выключено    |
| **Просмотр файлов и директорий** (`listFiles`)                  | `glob`                                 | включено     |
| **Просмотр всех файлов** (`listFilesExternally`)                | `glob` за пределами workspace          | выключено    |
| **Поиск в файлах** (`rg`)                                       | `rg` (ripgrep)                         | включено     |
| **Поиск во всех файлах** (`rgExternally`)                       | `rg` за пределами workspace            | выключено    |
| **Получить веб-контент** (`webFetch`)                           | `web_fetch`                            | выключено    |
| **Поиск в интернете** (`webSearch`)                             | `web_search`                           | выключено    |
| **Редактирование файлов проекта** (`editFiles`)                 | `edit_file`                            | выключено    |
| **Редактирование файлов везде** (`editFilesExternally`)         | `edit_file` за пределами workspace     | выключено    |
| **Создание файлов проекта** (`createFiles`)                     | `create_file`                          | выключено    |
| **Создание файлов везде** (`createFilesExternally`)             | `create_file` за пределами workspace   | выключено    |
| **Удаление файлов проекта** (`deleteFiles`)                     | `delete_file`                          | выключено    |
| **Удаление файлов везде** (`deleteFilesExternally`)             | `delete_file` за пределами workspace   | выключено    |
| **Редактирование блокнотов** (`editNotebooks`)                  | `edit_notebook`                        | выключено    |
| **Редактирование блокнотов везде** (`editNotebooksExternally`)  | `edit_notebook` за пределами workspace | выключено    |
| **Редактирование чувствительных файлов** (`editSensitiveFiles`) | переопределяет защиту паттернов        | выключено    |
| **Создание чувствительных файлов** (`createSensitiveFiles`)     | переопределяет защиту паттернов        | выключено    |
| **Удаление чувствительных файлов** (`deleteSensitiveFiles`)     | переопределяет защиту паттернов        | выключено    |

> Разрешение `...Externally` или на работу с чувствительными файлами автоматически снимается, если соответствующее базовое разрешение выключено. При обновлении прежние разрешения на редактирование один раз копируются в новые разрешения на создание и удаление; после этого три набора настраиваются независимо.

## Шаблоны команд

Шаблоны (`commandPatterns`) позволяют одобрять отдельные команды терминала без включения Автопилота. Каждый шаблон — это паттерн с поддержкой символа `*` (например, `npm run *`, `git *`). Шаблон можно временно отключить, не удаляя его.

Команды сравниваются с шаблоном без учёта регистра; совпадение идёт с начала строки.

## Заблокированные команды

Список заблокированных (`blockedCommands`) — это **приоритетный запрет**: любая команда, совпадающая с шаблоном из этого списка, всегда требует вашего подтверждения, в **любом режиме** — Стандартные подтверждения, Автопилот и Полный доступ. Он имеет приоритет над вашими шаблонами команд, поэтому широкое разрешающее правило (например, `git *`) не сможет автоматически выполнить заблокированную вами команду (например, `git push *`). Каждый шаблон поддерживает символ `*` и проверяется для каждого сегмента цепочки команд.

**По умолчанию список пуст** — из коробки ничего не заблокировано. Добавьте команды, которые никогда не должны выполняться автоматически, в разделе Настройки → Auto Approve → Заблокированные команды. Частые варианты:

- Удаление файлов: `rm *`, `sudo rm *`, `del *`, `Remove-Item *`
- Очистка git: `git clean*`
- Уничтожение диска: `mkfs*`, `dd if=*`, `format *`
- Выключение системы: `shutdown*`, `reboot*`
- Прочее опасное: `chmod -R 777 /`, `chown -R *:* /`, `:(){:|:&};:`

## Чувствительные файлы

Kodik дополнительно защищает файлы, совпадающие с паттернами **чувствительных файлов**, даже когда операция с файлами включена (если соответствующее разрешение `editSensitiveFiles`, `createSensitiveFiles` или `deleteSensitiveFiles` не активировано явно). По умолчанию под защитой находятся:

- Секреты и переменные среды: `**/.env`, `**/.env.*`, `**/secrets.*`, `**/secret.*`, `**/*secret*`, `**/*password*`, `**/*credentials*`
- Файлы блокировки пакетов: `**/package.json`, `**/package-lock.json`, `**/yarn.lock`, `**/pnpm-lock.yaml`, `**/composer.lock`, `**/Gemfile.lock`, `**/Pipfile.lock`, `**/poetry.lock`, `**/cargo.lock`
- Конфигурационные файлы: `**/*.config.js/ts/mjs/cjs/json`, `**/tsconfig.json`, `**/jsconfig.json`, `**/babel.config.*`, `**/webpack.config.*`, `**/vite.config.*`, `**/rollup.config.*`, `**/.eslintrc.*`, `**/.prettierrc.*`
- Git-файлы: `**/.gitignore`, `**/.gitattributes`, `**/.gitmodules`, `**/.git/**`
- Docker и деплой: `**/Dockerfile`, `**/docker-compose.yml/yaml`, `**/.dockerignore`, `**/kubernetes/**/*.yaml`
- CI/CD: `**/.github/workflows/**`, `**/.gitlab-ci.yml`, `**/.circleci/**`, `**/.travis.yml`, `**/azure-pipelines.yml`, `**/Jenkinsfile`
- Файлы IDE: `**/.vscode/**`, `**/.idea/**`, `**/.vs/**`
- Миграции БД: `**/migrations/**`, `**/migrate/**`
- Все dotfiles: `**/.*`

Список можно расширить или сократить в настройках.

## Управление конфигурацией Kodik

Kodik всегда может читать собственные конфигурационные файлы (навыки, команды, правила, хуки, подагенты) без каких-либо разрешений авто-одобрения — это не зависит от ваших настроек.

## Лучшие практики

Для большинства рабочих процессов рекомендуется начинать с консервативного набора:

- Авто-одобрить чтение файлов проекта (`readFiles`, `listFiles`, `rg`)
- Установить лимит запросов 10–20
- Оставить редактирование и Автопилот выключенными

По мере роста доверия к агенту можно постепенно добавлять разрешения. Для критической производственной работы стоит ужесточить настройки; для прототипирования в изолированной среде — допустимо включить Автопилот.
