# Настройка GitHub Copilot CLI

Настройте доверенные каталоги, доступ к инструментам, а также права на пути и URL Copilot CLI

## Введение

Copilot CLI Имеет несколько опций конфигурации, которые управляют, к чему он может получить доступ и делать от вашего имени.

В этой статье показано, как настраивать доверенные каталоги, настраивать доступ к инструментам и предоставлять права на пути и URL-адресы файлов.

### Предпосылки

* Установите Copilot CLI. См [. раздел AUTOTITLE](/ru/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli).

## Установка доверенных каталогов

Доверенные каталоги контролируют, где Copilot CLI можно читать, изменять и выполнять файлы. Доверие к каталогу имеет последствия для безопасности, см. [Вопросы безопасности](/ru/copilot/concepts/agents/copilot-cli/about-copilot-cli#security-considerations).

### Выбор доверия каталогу

Когда вы начинаете GitHub Copilot CLI сессию, вас попросят подтвердить, что вы доверяете файлам в каталоге, из которого вы запустили CLI.

Вы можете доверять текущему каталогу:

* Только запущенный сеанс
* Эти и будущие сеансы

Если вы решили доверять каталогу для будущих сеансов, запрос доверенного каталога не будет отображаться снова. Второй вариант стоит выбрать только если вы уверены, что это место всегда будет безопасным для Copilot работы.

### Редактирование доверенных каталогов

Вы можете редактировать список постоянно надёжных каталогов. Доверенные каталоги хранятся в автоматически управляемом `config.json` файле.

1. Откройте `config.json` файл CLI. По умолчанию он хранится в `.copilot` папке в вашей домашней директории:

   * **macOS/Linux**: `~/.copilot/config.json`
   * **Windows**:`$HOME\.copilot\config.json`

Вы можете изменить расположение конфигурации, установив `COPILOT_HOME` переменную окружения. Это изменится `~/.copilot/` , и `$HOME\.copilot\` в описанных выше путях.

1. Отредактировать содержимое `trustedFolders` массива.

## Настройка разрешённых инструментов

Вы можете управлять, какие инструменты Copilot CLI могут использовать, либо отвечая на запросы одобрения при Copilot попытке использовать инструмент, либо указывая права через флаги командной строки.

Имейте в виду, что разрешение доступа инструментам имеет последствия для безопасности, см. [вопросы безопасности](/ru/copilot/concepts/agents/copilot-cli/about-copilot-cli#security-considerations).

В этом разделе вы можете узнать, как:

* [Разрешите инструмент впервые](#allowing-a-tool-for-the-first-time)
* [Разрешить использование инструментов без ручного одобрения](#allowing-tools-to-be-used-without-manual-approval)
* [Укажите, какой инструмент вы хотите разрешить или отклонить](#specifying-which-tool-you-want-to-allow-or-deny)
* [Разрешайте одни инструменты, но запрещайте другие](#allowing-some-tools-while-denying-others)
* [Ограничение доступных инструментов](#limiting-available-tools)

### Впервые разрешить инструмент

В первый раз Copilot , когда вам нужно использовать инструмент, который может требовать одобрения —например, , `touch`, `chmod``node`или`sed` он спросит вас, хотите ли вы позволить ему работать. Вопрос о том, будет ли вам подсказка, зависит от инструмента и того, как он используется (например, приведённые аргументы или одобрен ли инструмент ранее).

1. Подскажите Copilot выполнить задачу, требующую инструмента. Рассмотрим пример.

   ```shell
   copilot -p "Create a new file called README.md with a project description"
   ```

2. Выберите один из трёх вариантов:

   * `1. Yes`

     Выберите эту опцию, чтобы разрешить Copilot выполнить именно эту команду, только на этот раз. В следующий раз, когда он должен использовать этот инструмент, он попросит вас снова.

   * `2. Yes, and approve TOOL for the rest of the running session`

     Выберите эту опцию, чтобы разрешить Copilot использовать этот инструмент на время текущей сессии. Он будет запрашивать ваше утверждение еще раз в новых сеансах или, если вы возобновляете текущий сеанс в будущем. Если вы выберете этот вариант, вы позволяете Copilot использовать этот инструмент так, как считаете нужным.

     Например, если Copilot просит разрешить запуск команды `rm ./this-file.txt`, и вы выбираете вариант 2, то Copilot можете выполнить любую `rm` команду (например, `rm -rf ./*`) в текущем запуске этой сессии без вашего одобрения.

   * `3. No, and tell Copilot what to do differently (Esc)`

     Выберите этот вариант, чтобы отменить предложенную команду и попросить Copilot попробовать другой подход.

### Разрешение использования средств без утверждения вручную

Вы можете использовать флаги командной строки, чтобы обозначить инструменты, которые Copilot можно использовать без вашего одобрения.

#### Разрешение всех инструментов

Используйте `--allow-all-tools` его, чтобы разрешить Copilot использовать любой инструмент без вашего одобрения.

* Рассмотрим пример.

  ```shell
  copilot -p "Revert the last commit" --allow-all-tools
  ```

#### Отказ от инструмента

Используйте `--deny-tool` для предотвращения Copilot использования конкретного инструмента.

* Рассмотрим пример.

  ```shell
  copilot --deny-tool='shell(git push)'
  ```

Этот параметр имеет приоритет над параметрами и `--allow-all-tools` параметрами`--allow-tool`.

#### Разрешение инструмента

Используйте `--allow-tool` возможность Copilot использовать конкретный инструмент без вашего одобрения.

* Рассмотрим пример.

  ```shell
  copilot --allow-tool='shell'
  ```

### Указание, какой инструмент вы хотите разрешить или отклонить

Чтобы использовать опции `--deny-tool` and `--allow-tool` , нужно указать, какой тип инструмента вы хотите разрешить или запретить:

* [Команды оболочки](#allowing-or-denying-shell-commands)
* [Инструменты «Write»](#allowing-or-denying-write-tools)
* [Инструменты серверов MCP](#allowing-or-denying-mcp-server-tools)

#### Разрешение или отклонение команд shell

Используйте `shell(COMMAND)` для разрешения или отклонения конкретной команды shell.

* Например, чтобы предотвратить Copilot использование любой `rm` команды, используйте следующее:

  ```shell
  copilot --deny-tool='shell(rm)'
  ```

Для `git` и `gh` команд укажите конкретную подкоманду первого уровня для разрешения или отказа.

* Например, чтобы предотвратить Copilot использование `git push`, используйте:

  ```shell
  copilot --deny-tool='shell(git push)'
  ```

Спецификация инструмента является необязательной. Например, `copilot --allow-tool='shell'` позволяет Copilot использовать любую команду shell без индивидуального одобрения.

#### Разрешение или отказ `'write'` инструментов

Используйте `'write'` для разрешения или отказа инструментам — кроме команд shell — разрешение на изменение файлов.

* Например, чтобы разрешить Copilot редактировать файлы без вашего индивидуального одобрения, используйте следующее:

  ```shell
  copilot --allow-tool='write'
  ```

#### Разрешение или отказ в MCP-серверных инструментах

Используйте `'MCP_SERVER_NAME'` для разрешения или отклонения конкретного инструмента от указанного сервера MCP.

* Например, чтобы предотвратить Copilot использование инструмента, вызванного `tool_name` с сервера MCP, `My-MCP-Server`используйте следующее:

  ```shell
  copilot --deny-tool='My-MCP-Server(tool_name)'
  ```

`MCP_SERVER_NAME` это название MCP-сервера, который вы настроили.

Средства с сервера указываются в скобках, используя имя средства, зарегистрированного на сервере MCP.

Использование имени сервера без указания средства разрешает или запрещает все средства с этого сервера.

Вы можете найти имя сервера MCP, войдя `/mcp` в интерактивный режим и Copilot CLI выбрав сервер из отображаемого списка.

### Разрешая одни инструменты, но отказывая другим

Чтобы точно определить, какие инструменты Copilot можно использовать без вашего одобрения, вы можете использовать комбинацию вариантов одобрения. Рассмотрим пример.

* Чтобы предотвратить Copilot использование `rm` команд и `git push` при автоматическом разрешении всех остальных инструментов, используйте следующее:

  ```shell
  copilot --allow-all-tools --deny-tool='shell(rm)' --deny-tool='shell(git push)'
  ```

* Чтобы предотвратить Copilot использование инструмента `tool_name` с MCP-сервера с именем `My-MCP-Server`, но позволить всем другим инструментам с этого сервера использовать без индивидуального одобрения, используйте следующее:

  ```shell
  copilot --allow-tool='My-MCP-Server' --deny-tool='My-MCP-Server(tool_name)'
  ```

### Ограничение доступных инструментов

Чтобы ограничиться Copilot определённым набором инструментов, используйте `--available-tools`.

Инструменты, не включённые в этот список, не будут доступны для Copilot.

## Установка разрешений на пути

Права на пути определяют, к каким каталогам и файлам Copilot могут обращаться.

По умолчанию Copilot CLI можно получить доступ к текущему рабочему каталогу, её подкаталогам и системному временному каталогу.

Разрешения на пути применяются к командам shell, операциям с файлами (создание, редактирование, просмотр) и инструменты поиска (например `grep` , шаблоны и шаблоны глобов). Для команд shell пути эвристически извлекаются путём токенизации текста команд и идентификации токенов, похожих на пути.

> \[!WARNING]
> Обнаружение пути для команд shell имеет ограничения:
>
> * Пути, встроенные в сложные конструкции оболочек, могут не быть обнаружены.
> * Разворачивается только определённый набор переменных среды (`HOME`, `TMPDIR`, `PWD`, и подобное). Пользовательские переменные, такие `$MY_PROJECT_DIR` как не расширяются и могут быть некорректно проверены.
> * Символические ссылки разрешаются для существующих файлов, но не для создаваемых файлов.

### Обеспечение доступа ко всем путям

Чтобы отключить проверку пути и получить доступ к любому пути, используйте `--allow-all-paths` флаг при запуске Copilot CLI.

### Запрет доступа к временному каталогу

Чтобы запретить доступ к временной директории, используйте `--disallow-temp-dir`.

## Настройка разрешений URL

Права на URL управляют, к какому доступу могут получить Copilot внешние URL. По умолчанию все URL-адреса требуют одобрения перед предоставлением доступа.

Права на URL применяются к `web_fetch` инструменту и кураторскому списку команд shell, которые обращаются к сети (например `curl`, , `wget`, и `fetch`). Для команд shell URL извлекаются с помощью шаблонов regex.

> \[!WARNING]
> Обнаружение URL для команд shell имеет ограничения:
>
> * URL-адреса в содержимом файлов, конфигурационных файлах или переменных среды, прочитанных командами, не обнаруживаются.
> * Обфусцированные URL (такие как разделённые строки или escape-последовательности) могут не быть обнаружены.
> * HTTP и HTTPS рассматриваются как разные протоколы и требуют отдельного одобрения.

Права на URL могут сохраняться на всю сессию или навсегда.

### Отключение проверки URL

Чтобы отключить проверку URL, используйте флаг.`--allow-all-urls`

### Предварительное одобрение конкретных доменов

Для предварительного одобрения конкретных доменов используйте `--allow-url=DOMAIN`.

* Например: `--allow-url=github.com`.

### Отрицание конкретных доменов

Чтобы отклонить конкретные домены, используйте `--deny-url=DOMAIN`.

* Например: `--deny-url=github.com`.

## Разрешение всех инструментов, путей и URL

Чтобы разрешить все инструменты, пути и URL-адреса, используйте `--allow-all`, или его псевдоним, `--yolo`.

Этот флаг объединяет:

* `--allow-all-tools` (пропуск одобрения инструмента).
* `--allow-all-paths` (отключить проверку пути).
* `--allow-all-urls` (отключает проверку URL).

Во время интерактивной сессии вы также можете включить все права с помощью `/allow-all` команд или `/yolo` slash.

> \[!NOTE] Если у вас есть лицензия OR Copilot BusinessCopilot Enterprise , эти команды могут быть заблокированы корпоративным администратором.

## Ограничение доступа к файлам

Различные `--allow-all...` параметры позволяют решить, разрешать Copilot ли доступ к отдельным средствам, файлам и URL-адресам. Однако использование их расширяет область Copilot выполнения действий, которые могут не потребоваться, например изменение файлов за пределами репозитория, в который вы работаете.

Чтобы устранить этот риск, вы можете указать ИНТЕРФЕЙС командной строки песочнице свои команды (локальную песочницу) или запустить весь Copilot CLI сеанс в удаленной изолированной среде (облачной песочнице). Дополнительные сведения см. в разделе [Сведения об облачных и локальных песочницах для GitHub Copilot](/ru/copilot/concepts/about-cloud-and-local-sandboxes).

## Дополнительные материалы

* [Настройка GitHub Copilot CLI](/ru/copilot/how-tos/copilot-cli/customize-copilot)
* [Каталог конфигурации CLI GitHub Copilot](/ru/copilot/reference/copilot-cli-reference/cli-config-dir-reference)