Введение
Copilot CLI Имеет несколько опций конфигурации, которые управляют, к чему он может получить доступ и делать от вашего имени.
В этой статье показано, как настроить доверенные каталоги, настроить доступ для инструментов, предоставить разрешения на пути к файлам и URL-адресам, а также отключить телеметрия на стороне клиента.
Предпосылки
- Установите Copilot CLI. См . раздел AUTOTITLE.
Установка доверенных каталогов
Доверенные каталоги контролируют, где Copilot CLI можно читать, изменять и выполнять файлы. Доверие к каталогу имеет последствия для безопасности, см. Вопросы безопасности.
Выбор доверия каталогу
Когда вы начинаете GitHub Copilot CLI сессию, вас попросят подтвердить, что вы доверяете файлам в каталоге, из которого вы запустили CLI.
Вы можете доверять текущему каталогу:
- Только запущенный сеанс
- Эти и будущие сеансы
Если вы решили доверять каталогу для будущих сеансов, запрос доверенного каталога не будет отображаться снова. Второй вариант стоит выбрать только если вы уверены, что это место всегда будет безопасным для Copilot работы.
Редактирование доверенных каталогов
Вы можете редактировать список постоянно надёжных каталогов. Доверенные каталоги хранятся в автоматически управляемом config.json файле.
-
Откройте
config.jsonфайл CLI. По умолчанию он хранится в.copilotпапке в вашей домашней директории:- macOS/Linux:
~/.copilot/config.json - Windows:
$HOME\.copilot\config.json
- macOS/Linux:
Вы можете изменить расположение конфигурации, установив COPILOT_HOME переменную окружения. Это изменится ~/.copilot/ , и $HOME\.copilot\ в описанных выше путях.
- Отредактировать содержимое
trustedFoldersмассива.
Настройка разрешённых инструментов
Вы можете управлять тем, какие средства Copilot CLI можно использовать, отвечая на запросы утверждения при Copilot попытке использовать средство или указав разрешения с помощью параметров командной строки.
Имейте в виду, что разрешение доступа инструментам имеет последствия для безопасности, см. вопросы безопасности.
В этом разделе вы можете узнать, как:
- Разрешите инструмент впервые
- Разрешить использование инструментов без ручного одобрения
- Укажите, какой инструмент вы хотите разрешить или отклонить
- Разрешайте одни инструменты, но запрещайте другие
- Ограничение доступных инструментов
Впервые разрешить инструмент
В режиме Copilot утверждения вручную запрашивает утверждение запросов инструментов, которые еще не разрешены.например, , touch, chmod``nodeилиsed Указывает, зависит ли запрос от фактических разрешений и способа использования средства, таких как его аргументы или предыдущие утверждения.
-
Запустите интерактивный сеанс
copilot, а затем введите/permissions manual. -
Подскажите Copilot выполнить задачу, требующую инструмента. Рассмотрим пример.
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 могут использоваться без запроса на утверждение.
Кроме того, чтобы уменьшить запросы на утверждение без предоставления общих разрешений, введите /permissions assisted в интерактивном сеансе. При этом assisted permissionsбольшая языковая модель оценивает соответствующие запросы разрешений и автоматически утверждает, что судьи должны быть безопасными. Существующие разрешения и корпоративные правила по-прежнему применяются, и запросы, которые по-прежнему требуют утверждения, помещаются к вам. Дополнительные сведения см. в разделе Разрешение выполнения безопасных команд без утверждения вручную.
Разрешение всех инструментов
Используйте --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 , нужно указать, какой тип инструмента вы хотите разрешить или запретить:
Разрешение или отклонение команд 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 в интерактивный режим и Copilot 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 могут обращаться.
По умолчанию Copilot CLI можно получить доступ к текущему рабочему каталогу, её подкаталогам и системному временному каталогу.
Разрешения на пути применяются к командам shell, операциям с файлами (создание, редактирование, просмотр) и инструменты поиска (например grep , шаблоны и шаблоны глобов). Для команд shell пути эвристически извлекаются путём токенизации текста команд и идентификации токенов, похожих на пути.
Предупреждение
Обнаружение пути для команд 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.
Предупреждение
Обнаружение URL для команд shell имеет ограничения:
- URL-адреса в содержимом файлов, конфигурационных файлах или переменных среды, прочитанных командами, не обнаруживаются.
- Обфусцированные URL (такие как разделённые строки или escape-последовательности) могут не быть обнаружены.
- HTTP и HTTPS рассматриваются как разные протоколы и требуют отдельного одобрения.
Права на URL могут сохраняться на всю сессию или навсегда.
Отключение проверки URL
Чтобы отключить проверку URL-адреса, используйте --allow-all-urls этот параметр.
Предварительное одобрение конкретных доменов
Для предварительного одобрения конкретных доменов используйте --allow-url=DOMAIN.
- Например:
--allow-url=gh.asamalin.top.
Отрицание конкретных доменов
Чтобы отклонить конкретные домены, используйте --deny-url=DOMAIN.
- Например:
--deny-url=gh.asamalin.top.
Разрешение всех инструментов, путей и URL
Чтобы разрешить все инструменты, пути и URL-адреса, используйте --allow-all, или его псевдоним, --yolo.
Этот параметр объединяет:
--allow-all-tools(пропуск одобрения инструмента).--allow-all-paths(отключить проверку пути).--allow-all-urls(отключает проверку URL).
Во время интерактивного сеанса можно также включить все разрешения с помощью команды косой /permissions allow-all черты или его псевдонимов /allow-all и /yolo.
Примечание.
Если у вас есть лицензия OR Copilot BusinessCopilot Enterprise , эти команды могут быть заблокированы корпоративным администратором.
Ограничение доступа к файлам
Различные --allow-all... параметры позволяют решить, разрешать Copilot ли доступ к отдельным средствам, файлам и URL-адресам. Однако использование их расширяет область Copilot выполнения действий, которые могут не потребоваться, например изменение файлов за пределами репозитория, в который вы работаете.
Чтобы устранить этот риск, вы можете указать ИНТЕРФЕЙС командной строки песочнице свои команды (локальная песочница) или запустить весь Copilot CLI сеанс в облачной песочнице. Дополнительные сведения см. в разделе [AUTOTITLE и Сведения о локальной песочнице для GitHub Copilot](/copilot/concepts/security-governance-and-network-settings/about-cloud-sandboxes).
Отключение телеметрии на стороне клиента
Чтобы отключить телеметрию на стороне клиента для текущего вызова, начните Copilot CLI с --disable-client-telemetry параметра:
copilot --disable-client-telemetry
Этот параметр отключает сторонние данные телеметрии, отправленные интерфейсом командной строки, включая неограниченные и ограниченные данные телеметрии. Он не сохраняется в конфигурации.
Параметр не отключает GitHubсерверную коллекцию данных сеанса или телеметрии. Это также не влияет:
- Экспорт OpenTelemetry, настроенный вами или вашей компанией.
- Данные телеметрии, отправляемые в приложение, использующее Copilot SDKприложение, когда это приложение явно включает пересылку телеметрии при подключении к ИНТЕРФЕЙСУ командной строки.