Введение
Второй пилот CLI Имеет несколько опций конфигурации, которые управляют, к чему он может получить доступ и делать от вашего имени.
В этой статье показано, как настраивать доверенные каталоги, настраивать доступ к инструментам и предоставлять права на пути и URL-адресы файлов.
Предпосылки
- Установите Второй пилот CLI. См . раздел AUTOTITLE.
Установка доверенных каталогов
Доверенные каталоги контролируют, где Второй пилот CLI можно читать, изменять и выполнять файлы. Доверие к каталогу имеет последствия для безопасности, см. Вопросы безопасности.
Выбор доверия каталогу
Когда вы начинаете GitHub Copilot CLI сессию, вас попросят подтвердить, что вы доверяете файлам в каталоге, из которого вы запустили CLI.
Вы можете доверять текущему каталогу:
- Только запущенный сеанс
- Эти и будущие сеансы
Если вы решили доверять каталогу для будущих сеансов, запрос доверенного каталога не будет отображаться снова. Второй вариант стоит выбрать только если вы уверены, что это место всегда будет безопасным для Copilot работы.
Редактирование доверенных каталогов
Вы можете редактировать список постоянно надёжных каталогов.
-
Откройте
config.jsonфайл CLI. По умолчанию он хранится в.copilotпапке в вашей домашней директории:-
**macOS/Linux**: `~/.copilot/config.json` -
**Окна**: `$HOME\.copilot\config.json`
-
Вы можете изменить расположение конфигурации, установив COPILOT_HOME переменную окружения.
- Отредактировать содержимое
trusted_foldersмассива.
Настройка разрешённых инструментов
Вы можете управлять, какие инструменты Второй пилот CLI могут использовать, либо отвечая на запросы одобрения при Copilot попытке использовать инструмент, либо указывая права через флаги командной строки.
Имейте в виду, что разрешение доступа инструментам имеет последствия для безопасности, см. вопросы безопасности.
В этом разделе вы можете узнать, как:
-
[Разрешите инструмент впервые](#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— он спросит вас, хотите ли вы разрешить ему работать. Вопрос о том, будет ли вам подсказка, зависит от инструмента и того, как он используется (например, приведённые аргументы или одобрен ли инструмент ранее).
-
Подскажите Copilot выполнить задачу, требующую инструмента. Рассмотрим пример.
copilot -p "Create a new file called README.md with a project description" -
Выберите один из трёх вариантов:
-
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 использовать любой инструмент без вашего одобрения.
-
Рассмотрим пример.
copilot -p "Revert the last commit" --allow-all-tools
Отказ от инструмента
Используйте --deny-tool для предотвращения Copilot использования конкретного инструмента.
-
Рассмотрим пример.
copilot --deny-tool='shell(git push)'
Этот параметр имеет приоритет над параметрами и --allow-all-tools параметрами--allow-tool.
Разрешение инструмента
Используйте --allow-tool возможность Copilot использовать конкретный инструмент без вашего одобрения.
-
Рассмотрим пример.
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команды, используйте следующее:copilot --deny-tool='shell(rm)'
Для git и gh команд укажите конкретную подкоманду первого уровня для разрешения или отказа.
-
Например, чтобы предотвратить Copilot использование
git push, используйте:copilot --deny-tool='shell(git push)'
Спецификация инструмента является необязательной. Например, copilot --allow-tool='shell' позволяет Copilot использовать любую команду shell без индивидуального одобрения.
Разрешение или отказ 'write' инструментов
Используйте 'write' для разрешения или отказа инструментам — кроме команд shell — разрешение на изменение файлов.
-
Например, чтобы разрешить Copilot редактировать файлы без вашего индивидуального одобрения, используйте следующее:
copilot --allow-tool='write'
Разрешение или отказ в MCP-серверных инструментах
Используйте 'MCP_SERVER_NAME' для разрешения или отклонения конкретного инструмента от указанного сервера MCP.
-
Например, чтобы предотвратить Copilot использование инструмента, вызванного
tool_nameс сервера MCP,My-MCP-Serverиспользуйте следующее:copilot --deny-tool='My-MCP-Server(tool_name)'`MCP_SERVER_NAME` это название MCP-сервера, который вы настроили.
Средства с сервера указываются в скобках, используя имя средства, зарегистрированного на сервере MCP.
Использование имени сервера без указания средства разрешает или запрещает все средства с этого сервера.
Вы можете найти имя сервера MCP, войдя /mcp в интерактивный режим и Второй пилот CLI выбрав сервер из отображаемого списка.
Разрешая одни инструменты, но отказывая другим
Чтобы точно определить, какие инструменты Copilot можно использовать без вашего одобрения, вы можете использовать комбинацию вариантов одобрения. Рассмотрим пример.
-
Чтобы предотвратить Copilot использование
rmкоманд иgit pushпри автоматическом разрешении всех остальных инструментов, используйте следующее:copilot --allow-all-tools --deny-tool='shell(rm)' --deny-tool='shell(git push)' -
Чтобы предотвратить Copilot использование инструмента
tool_nameс MCP-сервера с именемMy-MCP-Server, но позволить всем другим инструментам с этого сервера использовать без индивидуального одобрения, используйте следующее:copilot --allow-tool='My-MCP-Server' --deny-tool='My-MCP-Server(tool_name)'
Ограничение доступных инструментов
Чтобы ограничиться Copilot определённым набором инструментов, используйте --available-tools.
Инструменты, не включённые в этот список, не будут доступны для Copilot.
Установка разрешений на пути
Права на пути определяют, к каким каталогам и файлам Copilot могут обращаться.
По умолчанию Второй пилот CLI можно получить доступ к текущему рабочему каталогу, её подкаталогам и системному временному каталогу.
Разрешения на пути применяются к командам shell, операциям с файлами (создание, редактирование, просмотр) и инструменты поиска (например grep , шаблоны и шаблоны глобов). Для команд shell пути эвристически извлекаются путём токенизации текста команд и идентификации токенов, похожих на пути.
Предупреждение
Обнаружение пути для команд shell имеет ограничения:
- Пути, встроенные в сложные конструкции оболочек, могут не быть обнаружены.
- Разворачивается только определённый набор переменных среды (
HOME,TMPDIR,PWD, и подобное). Пользовательские переменные, такие$MY_PROJECT_DIRкак не расширяются и могут быть некорректно проверены. - Символические ссылки разрешаются для существующих файлов, но не для создаваемых файлов.
Обеспечение доступа ко всем путям
Чтобы отключить проверку пути и получить доступ к любому пути, используйте --allow-all-paths флаг при запуске Второй пилот CLI.
Запрет доступа к временному каталогу
Чтобы запретить доступ к временной директории, используйте --disallow-temp-dir.
Настройка разрешений URL
Права на URL управляют, к какому доступу могут получить Copilot внешние URL. По умолчанию все URL-адреса требуют одобрения перед предоставлением доступа.
Права на URL применяются к web_fetch инструменту и кураторскому списку команд shell, которые обращаются к сети (например curl, , wget, и fetch). Для команд shell URL извлекаются с помощью шаблонов regex.
Предупреждение
Обнаружение 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.
Дополнительные материалы
-
[AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference)