Skip to main content

Справочник команды GitHub Copilot CLI

Найдите команды и клавишные комбинации, которые помогут вам эффективно использовать Второй пилот CLI .

Команды командной строки

CommandPurpose
copilotЗапустите интерактивный пользовательский интерфейс.
copilot help [TOPIC]Покажите справочную информацию. Темы помощи включают: config, commands, environment, logging, monitoring``permissions, , и providers.
copilot initИнициализируйте Copilot пользовательские инструкции для этого репозитория.
copilot loginАутентифицируйтесь Copilot через поток устройств OAuth. Принимает --host HOST указать GitHub URL хоста (по умолчанию: https://github.com).
copilot login [ОПЦИЯ]Аутентифицируйтесь Copilot через поток устройств OAuth. См. параметры copilot login.
copilot mcpУправляйте конфигурациями MCP-сервера из командной строки.
copilot pluginУправляйте плагинами и маркетплейсами плагинов.
copilot updateСкачайте и установите последнюю версию.
copilot versionОткажите информацию о версии и проверьте обновления.

          `copilot login` варианты
ОпцияPurpose
--host HOST
          GitHub URL хоста (по умолчанию: `https://github.com`). Используйте это для аутентификации с GitHub Enterprise Cloud экземпляром, использующим data residency (например, `https://example.ghe.com`). |

| --config-dir PATH | Установите каталог конфигурации (по умолчанию: ~/.copilot). |

Стандартный режим аутентификации — это веб-браузерный поток. После завершения аутентификационный токен надежно хранится в системном хранилище учетных данных. Если хранилище учетных данных не найдено, токен хранится в простом текстовом конфигурационном файле под ~/.copilot/.

В качестве альтернативы Второй пилот CLI буду использовать токен аутентификации, находящийся в переменных окружения. Следующие параметры проверяются в порядке старшинства: COPILOT_GITHUB_TOKEN, GH_TOKEN, , GITHUB_TOKEN. Этот метод наиболее подходит для безголового использования, например, для автоматизации.

Поддерживаемые типы токенов включают fine-grained personal access tokens (v2 PAT) с разрешением «Copilot Requests», токены OAuth из Copilot приложения CLI и токены OAuth из GitHub CLI приложения (gh). Classic personal access tokens (ghp_) не поддерживается.

          **Примеры:**
# Authenticate with github.com
copilot login

# Authenticate with GitHub Enterprise Cloud (data residency)
copilot login --host https://example.ghe.com

# Use a fine-grained PAT via environment variable
COPILOT_GITHUB_TOKEN=github_pat_... copilot

Глобальные ярлыки в интерактивном интерфейсе

ShortcutPurpose
@ FILENAMEВключите содержимое файла в контекст.
# NUMBERВключите GitHub проблему или запрос в контекст.
! COMMANDВыполните команду в локальной оболочке, обходя Copilot.
?Откройте быструю помощь (по пустому запросу).
EscОтменить текущую операцию.
CTRL+CОтменить операцию / очистить вход. Нажмите дважды, чтобы выйти.
CTRL+DОтключение.
CTRL+GОтредактировать запрос во внешнем редакторе ($EDITOR).
CTRL+LОчистите экран.
Ctrl+Enter или ctrl+QПоставьте сообщение в очередь для отправки, пока агент занят.
CTRL+RОбратный поиск по истории команд.
CTRL+VВставьте из буфера обмена в качестве вложения.
Ctrl+Тогда X/После того как вы начали вводить подстрымку, это позволяет выполнить команду слэш — например, если вы хотите изменить модель без необходимости переписывать подсказку.
Ctrl+Тогда XeОтредактировать запрос во внешнем редакторе ($EDITOR).
Ctrl+Тогда XoОткройте самую последнюю ссылку из таймлайна.
CTRL+ZПриостановите процесс в фоновый режим (Unix).
Сдвиг+Enter или опция+Enter (Mac) / Alt+Enter (Windows/Linux)Вставьте новую строку во вход.
Shift+ВкладкаПереключайтесь между стандартным, планным и автопилотным режимами.

Ярлыки временной линии в интерактивном интерфейсе

ShortcutPurpose
Ctrl+ОХотя в запросе ничего нет, оно расширяет недавние элементы в Copilotтаймлайне ответов, чтобы показать больше деталей.
CTRL+EХотя в вводном запросе ничего нет, это расширяет все элементы в Copilotтаймлайне ответов.
CTRL+TРасширить/свернуть отображение рассуждений в ответах.
Page Up/Страница внизПрокрутите хронологию вверх или вниз на одну страницу.
ShortcutPurpose
CTRL+AПереместитесь к началу строки (при наборе).
CTRL+BПерейти к предыдущему персонажу.
CTRL+EПереместитесь в конец строки (при наборе).
CTRL+FПерейти к следующему персонажу.
CTRL+HУдалить предыдущего персонажа.
Ctrl+КУдалить с курсора до конца строки. Если курсор находится в конце строки, удалите разрыв строки.
CTRL+UУдалить с курсора в начало строки.
Ctrl+ЖУдалить предыдущее слово.
домПерейдите к началу текста.
КонецПерейдём к концу текста.
Альтернатива+/ (Windows/Linux)
          <kbd>Опция</kbd>+<kbd>←</kbd>/<kbd>→</kbd> (Mac) | Двигайте курсор на слово.             |

| / | Просматривайте историю команд. | | Tab / Ctrl+Y | Примите текущее предложение по завершению inline. |

Команды Slash в интерактивном интерфейсе

CommandPurpose
/add-dir PATHДобавьте каталог в разрешённый список для доступа к файлам.
/agentПросматривайте и выбирайте из доступных агентов (если они есть). См . раздел AUTOTITLE.
/ask QUESTIONЗадайте быстрый вопрос, не добавляя в историю разговоров. Доступно только в экспериментальном режиме.
/allow-all [on|off|show], /yolo [on|off|show]Включите все права (инструменты, пути и URL).
/changelog [summarize] [VERSION|last N|since VERSION], /release-notes [summarize] [VERSION|last N|since VERSION]Отобразите журнал изменений CLI. По желанию укажите версию, количество последних релизов или начальную версию. Добавьте ключевое слово summarize для сводки, сгенерированной ИИ.
/chronicle <standup|tips|improve|reindex>Инструменты и аналитика истории сессий. Доступно только в экспериментальном режиме.
/clear [PROMPT], , /new [PROMPT]``/reset [PROMPT]Запустите новую беседу.
/compactКратко изложите историю переписки, чтобы уменьшить использование контекстного окна. См . раздел AUTOTITLE.
/contextПокажите использование токена контекстного окна и визуализацию. См . раздел AUTOTITLE.
/copyСкопируйте последний ответ в буфер обмена.
/cwd, /cd [PATH]Измените рабочий каталог или отобразите текущий каталог.
/delegate [PROMPT]Делегировать изменения в удалённый репозиторий с помощью пулл-запроса, сгенерированного ИИ. См . раздел AUTOTITLE.
/diffПроверьте изменения, внесённые в текущий каталог.
/downgrade <VERSION>Скачайте и перезапустите в определённой CLI-версии. Доступно для командных аккаунтов.
/envПоказывайте данные загруженной среды (инструкции, MCP-серверы, навыки, агенты, плагины, LSP, расширения).
/exit, /quitВыйдите из CLI.
/experimental [on|off|show]Переключайте, устанавливайте или показывайте экспериментальные функции.
/feedback, /bugДайте обратную связь о CLI.
/fleet [PROMPT]Включить параллельное выполнение субагентов для выполнения частей задачи. См . раздел AUTOTITLE.
/helpПокажите помощь по интерактивным командам.
/ideПодключитесь к рабочему пространству IDE. См . раздел AUTOTITLE.
/initИнициализируйте Copilot пользовательские инструкции и агентные функции для этого репозитория. См. инициализацию Project для Copilot.
/instructionsПросмотр и переключение пользовательских файлов инструкций.
/keep-alive [on|busy|NUMBERm|NUMBERh]Предотвратить переход машины в спящий режим: пока сессия CLI активна, пока агент занят или в течение определённого времени. Доступно только в экспериментальном режиме.
/list-dirsОтобразите все каталоги, для которых разрешён доступ к файлам.
/loginВойдите в .Copilot
/logoutВыйти из Copilot.
/lsp [show|test|reload|help] [SERVER-NAME]Управляйте конфигурацией сервера языка.
/mcp [show|add|edit|delete|disable|enable|auth|reload] [SERVER-NAME]Управление конфигурацией сервера MCP. См . раздел AUTOTITLE.
/model, /models [MODEL]Выберите модель ИИ, которую хотите использовать.
/plan [PROMPT]Создайте план реализации перед написанием кода.
/plugin [marketplace|install|uninstall|update|list] [ARGS...]Управляйте плагинами и маркетплейсами плагинов. См . раздел AUTOTITLE.
/pr [view|create|fix|auto]Управление pull-запросами для текущей ветки. См . раздел AUTOTITLE.
/remoteВключите удалённый доступ к этой сессии из GitHub.com и GitHub Mobile. См . раздел AUTOTITLE.
/rename [NAME]Переименовать текущую сессию (автоматически генерирует имя, если оно опущено; псевдоним для /session rename).
/research TOPICПроведите глубокое исследование с использованием GitHub поисковых и веб-источников. См . раздел AUTOTITLE.
/reset-allowed-toolsСбросьте список разрешённых инструментов.
/restartПерезапустить CLI, сохраняя текущую сессию.
/resume [VALUE], /continueПереключитесь на другую сессию, выбрав из списка. По желанию укажите идентификатор сессии, префикс ID или имя сессии для возобновления конкретной сессии.
/review [PROMPT]Запустите агент проверки кода для анализа изменений. См . раздел AUTOTITLE.
/session [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all], /sessions [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all]Показывайте информацию о сессиях и управляйте сессиями. Подкоманды: info, checkpoints, files, plan, rename, cleanup``delete``prune``delete-all.
/share [file|html|gist] [session|research] [PATH], /export [file|html|gist] [session|research] [PATH]Поделитесь сессией с файлом Markdown, интерактивным HTML-файлом или GitHub gist.
/skills [list|info|add|remove|reload] [ARGS...]Управляйте навыками для расширения возможностей. См . раздел AUTOTITLE.
/statusline, /footerНастройте, какие элементы появляются в строке статуса.
/tasksПросмотр и управление фоновыми задачами (субагентами и shell-сессиями).
/terminal-setupНастройте терминал для поддержки многолинейного входа (Shift+Enter и Ctrl+Enter).
/theme [default|dim|high-contrast|colorblind]Просмотр или настройка цветового режима.
/undo, /rewindПеремотайте последний ход и отмените изменения в файле.
/update, /upgradeОбновите CLI до последней версии.
/usageОтображайте метрики и статистику использования сессий.
/user [show|list|switch]Управляйте текущим GitHub пользователем.
/versionОткажите информацию о версии и проверьте обновления.

Для полного списка доступных команд слэш введите /help в интерактивный интерфейс CLI.

Параметры командной строки

ОпцияPurpose
--add-dir=PATHДобавьте каталог в разрешённый список для доступа к файлам (можно использовать несколько раз).
--add-github-mcp-tool=TOOLДобавьте инструмент для включения для GitHub MCP-сервера вместо стандартного CLI-подмножества (можно использовать несколько раз). Используйте * для всех инструментов.
--add-github-mcp-toolset=TOOLSETДобавьте набор инструментов для MCP-сервера GitHub вместо стандартного CLI-подмножества (можно использовать несколько раз). Используйте all для всех наборов инструментов.
--additional-mcp-config=JSONДобавьте MCP-сервер только для этой сессии. Конфигурация сервера может быть предоставлена в виде JSON-строки или пути к файлу (префикс ).@ Дополняет конфигурацию из ~/.copilot/mcp-config.json. Переопределяет любую установленную конфигурацию сервера MCP с таким же именем. См . раздел AUTOTITLE.
--agent=AGENTУкажите a Пользовательский агент для использования. См . раздел AUTOTITLE.
--allow-allВключить все права (эквивалент --allow-all-tools --allow-all-paths --allow-all-urls).
--allow-all-pathsОтключите верификацию пути файла и разрешите доступ к любому пути.
--allow-all-toolsРазрешить всем инструментам работать автоматически без подтверждения. Требуется при программном использовании CLI (env: COPILOT_ALLOW_ALL).
--allow-all-urlsРазрешите доступ ко всем URL без подтверждения.
--allow-tool=TOOL ...Инструменты, которые CLI имеет разрешение использовать. Не буду запрашивать разрешение. Для множества инструментов используйте список с кавычками, разделёнными запятыми. См . раздел AUTOTITLE.
--allow-url=URL ...Разрешите доступ к определённым URL или доменам. Для нескольких URL используйте список с кавычками, разделёнными запятыми.
--autopilotВключите автопилот в режиме подсказок. См . раздел AUTOTITLE.
--available-tools=TOOL ...Модели будут доступны только эти инструменты. Для множества инструментов используйте список с кавычками, разделёнными запятыми. См . раздел AUTOTITLE.
--banner, --no-bannerПокажите или спрячьте баннер запуска.
--bash-envВключите BASH_ENV поддержку bash-shells.
--config-dir=PATHУстановите каталог конфигурации (по умолчанию: ~/.copilot).
--connect[=SESSION-ID]Подключитесь напрямую к удалённой сессии (по желанию укажите идентификатор сессии или задачи). Конфликты с --resume и --continue.
--continueВозобновите последнюю сессию в текущем рабочем каталоге, вернувшись к глобально самой последней сессии.
--deny-tool=TOOL ...Инструменты, на которые CLI не имеет разрешения. Не буду запрашивать разрешение. Для множества инструментов используйте список с кавычками, разделёнными запятыми.
--deny-url=URL ...Отказ в доступе к определённым URL или доменам имеет приоритет над --allow-url. Для нескольких URL используйте список с кавычками, разделёнными запятыми.
--disable-builtin-mcpsОтключите все встроенные MCP-серверы (на данный момент: github-mcp-server).
--disable-mcp-server=SERVER-NAMEОтключите конкретный MCP-сервер (его можно использовать несколько раз).
--disallow-temp-dirПредотвратить автоматический доступ к временному каталогу системы.
--effort=LEVEL, --reasoning-effort=LEVELУстановите уровень усилия для рассуждения (low, medium, high).
--enable-all-github-mcp-toolsВключите все GitHub инструменты сервера MCP вместо стандартного подмножества CLI. Переопределяет и --add-github-mcp-toolset``--add-github-mcp-tool опции.
--enable-reasoning-summariesЗапросите резюме рассуждений для моделей OpenAI, которые это поддерживают.
--excluded-tools=TOOL ...Эти инструменты не будут доступны для модели. Для множества инструментов используйте список с кавычками, разделёнными запятыми.
--experimentalВключите экспериментальные функции (используйте --no-experimental для отключения).
-h, --helpПомощь с отображением.
-i PROMPT, --interactive=PROMPTНачните интерактивную сессию и автоматически выполните этот запрос.
--log-dir=DIRECTORYУстановите каталог файлов журналов (по умолчанию: ~/.copilot/logs/).
--log-level=LEVELУстановите уровень логарифма (выборы: none, error, warning, info, debug, all, ). default
--max-autopilot-continues=COUNTМаксимальное количество сообщений продолжения в режиме автопилота (по умолчанию: неограниченно). См . раздел AUTOTITLE.
--mode=MODEУстановите начальный режим агента (выборы: interactive, plan, autopilot). Нельзя объединить с --autopilot или --plan.
--model=MODELЗадайте модель ИИ, которую хотите использовать. Пропускайте auto возможность Copilot автоматически выбирать лучшую доступную модель.
--mouse[=VALUE]Включите поддержку мыши в режиме альтернативного экрана. VALUE может быть on (по умолчанию) или off. При включении CLI фиксирует события мыши в альтернативном экране — колесо прокрутки, щелчки и т.д. При отключении сохраняется собственное поведение мыши терминала. После установки настройка сохраняется и записывается в ваш конфигурационный файл.
-n NAME, --name=NAMEДайте название новой сессии. Используется --resume``/resume для поиска сессий по названию.
--no-ask-userОтключите ask_user инструмент (агент работает автономно, не задавая вопросов).
--no-auto-updateОтключите автоматическую загрузку обновлений CLI.
--no-bash-envОтключите BASH_ENV поддержку bash-shells.
--no-colorОтключите все цветовые выводы.
--no-custom-instructionsОтключите загрузку пользовательских инструкций из AGENTS.md и связанных файлов.
--no-experimentalОтключите экспериментальные функции.
--no-mouseОтключите поддержку мыши.
--no-remoteОтключите удалённый доступ для этой сессии.
--output-format=FORMATFORMAT может быть text (по умолчанию) или json (выводит JSONL: один JSON-объект на строку).
-p PROMPT, --prompt=PROMPTВыполните запрос программно (выходит после завершения). См . раздел AUTOTITLE.
--planНачинайте в режиме планирования. Сокращение для --mode plan. Нельзя объединить с --mode или --autopilot.
--plain-diffОтключите рендеринг rich diff (выделение синтаксиса через инструмент diff, указанный в конфигурации git).
--plugin-dir=DIRECTORYЗагрузите плагин из локальной папки (можно использовать несколько раз).
--remoteВключите удалённый доступ к этой сессии из GitHub.com и GitHub Mobile. См . раздел AUTOTITLE.
--resume[=VALUE]Возобновите предыдущую интерактивную сессию, выбрав из списка. По желанию укажите идентификатор сессии, префикс ID или имя сессии. Сопоставление имён точно и не зависит от регистра; при отсутствии явного совпадения сводки сводки возвращаются к автоматически сгенерированному резюме.
-s, --silentВыводите только ответ агента (без статистики использования), что полезно для скриптов с -p.
--screen-readerВключите оптимизацию экранных читателей.
--secret-env-vars=VAR ...Редактировать переменную среды из серверных сред shell и MCP (можно использовать несколько раз). Для множества переменных используйте список с кавычками, разделёнными запятыми. Значения в GITHUB_TOKEN переменных среды и COPILOT_GITHUB_TOKEN по умолчанию удалены из вывода.
--share=PATHПоделитесь сессией с файлом Markdown после завершения программной сессии (по умолчанию путь: ./copilot-session-<ID>.md).
--share-gistПоделитесь сессией с секретной GitHub основой после завершения программной сессии.
--stream=MODEВключите или отключите режим стриминга (выбор режима: on или off).
-v, --versionПокажите информацию о версии.
--yoloВключить все права (эквивалент --allow-all).

Для полного списка команд и опций запустите copilot help.

Примечание.

Опции --remote, --no-remote, и --connect требуют, чтобы функция удалённых сессий была доступна на вашем аккаунте.

Значения доступности инструментов

Опции и --available-tools поддерживают --excluded-tools следующие значения:

Оболочные инструменты

Имя инструментаОписание
bash / powershellВыполнение команд
list_bash / list_powershellСписок активных сессий shell
read_bash / read_powershellЧтение выхода из сессии shell
stop_bash / stop_powershellЗавершить оболочную сессию
write_bash / write_powershellОтправьте ввод в shell-сессию

Инструменты управления файлами

Имя инструментаОписание
apply_patchПрименить патчи (используемые некоторыми моделями вместо edit/create)
createСоздание новых файлов
editРедактировать файлы через замену строк
viewЧитать файлы или каталоги

Инструменты для делегирования агентов и задач

Имя инструментаОписание
list_agentsСписок доступных агентов
read_agentПроверьте статус агента по биографии
taskЗапуск субагентов

Другие инструменты

Имя инструментаОписание
ask_userЗадайте пользователю вопрос
globНайдите файлы, соответствующие шаблонам
grep (или rg)Поиск текста в файлах
show_fileПредставляйте фрагменты кода в строке в таймлайне. Доступно только в экспериментальном режиме.
skillВызов пользовательских навыков
web_fetchИзвлечение и разбор веб-контента

Шаблоны разрешений инструментов

Опции и --allow-tool принимают --deny-tool шаблоны разрешений в формате Kind(argument). Аргумент необязательн — его исключение соответствует всем подобным инструментам.

KindОписаниеПримеры паттернов
memoryХранение фактов в памяти агентаmemory
readЧтение файлов или каталогов
          `read`, `read(.env)` |

| shell | Выполнение команд shell | shell(git push), , shell(git:*)``shell | | url | Доступ к URL через web-fetch или shell | url(github.com), url(https://*.api.com) | | write | Создание или модификация файлов | write, write(src/*.ts) | | SERVER-NAME | Вызов инструмента MCP-сервера | MyMCP(create_issue), MyMCP |

Для shell правил суффикс :* совпадает с командным стволом, за которым следует пробел, предотвращая частичные совпадения. Например, shell(git:*) совпадение git push и git pull но не совпадает giteaс .

Правила отказа всегда имеют приоритет над правилами допуска, даже если --allow-all они установлены.

# Allow all git commands except git push
copilot --allow-tool='shell(git:*)' --deny-tool='shell(git push)'

# Allow a specific MCP server tool
copilot --allow-tool='MyMCP(create_issue)'

# Allow all tools from a server
copilot --allow-tool='MyMCP'

Переменные среды

VariableОписание
COLORFGBGЗапасной вариант для обнаружения фона на тёмных/светлых терминалах.
COPILOT_ALLOW_ALLУстановите на true автоматическое разрешение всех разрешений (эквивалентно --allow-all).
COPILOT_AUTO_UPDATEНастройте на false отключение автоматических обновлений.
COPILOT_CACHE_HOMEПереопределить каталог кэша (используемый для кэшей маркетплейса, автоматического обновления пакетов и других эфемерных данных). См. Каталог конфигурации CLI GitHub Copilot для стандартных параметров платформы.
COPILOT_CUSTOM_INSTRUCTIONS_DIRSСписок дополнительных каталогов для пользовательских инструкций, разделённых запятой.
COPILOT_EDITORКоманда редактора для интерактивного редактирования (проверено после $VISUAL и $EDITOR). По умолчанию vi — если ничего не установлено.
COPILOT_GH_HOST
          GitHub Имя хоста только Второй пилот CLI для Only, перевышающее `GH_HOST`. Используй, когда `GH_HOST` цель GitHub Enterprise Server , но Copilot требуется аутентификацию по GitHub.com имени, или GitHub Enterprise Cloud при имени хозяина. |

| COPILOT_GITHUB_TOKEN | Маркер проверки подлинности. Имеет приоритет над GH_TOKEN и GITHUB_TOKEN. | | COPILOT_HOME | Переопределите конфигурацию и каталог состояний. По умолчанию: $HOME/.copilot. | | COPILOT_MODEL | Задайте модель ИИ. | | COPILOT_PROMPT_FRAME | Настройте на 1 включение декоративного интерфейса вокруг входного запроса или 0 отключение его. Переопределяет PROMPT_FRAME флаг экспериментальной функции для текущей сессии. | | COPILOT_SKILLS_DIRS | Список дополнительных каталогов с разделёнными запятой для навыков. | | COPILOT_SUBAGENT_MAX_CONCURRENT | Максимальное количество параллельных субагентов по всему дереву сессий. По умолчанию: 32. Диапазон: 1256. | | COPILOT_SUBAGENT_MAX_DEPTH | Максимальная глубина вложения субагентов. По умолчанию: 6. Диапазон: 1256. | | GH_HOST | GitHub Имя хоста для обоих GitHub CLI и Второй пилот CLI (по умолчанию: github.com). Установите имя GitHub Enterprise Cloud хоста для проживания с данными. Переопределите только COPILOT_GH_HOST для Второй пилот CLI For. | | GH_TOKEN | Маркер проверки подлинности. Имеет приоритет над GITHUB_TOKEN. | | GITHUB_TOKEN | Маркер проверки подлинности. | | PLAIN_DIFF | Настройте на true отключение рендеринга rich diff. | | USE_BUILTIN_RIPGREP | Настройте на false использование системного ripgrep вместо комплектной версии. |

Настройки конфигурационных файлов

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

Примечание.

Настройки пользователя ранее хранились в ~/.copilot/config.json. Существующие настройки в этом месте автоматически переносятся ~/.copilot/settings.json при запуске.

Project инициализация для Copilot

Когда вы используете команду copilot init, или команду слэш /init в интерактивной сессии, Copilot он анализирует вашу кодовую базу и записывает или обновляет .github/copilot-instructions.md файл в репозитории. Этот пользовательский файл инструкций содержит конкретные рекомендации по проекту, которые улучшат будущие сессии CLI.

Обычно вы используете copilot init, или /init, когда начинаете новый проект или Второй пилот CLI в существующем репозитории.

          `copilot-instructions.md` Файл, который создаётся или обновляется, обычно документирует:
  • Команды сборки, тестирования и ворса.
  • Архитектура высокого уровня.
  • Специфичные для кодовой базы конвенции.

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

CLI ищет copilot-instructions.md файл при запуске, и если он отсутствует, отображается сообщение:

          💡 Инструкции второго пилота не найдено. Запустите /init, чтобы сгенерировать copilot-instructions.md файл для этого проекта.

Если вы не хотите создавать этот файл, вы можете навсегда скрыть это сообщение запуска для текущего репозитория с /init suppress помощью команды slash.

Дополнительные сведения см. в разделе Добавление пользовательских инструкций репозитория для GitHub Copilot.

Ссылка на Hooks

Хуки — это внешние команды, HTTP-веб-хуки или (только on sessionStart ) строки prompt, которые выполняются в определённых жизненных точках во время сессии, обеспечивая индивидуальную автоматизацию, контроль безопасности и интеграции. Файлы конфигурации крюков загружаются автоматически из .github/hooks/*.json вашего репозитория.

Формат конфигурации крючка

Конфигурационные файлы крючка используют формат JSON с версией 1. Каждая запись с крючком является командным хуком, HTTP-хуком или (только в sessionStart режиме) хуком для запросов.

Командные крючки

Командные хуки запускают shell-скрипты и поддерживаются на всех типах хуков.

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "type": "command",
        "bash": "your-bash-command",
        "powershell": "your-powershell-command",
        "cwd": "optional/working/directory",
        "env": { "VAR": "value" },
        "timeoutSec": 30
      }
    ]
  }
}
ПолеТипОбязательныйОписание
bashструнаОдин из bash/powershellКоманда shell для Unix.
cwdструнаНетРабочая папка для команды (относительно корня репозитория или абсолюта).
envобъектНетПеременные среды для установки (поддерживает расширение переменных).
powershellструнаОдин из bash/powershellКоманда shell для Windows.
timeoutSecчисло/номерНетВремя ожидания в секундах. По умолчанию: 30.
type"command"ДаЭтот параметр должен содержать значение "command".

Подсказочные зацепки

Подсказочные крючки автоматически отправляют текст так, будто его написал сам пользователь. Они поддерживаются только включёнными sessionStart и запускаются до того, как какой-либо первоначальный запрос пройдёт через --prompt. Текст может быть подсказкой на естественном языке или командой слэша.

{
  "version": 1,
  "hooks": {
    "sessionStart": [
      {
        "type": "prompt",
        "prompt": "Your prompt text or /slash-command"
      }
    ]
  }
}
ПолеТипОбязательныйОписание
promptструнаДаТекст для отправки — это может быть сообщение на естественном языке или команда слэша.
type"prompt"ДаЭтот параметр должен содержать значение "prompt".

HTTP-крючки

HTTP привязывает POST полезную нагрузку события как JSON к настроенному URL и парсирует тело ответа JSON. Они поддерживаются на всех типах событий hook и полезны для интеграций в стиле webhook — удалённых сервисов политики, конечных точек аудита и рабочих процессов одобрения — без необходимости локального исполняемого файла.

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "type": "http",
        "url": "https://policy.example.com/preToolUse"
      }
    ]
  }
}
ПолеТипОбязательныйОписание
type"http"ДаЭтот параметр должен содержать значение "http".
urlструнаДаURL конечной точки. Обязательно использовать http: или https:. В самом URL нет замены env var.
headersобъектНетЗапросить заголовки. Значения поддерживают $VAR / ${VAR} подстановку, ограниченную именами, указанными в .allowedEnvVars
allowedEnvVarsстрока[]НетСписок разрешений для шаблонирования значений заголовка. Для установки на непустой массив требуется HTTPS.
timeoutSecчисло/номерНетТайм-аут по запросу — через секунды. По умолчанию: 30.
          `timeout` принимается как псевдоним; `timeoutSec` имеет приоритет. |

| matcher | струна | Нет | Регулярный фильтр. Поддерживается только на preCompact, subagentStart, permissionRequest, и notification. Якорь как ^(?:pattern)$. |

Response body использует ту же JSON-схему, что и командный hook stdout для каждого события. Отвечайте 204 No Content или любому 2xx с пустым телом, когда действия не требуются.

Предупреждение

HTTP-хуки не имеют семантики выходного кода. Ответ без 2xx — это неудача с хуком, а не отказ. Чтобы отклонить вызов инструмента с помощью HTTP-хукаpreToolUse, верните 200 OK с .{"permissionDecision":"deny","permissionDecisionReason":"..."} Чтобы отказаться от HTTP-хука permissionRequest , верните 200 OK с {"behavior":"deny","message":"..."}.

Запись в крючке с обоими bash вариантами и url поля анализируется как вариант, который первым совпадает; неиспользуемое поле бесшумно отбрасывается. Всегда устанавливайте type явно и убирайте поля командного крючка при использовании HTTP-крючков.

Безопасность HTTP-крючка

HTTPS требуется в следующих случаях:

  • Когда allowedEnvVars — непустой массив — чтобы предотвратить отправку учетных данных по открытому тексту.
  • По умолчанию для preToolUse и permissionRequest хуков, чтобы защитить канал принятия решений о разрешении.

CLI применяет политику SSRF по умолчанию: любой URL, чьё имя хоста разрешается в loopback, private, link-local или облачный метаданные, отклоняется до подключения. DNS разрешается заранее, и все вернутые адреса валидируются (защита от пересвязывания DNS).

Следующие переменные среды ослабляют эти стандартные условия только для разработки и тестирования.

VariableЭффектПредполагаемое использование
COPILOT_HOOK_ALLOW_LOCALHOST=1Разрешает http:// буквально localhost, 127.*, или [::1] (правила HTTPS), и любое имя хоста, полностью разрешаемое на loopback (правило SSRF).Только местное развитие
COPILOT_HOOK_ALLOW_HTTP_AUTH_HOOKS=1Разрешения http://``preToolUse и permissionRequest крючки везде.Только тестирование

Обе переменные должны быть установлены перед запуском copilot. Не устанавливайте их глобально, в CI или в общих средах.

Семантика неудачи HTTP-хука
СостояниеBehavior
2xx + действительный JSON-корпусСхема вывода тела по каждому событию.
2xx + пустое или неJSON-телоНет действия.
Отклик не 2xxКрюк провалился. Зафиксирована ошибка. Агент продолжает.
Перенаправление 3xxКрюк проваливается («возвращение перенаправления»). Агент продолжает.
ТаймаутКрюк провалился. Зафиксирована ошибка. Агент продолжает.
Ошибка сети, DNS или TLSКрюк провалился. Зафиксирована ошибка. Агент продолжает.
Ошибка валидации конфигурации при нагрузкеВесь конфигурационный файл отклонён; никаких крючков от этого регистра.

Для и permissionRequest, сбой HTTP-хука считается preToolUse fail-open: агент переключается в стандартный поток разрешений.

События с крючками

EventСрабатывает, когдаОбработка выхода
sessionStartНачинается новая или возобновлённая сессия.Опционально — можно вернуться additionalContext для введения контекста на весь сеанс с подготовкой к каждому ходу.
sessionEndСессия заканчивается.Нет
userPromptSubmittedПользователь отправляет запрос.Нет
preToolUseПеред тем, как каждый инструмент сработает.Да — можно разрешать, отрицать или изменять.
postToolUseПосле успешного завершения каждого инструмента.Да — можно заменить успешный результат (только программные хуки SDK).
postToolUseFailureПосле того, как инструмент завершается с неудачей.Да — может предоставить навигацию по восстановлению через additionalContext (код 2 выхода для командных хуков).
agentStopГлавный агент завершает ход.Да — может блокировать и заставлять продолжение.
subagentStopСубагент завершает.Да — может блокировать и заставлять продолжение.
subagentStartПоявляется субагент (до его запуска). Возвраты additionalContext предшествуют запросу субагента. Поддерживает matcher фильтрацию по имени агента.Нет — нельзя блокировать создание.
preCompactВот-вот начнётся уплотнение контекста (ручное или автоматическое). Поддерживают matcher фильтрацию по триггерам ("manual" или "auto").Нет — только уведомление.
permissionRequestПеред показом диалога разрешения пользователю, после проверки правил не найдётся совпадения с разрешением или отказом. Поддерживает matcher regex на toolName.Да — можно разрешить или отклонить программно.
errorOccurredОшибка возникает во время выполнения.Нет
notificationСрабатывает асинхронно, когда CLI отправляет системное уведомление (завершение оболочки, завершение работы агента или простоя, запросы разрешения, диалоги вызова). Удар и забыть: никогда не блокирует сессию. Поддерживает matcher regex на notification_type.Опционально — можно вводить additionalContext в сессию.

Полезные нагрузки для ввода событий hook

Каждое событие с крючком доставляет JSON-полезную нагрузку обработчику крючков. Поддерживаются два формата полезной нагрузки, выбираемых по имени события, используемому в конфигурации крючка:

  • camelCase format — Настройте имя события в camelCase (например, sessionStart). Поля используют CamelCase.

          VS Code совместимый формат** — Настройте имя события в PascalCase (например, `SessionStart`). Поля используют snake_case для соответствия VS CodeCopilot формату расширения.

sessionStart / SessionStart

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;      // Unix timestamp in milliseconds
    cwd: string;
    source: "startup" | "resume" | "new";
    initialPrompt?: string;
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "SessionStart";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    source: "startup" | "resume" | "new";
    initial_prompt?: string;
}

sessionEnd / SessionEnd

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    reason: "complete" | "error" | "abort" | "timeout" | "user_exit";
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "SessionEnd";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    reason: "complete" | "error" | "abort" | "timeout" | "user_exit";
}

userPromptSubmitted / UserPromptSubmit

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    prompt: string;
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "UserPromptSubmit";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    prompt: string;
}

preToolUse / PreToolUse

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
}
          **
          VS Code Совместимый вход:**

При настройке с именем PreToolUseсобытия PascalCase полезная нагрузка использует snake_case имена полей, чтобы соответствовать формату VS CodeCopilot расширения:

{
    hook_event_name: "PreToolUse";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;    // Tool arguments (parsed from JSON string when possible)
}

postToolUse / PostToolUse

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
    toolResult: {
        resultType: "success";
        textResultForLlm: string;
    }
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "PostToolUse";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;
    tool_result: {
        result_type: "success" | "failure" | "denied" | "error";
        text_result_for_llm: string;
    }
}

postToolUseFailure / PostToolUseFailure

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    toolName: string;
    toolArgs: unknown;
    error: string;
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "PostToolUseFailure";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    tool_name: string;
    tool_input: unknown;
    error: string;
}

agentStop / Stop

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    stopReason: "end_turn";
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "Stop";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    stop_reason: "end_turn";
}

subagentStart

          **Входные данные:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    agentName: string;
    agentDisplayName?: string;
    agentDescription?: string;
}

subagentStop / SubagentStop

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    agentName: string;
    agentDisplayName?: string;
    stopReason: "end_turn";
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "SubagentStop";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    agent_name: string;
    agent_display_name?: string;
    stop_reason: "end_turn";
}

errorOccurred / ErrorOccurred

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    error: {
        message: string;
        name: string;
        stack?: string;
    };
    errorContext: "model_call" | "tool_execution" | "system" | "user_input";
    recoverable: boolean;
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "ErrorOccurred";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    error: {
        message: string;
        name: string;
        stack?: string;
    };
    error_context: "model_call" | "tool_execution" | "system" | "user_input";
    recoverable: boolean;
}

preCompact / PreCompact

          **Ввод CamelCase:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    transcriptPath: string;
    trigger: "manual" | "auto";
    customInstructions: string;
}
          **
          VS Code Совместимый вход:**
{
    hook_event_name: "PreCompact";
    session_id: string;
    timestamp: string;      // ISO 8601 timestamp
    cwd: string;
    transcript_path: string;
    trigger: "manual" | "auto";
    custom_instructions: string;
}

          `preToolUse` Контроль принятия решений

Крюк preToolUse может управлять выполнением инструмента, записывая JSON-объект в stdout (командные хуки) или возвращая его в тело ответа (HTTP-хуки).

ПолеЦенностиОписание
permissionDecision
          `"allow"`, , `"deny"``"ask"` | Работает ли инструмент. Пустой выход использует стандартное поведение. |

| permissionDecisionReason | струна | Агенту показали разум. Рекомендуется при принятии решения "deny" или "ask". | | modifiedArgs | неизвестно | Полностью заменяет ввод инструмента перед выполнением. Валидно только тогда, когда permissionDecision не "deny" является или "ask". | | additionalContext | струна | Поставлено в очередь для контекста для следующего хода модели. Валидно только тогда, когда permissionDecision не "deny" является или "ask". |

Примечание.

          VS Code Псевдоним (`PreToolUse`) также принимает вложенные `hookSpecificOutput.{permissionDecision, permissionDecisionReason, updatedInput, additionalContext}`. 
          `updatedInput` нормализовано до `modifiedArgs`. Области высшего уровня принимаются как запасной вариант.

          `agentStop`
           / 
          `subagentStop` Контроль принятия решений
ПолеЦенностиОписание
decision
          `"block"`, `"allow"` | 
          `"block"` заставляет другого агента поступить, используя `reason` это как подсказку. |

| reason | струна | Подсказка для следующего хода, когда decision ."block" |

          `permissionRequest` Контроль принятия решений

          `permissionRequest` Крючок срабатывает, когда вот-вот появится диалог разрешения на уровне инструмента. Он запускается после того, как проверки разрешений на основе правил не находят совпадения с разрешением или отказом. Используйте его для программного одобрения или отклонения вызовов инструментов — особенно полезно в режимах pipe (`-p`) и CI, где нет интерактивного запроса.

          **Матчер:** Необязательный регулярный выражение, тестируемое против `toolName`. При установке крюк срабатывает только при совпадающих названиях инструментов.

Выводите JSON в stdout, чтобы контролировать решение о разрешении:

ПолеЦенностиОписание
behavior
          `"allow"`, `"deny"` | Одобрить или отклонить этот инструмент. |

| message | струна | Причина возвращалась к LLM при отказе. | | interrupt | булевый | В true сочетании с "deny", агент полностью останавливается. |

Вернуть пустой выход или {} переключиться на стандартное поведение (показать пользовательский диалог или отказаться в режиме трубы). Для командных хуков выходной код 2 рассматривается как отказ; stdout JSON (если он есть) объединяется с {"behavior":"deny"}, а stderr игнорируется.

          `notification` Крюк

          `notification` Крюк срабатывает асинхронно, когда CLI издаёт системное уведомление. Эти хуки — это система «убери и забудь»: они никогда не блокируют сессию, а любые ошибки фиксируются и пропускаются.

          **Входные данные:**
{
    sessionId: string;
    timestamp: number;
    cwd: string;
    hook_event_name: "Notification";
    message: string;           // Human-readable notification text
    title?: string;            // Short title (e.g., "Permission needed", "Shell completed")
    notification_type: string; // One of the types listed below
}
          **Типы уведомлений:**
ТипКогда он срабатывает
shell_completedЗаканчивается фоновая (асинхронная) команда shell
shell_detached_completedЗавершается отделённая оболочная сессия
agent_completedФоновый субагент заканчивает (выполнен или неудачно)
agent_idleАгент фона заканчивает ход и переходит в состояние простоя (ожидание write_agent)
permission_promptАгент запрашивает разрешение на запуск инструмента
elicitation_dialogАгент запрашивает дополнительную информацию у пользователя
          **Выходные данные:**
{
    additionalContext?: string; // Injected into the session as a user message
}

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

          **Матчер:** Опциональный регуляр на `notification_type`. Паттерн закреплён как `^(?:pattern)$`. Опустите `matcher` все типы уведомлений.

Имена инструментов для подбора крючков

Имя инструментаОписание
bashВыполнять команды оболочки (Unix).
powershellВыполнять команды shell (Windows).
viewЧтение содержимого файла.
editИзменять содержимое файла.
createСоздавайте новые файлы.
globИщите файлы по шаблону.
grepПоиск по содержимому файла.
web_fetchЗагружайте веб-страницы.
taskЗапускайте задачи субагентов.

Если настраивать несколько хуков одного типа, они выполняются по порядку. Для preToolUse, если какой-либо крюк возвращается "deny", инструмент блокируется. Коды выхода применяются только к командным хукам — для HTTP-хуков см. семантику сбоя HTTP-хука. Для командных хуков выход с кодом postToolUseFailure приводит к возврату stderr в качестве руководства 2 по восстановлению для помощника. Для permissionRequest командных хуков выходной код 2 рассматривается как отказ; stdout JSON (если он есть) объединяется с {"behavior":"deny"}, а stderr игнорируется. Сбои с крючками (ненулевые коды выхода или тайм-ауты) фиксируются и пропускаются — они никогда не блокируют выполнение агентов.

Конфигурация сервера MCP

MCP-серверы предоставляют дополнительные инструменты агенту CLI. Настройте постоянные серверы в ~/.copilot/mcp-config.json. Используйте --additional-mcp-config для добавления серверов на одну сессию.

          `copilot mcp` Подкомандование

Используйте copilot mcp управление конфигурациями MCP-сервера из командной строки без запуска интерактивной сессии.

SubcommandОписание
list [--json]Перечислите все настроенные MCP-серверы, сгруппированные по источнику.
get <name> [--json]Покажите конфигурацию и инструменты для конкретного сервера.
add <name>Добавьте сервер в пользовательскую конфигурацию. Пишет на ~/.copilot/mcp-config.json.
remove <name>Удалите сервер пользовательского уровня. Серверы рабочего пространства должны быть напрямую редактированы в их конфигурационных файлах.
          **
          `copilot mcp add` Параметры:**
ОпцияОписание
-- <command> [args...]Команда и аргументы для локальных (stdio) серверов.
--url <url>URL для удалённых серверов.
--type <type>Тип транспорта: local, stdio, http, или sse.
--env KEY=VALUEПеременная окружения (повторяющая).
--header KEY=VALUEHTTP-заголовок для удалённых серверов (повторяется).
--tools <tools>Фильтр инструментов: "*" для всех, список с разделёнными запятами или "" для них.
--timeout <ms>Время ожидания в миллисекундах.
--jsonВыход добавил конфигурацию в формате JSON.
--show-secretsПокажите полные значения переменных среды и заголовка.
--config-dir <path>Путь к каталогу конфигурации.

Внимание

          `--show-secrets` Можно печатать чувствительные значения переменных среды и заголовков в ваш терминал или логи. Используйте эту опцию только в доверенных условиях и избегайте копирования, вставки или иного фиксации результатов в общих логах или истории.

Типы транспорта

ТипОписаниеОбязательные поля
local / stdioЛокальный процесс связывается через stdin/stdout.
          `command`, `args` |

| http | Удалённый сервер с использованием потокового HTTP-транспорта. | url | | sse | Удалённый сервер с использованием Server-Sent Events Transport. | url |

Поля конфигурации локального сервера

ПолеОбязательныйОписание
commandДаКоманда запускать сервер.
argsДаАргументы команд (массивы).
toolsДаИнструменты для включения: ["*"] для всех, или список конкретных названий инструментов.
envНетпеременные среды Поддержка $VAR, ${VAR}, и ${VAR:-default} расширение.
cwdНетРабочая директория сервера.
timeoutНетТайм-аут вызова инструментов — в миллисекундах.
typeНет
          `"local"` или `"stdio"`. По умолчанию: `"local"`. |

Поля конфигурации удалённых серверов

ПолеОбязательныйОписание
typeДа
          `"http"` или `"sse"`. |

| url | Да | URL сервера. | | tools | Да | Инструменты для включения. | | headers | Нет | HTTP-заголовки. Поддерживает переменное расширение. | | oauthClientId | Нет | Статический идентификатор клиента OAuth (пропускает динамическую регистрацию). | | oauthPublicClient | Нет | Является ли клиент OAuth публичным. По умолчанию: true. | | oidc | Нет | Включить инъекцию токена OIDC. Когда true, вводит GITHUB_COPILOT_OIDC_MCP_TOKEN переменную среды (локальные серверы) или Bearer``Authorization заголовок (удалённые серверы). | | timeout | Нет | Тайм-аут вызова инструментов — в миллисекундах. |

OAuth повторная аутентификация

Удалённые MCP-серверы, использующие OAuth, могут показывать needs-auth статус после истечения срока действия токена или необходимости другого аккаунта. Используйте /mcp auth <server-name> для запуска нового потока OAuth. Это открывает запрос аутентификации в браузере, позволяющий войти в систему или сменить аккаунт. После завершения процесса сервер автоматически подключается.

Фильтровое отображение

Контролировать, как обрабатывается вывод инструмента MCP с помощью filterMapping поля в конфигурации сервера.

РежимОписание
noneБез фильтрации.
markdownФорматируйте выход как Markdown.
hidden_charactersУдалите скрытые или управляющие символы. По умолчанию.

Встроенные MCP-серверы

CLI включает встроенные MCP-серверы, доступные без дополнительной настройки.

СерверОписание
github-mcp-server
          GitHub Интеграция с API: проблемы, pull requests, коммиты, поиск по коду и GitHub Actions. |

| playwright | Автоматизация браузера: навигация, клик, ввод, скриншот и обработка форм. | | fetch | HTTP-запросы через инструмент fetch . | | time | Временные утилисы: get_current_time и convert_time. |

Используйте --disable-builtin-mcps для отключения всех встроенных серверов или --disable-mcp-server SERVER-NAME для отключения конкретного сервера.

Наименование серверов MCP

Имена серверов могут содержать любые печатные символы, включая пробелы, символы Unicode и пунктуацию. Контрольные символы (U+0000–U+001F, U+007F) и закрывающая распорка (}) не разрешены. Имена серверов используются как префиксы для имён инструментов — например, сервер с именем my-server создаёт имена инструментов, такие как my-server-fetch, а сервер с именем My Server — .My Server-fetch

Уровни доверия сервера MCP

MCP-серверы загружаются из нескольких источников, каждый с разным уровнем доверия.

Исходный материалУровень доверияОбязательная проверка
Built-inВысокийНет
Хранилище (.github/mcp.json)СредняяРекомендуется
Рабочее пространство (.mcp.json)СредняяРекомендуется
Пользовательская конфигурация (~/.copilot/mcp-config.json)Определённый пользователемОтветственность пользователей
Удаленные серверыНизкийВсегда

Все вызовы инструментов MCP требуют явного разрешения. Это относится даже к операциям только для чтения на внешних сервисах.

Список разрешений корпоративного MCP

          GitHub Enterprise организации могут применять список разрешений для разрешённых MCP-серверов. При активном режиме CLI оценивает каждый нестандартный сервер по корпоративной политике перед подключением.

Когда обнаруживается GitHub Enterprise политика реестра (или MCP_ENTERPRISE_ALLOWLIST включен флаг экспериментальной функции), CLI:

  1. Вычисляет отпечаток пальца для каждого настроенного нестандартного сервера на основе его команды, аргументов и удалённых URL.
  2. Отправляет отпечатки пальцев в конечную точку оценки корпоративного списка разрешений.
  3. Разрешено только серверы, чьи отпечатки одобрены; все остальные блокируются сообщением с названием Enterprise.

Эта проверка является fail-closed: если конечная точка оценки недоступна или возвращает ошибку, нестандартные серверы блокируются до проверки политики.

Когда сервер блокируется корпоративным списком разрешений, CLI отображает:

MCP server "SERVER-NAME" was blocked by your enterprise "ENTERPRISE-NAME".
Contact your enterprise administrator to add this server to the allowlist.

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

Миграция из .vscode/mcp.json

Если ваш проект использует .vscode/mcp.json (формат конфигурации MCP VS Code), переходите на .mcp.json для GitHub Copilot CLI. Миграция переназначает servers ключ на mcpServers.

          **Раковины POSIX (bash, zsh, fish и другие):**
jq '{mcpServers: .servers}' .vscode/mcp.json > .mcp.json

Требует jq.

          **PowerShell:**
pwsh -NoProfile -Command "`$json = Get-Content '.vscode/mcp.json' -Raw | ConvertFrom-Json; `$content = ([pscustomobject]@{ mcpServers = `$json.servers } | ConvertTo-Json -Depth 100); [System.IO.File]::WriteAllText('.mcp.json', `$content, (New-Object System.Text.UTF8Encoding `$false))"

В Windows замените pwsh на powershell, если используете Windows PowerShell вместо PowerShell Core.

Справочник по навыкам

Навыки — это файлы Markdown, которые расширяют возможности CLI. Каждый навык находится в отдельном каталоге с SKILL.md файлом. При вызове (через /SKILL-NAME агента или автоматически) содержание навыка вводится в разговор.

Фронтматические поля навыков

ПолеТипОбязательныйОписание
nameструнаДаУникальный идентификатор навыка. Только буквы, цифры и дефисы. Максимум 64 символов.
descriptionструнаДаЧто делает навык и когда его использовать. Максимум 1024 символов.
allowed-toolsstring или string[]НетСписок инструментов с разделёнными запятыми или YAML-массив инструментов, которые автоматически разрешены, когда навык активен. Используйте "*" для всех инструментов.
user-invocableбулевыйНетМогут ли пользователи вызвать навык с /SKILL-NAMEпомощью . По умолчанию: true.
disable-model-invocationбулевыйНетПомешайте агенту автоматически вызвать этот навык. По умолчанию: false.

Места навыков

Навыки загружаются из этих мест в порядке приоритета (первым найденным выигрывает дублирующиеся имена).

МестоположениеОбъемОписание
.github/skills/ProjectProject-специфичные навыки.
.agents/skills/ProjectАльтернативное местоположение проекта.
.claude/skills/ProjectМесто, совместимое с Claude.
Родитель .github/skills/InheritedПоддержка родительского каталога Monorepo.
~/.copilot/skills/Личная информацияЛичные навыки для всех проектов.
~/.agents/skills/Личная информацияНавыки агента, общие для всех проектов.
~/.claude/skills/Личная информацияЛичное местоположение, совместимое с Клод.
Каталоги плагиновПлагинНавыки из установленных плагинов.
COPILOT_SKILLS_DIRSНастройкаДополнительные каталоги (разделены запятой).
(в комплекте с CLI)Built-inНавыки поставляются вместе с CLI. Самый низкий приоритет — может быть отменён любым другим источником.

Команды (альтернативный формат навыка)

Команды являются альтернативой навыкам, хранящимся в отдельных .md файлах в .claude/commands/. Имя команды происходит от имени файла. Командные файлы используют упрощённый формат (поле не name требуется) и поддерживают description, allowed-tools, и disable-model-invocation. Команды имеют меньший приоритет, чем умения с таким же названием.

Ссылка на таможенных агентов

Пользовательские агенты — это специализированные AI-агенты, определённые в файлах Markdown. Имя файла (без расширения) становится идентификатором агента. Используйте .agent.md или .md как расширение файла.

Встроенные агенты

АгентМодель по умолчаниюОписание
code-reviewКлод-сонет-4.5Высокий анализ кодов по соотношению сигнал/шум. Анализирует различия на наличие ошибок, проблем с безопасностью и логических ошибок.
configure-copilotизменяетсяВстроенный субагент для управления Второй пилот CLI конфигурацией с использованием естественного языка — добавления MCP-серверов, установки агентов и управления навыками. Доступно только в экспериментальном режиме.
exploreКлод-хайку-4.5Быстрое исследование кодовой базы. Ищет файлы, читает код и отвечает на вопросы. Возвращает сфокусированные ответы менее 300 слов. Безопасно запускать параллельно.
general-purposeКлод-сонет-4.5Полноценный агент для сложных многоступенчатых задач. Работает в отдельном контекстном окне.
researchКлод-сонет-4.6Агент глубоких исследований. Генерирует отчёт на основе информации из вашей кодовой базы, в соответствующих репозиториях и в интернете.
rubber-duckКомплементарная модельИспользуйте дополнительную модель для конструктивной критики предложений, дизайнов, реализаций или тестов. Выявляет слабые места и предлагает улучшения. При использовании Claude используется модель GPT; при использовании GPT — Claude Opus 4.7. Никогда не вносит прямых изменений в код. Доступно только в экспериментальном режиме.
taskКлод-хайку-4.5Выполнение команд (тесты, сборки, ворсы). Возвращает краткое резюме по успеху, полный результат по неудачам.

Фронтматэрные поля пользовательского агента

ПолеТипОбязательныйОписание
descriptionструнаДаОписание указано в списке агентов и task инструменте.
inferбулевыйНетРазрешить автоматическую делегацию основным агентом. По умолчанию: true.
mcp-serversобъектНетMCP-серверы для подключения. Использует ту же схему, что и ~/.copilot/mcp-config.json.
modelструнаНетМодель ИИ для этого агента. Когда не установлено, наследует модель внешнего агента. Когда модель сессии установлена в Auto (выбрано сервером), субагенты всегда наследуют разрешённую модель сессии независимо от этого поля.
nameструнаНетОтображаемое имя. По умолчанию используется имя файла.
toolsстрока[]НетИнструменты, доступные агенту. По умолчанию: ["*"] (все инструменты).

Местоположение кастомных агентов

ОбъемМестоположение
Project
          `.github/agents/` или `.claude/agents/` |

| User | ~/.copilot/agents/ или ~/.claude/agents/ | | Плагин | <plugin>/agents/ |

Агенты уровня Project имеют приоритет над агентами пользовательского уровня. Агенты плагинов имеют самый низкий приоритет.

Ограничения субагентов

CLI устанавливает ограничения на глубину и параллельность, чтобы предотвратить появление неуправляемых агентов.

ОграничениеПо умолчаниюПеременная среды
Максимальная глубина6COPILOT_SUBAGENT_MAX_DEPTH
Максимальная совместность32COPILOT_SUBAGENT_MAX_CONCURRENT
          **Глубина** определяет, сколько агентов вложено друг в друга. При достижении предела глубины самый внутренний агент не может создавать новые субагенты. 
          **Параллельность** подсчитывает, сколько субагентов работает одновременно на протяжении всего дерева сессий. При достижении лимита новые запросы субагентов отклоняются до тех пор, пока активный агент не завершит работу. Значения фиксируются между `1` и `256`.

Ответы на одобрение разрешений

Когда CLI запросит разрешение на выполнение операции, вы можете ответить следующими клавишами.

КлючЭффект
yРазрешите этот конкретный запрос один раз.
nОткажитесь в этой конкретной просьбе один раз.
!Разрешите все похожие запросы до конца сессии.
#Отклоняйте все подобные запросы до конца сессии.
?Покажите подробную информацию о запросе.

Одобрения сессий сбрасываются, когда вы запускаете /clear или начинаете новую сессию.

Мониторинг OpenTelemetry

          Второй пилот CLI может экспортировать трассы и метрики через [OpenTelemetry](https://opentelemetry.io/) (OTel), что даёт вам видимость взаимодействия с агентами, вызовы LLM, выполнение инструментов и использование токенов. Все имена и атрибуты сигналов следуют [семантическим конвенциям OTel GenAI](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/gen-ai/).

OTel по умолчанию выключен без накладных расходов. Он активируется при выполнении любого из следующих условий:

  • COPILOT_OTEL_ENABLED=true
  • OTEL_EXPORTER_OTLP_ENDPOINT задано
  • COPILOT_OTEL_FILE_EXPORTER_PATH задано

Переменные среды OTel

VariableПо умолчаниюОписание
COPILOT_OTEL_ENABLEDfalseЯвно включите OTel. Не обязательно, если OTEL_EXPORTER_OTLP_ENDPOINT установлено.
OTEL_EXPORTER_OTLP_ENDPOINTURL конечной точки OTLP. Настройка этого автоматически включает OTel.
COPILOT_OTEL_EXPORTER_TYPEotlp-httpТип экспортера: otlp-http или file. Автоматический file выбор при COPILOT_OTEL_FILE_EXPORTER_PATH установлении.
OTEL_SERVICE_NAMEgithub-copilotИмя сервиса в атрибутах ресурса.
OTEL_RESOURCE_ATTRIBUTESДополнительные атрибуты ресурсов в виде пар, разделённых key=value по запятым. Используйте процентное кодирование для специальных символов.
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENTfalseСобирайте полный контент с подсказками и ответами. См. Захват контента.
OTEL_LOG_LEVELУровень диагностического лога OTel: NONE, ERROR, WARN, INFO, DEBUG``VERBOSE, , . ALL
COPILOT_OTEL_FILE_EXPORTER_PATHЗапишите все сигналы в этот файл как JSON-строки. Настройка этого автоматически включает OTel.
COPILOT_OTEL_SOURCE_NAMEgithub.copilotНазвание приборного прицела для трассера и счетчика.
OTEL_EXPORTER_OTLP_HEADERSЗаголовки аутентификации для экспортера OTLP (например, Authorization=Bearer token).

Traces

Время выполнения создаёт иерархическое дерево span для каждого взаимодействия агента. Каждое дерево содержит корневый invoke_agent размах, с chat и execute_tool дочерними spans.

          `invoke_agent` Атрибуты размаха

Обворачивает весь вызов агента: все LLM-вызовы и выполнение инструментов для одного пользовательского сообщения.

  • Верхнеуровневые сессии используют span kind CLIENT (удалённый вызов сервиса) с server.address и server.port.
  • Вызовы субагентов (например, explore, task) используют span kind INTERNAL (in-process) без атрибутов сервера.
АтрибутОписаниеВид размаха
gen_ai.operation.nameinvoke_agentBoth
gen_ai.provider.nameПровайдер (например, github, anthropic)Both
gen_ai.agent.idИдентификатор сессииBoth
gen_ai.agent.nameИмя агента (если доступно)Both
gen_ai.agent.descriptionОписание агента (если доступно)Both
gen_ai.agent.versionВерсия среды выполненияBoth
gen_ai.conversation.idИдентификатор сессииBoth
gen_ai.request.modelЗапрошенная модельBoth
gen_ai.response.finish_reasons
          `["stop"]` или `["error"]` | Both |

| gen_ai.usage.input_tokens | Общее количество входных жетонов (все ходы) | Both | | gen_ai.usage.output_tokens | Общее количество токенов выхода (все ходы) | Both | | gen_ai.usage.cache_read.input_tokens | Кэшированные входные токены считываются | Both | | gen_ai.usage.cache_creation.input_tokens | Созданы кэшированные входные токены | Both | | github.copilot.turn_count | Количество поездок с LLM туда и обратно | Both | | github.copilot.cost | Денежные затраты | Both | | github.copilot.aiu | Потраченные единицы ИИ | Both | | server.address | Имя хоста сервера | Только CLIENT | | server.port | Порт сервера | Только CLIENT | | error.type | Имя класса ошибки (по ошибке) | Both | | gen_ai.input.messages | Полные вводные сообщения в формате JSON (только захват контента) | Both | | gen_ai.output.messages | Полный вывод сообщений в формате JSON (только захват контента) | Both | | gen_ai.system_instructions | Системный запрос контента в формате JSON (только захват контента) | Both | | gen_ai.tool.definitions | Схемы инструментов в формате JSON (только захват контента) | Both |

          `chat` Атрибуты размаха

Один проём на запрос LLM. Размах видов: CLIENT.

АтрибутОписание
gen_ai.operation.namechat
gen_ai.provider.nameИмя поставщика
gen_ai.request.modelЗапрошенная модель
gen_ai.conversation.idИдентификатор сессии
gen_ai.response.idИдентификатор ответа
gen_ai.response.modelРазрешённая модель
gen_ai.response.finish_reasonsПричины остановки
gen_ai.usage.input_tokensВходные токены на этом ходу
gen_ai.usage.output_tokensТокены выхода в этом ходу
gen_ai.usage.cache_read.input_tokensКэшированные токены считываются
gen_ai.usage.cache_creation.input_tokensСозданные кэшированные токены
github.copilot.costСтоимость хода
github.copilot.aiuЮниты искусственного интеллекта потратили этот ход
github.copilot.server_durationДлительность на стороне сервера
github.copilot.initiatorИнициатор запроса
github.copilot.turn_idИдентификатор поворота
github.copilot.interaction_idИдентификатор взаимодействия
github.copilot.time_to_first_chunkВремя до первого стриминга, за секунды (только для стриминга)
server.addressИмя хоста сервера
server.portПорт сервера
error.typeИмя класса ошибки (по ошибке)
gen_ai.input.messagesПолные запросы в формате JSON (только захват контента)
gen_ai.output.messagesПолные ответные сообщения в формате JSON (только захват контента)
gen_ai.system_instructionsСистемный запрос контента в формате JSON (только захват контента)

          `execute_tool` Атрибуты размаха

Один размах на вызов инструмента. Размах видов: INTERNAL.

АтрибутОписание
gen_ai.operation.nameexecute_tool
gen_ai.provider.nameИмя поставщика (если доступно)
gen_ai.tool.nameИмя инструмента (например, readFile)
gen_ai.tool.typefunction
gen_ai.tool.call.idИдентификатор вызова инструмента
gen_ai.tool.descriptionОписание инструмента
error.typeИмя класса ошибки (по ошибке)
gen_ai.tool.call.argumentsАргументы ввода инструмента в формате JSON (только захват контента)
gen_ai.tool.call.resultВывод инструмента в формате JSON (только захват контента)

Metrics

Метрики конвенции GenAI

Единица измеренияТипЕдиница измеренияОписание
gen_ai.client.operation.durationГистограммаsДлительность вызова LLM API и вызова агента
gen_ai.client.token.usageГистограммаtokensПодсчёт жетонов по типу (input/output)
gen_ai.client.operation.time_to_first_chunkГистограммаsПора получить первый стриминговый блок
gen_ai.client.operation.time_per_output_chunkГистограммаsЗадержка между блоками после первого чанка

Метрики, специфичные для поставщика

Единица измеренияТипЕдиница измеренияОписание
github.copilot.tool.call.countСчетчикcallsВызовы инструментов с gen_ai.tool.name помощью и success
github.copilot.tool.call.durationГистограммаsЗадержка выполнения инструмента по gen_ai.tool.name
github.copilot.agent.turn.countГистограммаХодыТуда и обратно на LLM на вызов агента

Временные события

События жизненного цикла, зафиксированные на активном chat или invoke_agent промежуточном цикле.

EventОписаниеКлючевые атрибуты
github.copilot.hook.startНачался крюк
          `github.copilot.hook.type`, `github.copilot.hook.invocation_id` |

| github.copilot.hook.end | Крюк выполнен успешно | github.copilot.hook.type, github.copilot.hook.invocation_id | | github.copilot.hook.error | Крюк не сработал | github.copilot.hook.type, , github.copilot.hook.invocation_id``github.copilot.hook.error_message | | github.copilot.session.truncation | История разговоров была сокращена | github.copilot.token_limit, github.copilot.pre_tokens, github.copilot.post_tokens``github.copilot.pre_messages``github.copilot.post_messages``github.copilot.tokens_removed``github.copilot.messages_removed``github.copilot.performed_by | | github.copilot.session.compaction_start | Начало уплотнения в истории | Нет | | github.copilot.session.compaction_complete | Завершено уплотнение истории | github.copilot.success, github.copilot.pre_tokens, github.copilot.post_tokens, github.copilot.tokens_removed``github.copilot.messages_removed, , ( github.copilot.message только захват контента) | | github.copilot.skill.invoked | Был вызван навык | github.copilot.skill.name, , github.copilot.skill.path``github.copilot.skill.plugin_name``github.copilot.skill.plugin_version | | github.copilot.session.shutdown | Сессия закрывается | github.copilot.shutdown_type, github.copilot.total_premium_requests, , github.copilot.lines_added, github.copilot.lines_removed``github.copilot.files_modified_count | | github.copilot.session.abort | Пользователь отменил текущую операцию | github.copilot.abort_reason | | exception | Ошибка сессии | github.copilot.error_type, , github.copilot.error_status_code``github.copilot.error_provider_call_id |

Атрибуты ресурсов

Все сигналы несут эти атрибуты ресурсов.

АтрибутЦенность
service.name
          `github-copilot` (настраивается через `OTEL_SERVICE_NAME`) |

| service.version | Версия среды выполнения |

Захват контента

По умолчанию не фиксируется содержимое запросов, ответы или аргументы инструментов — только метаданные, такие как названия моделей, количество токенов и длительность. Чтобы охватить полный контент, установите OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true.

Предупреждение

Захват контента может включать чувствительную информацию, такую как код, содержимое файлов и пользовательские подсказки. Включайте это только в доверенных средах.

Когда включено захват контента, заполняются следующие атрибуты.

АтрибутContent
gen_ai.input.messagesПолные сообщения с подсказками (JSON)
gen_ai.output.messagesПолные ответные сообщения (JSON)
gen_ai.system_instructionsСодержимое системных подсказок (JSON)
gen_ai.tool.definitionsСхемы инструментов (JSON)
gen_ai.tool.call.argumentsАргументы ввода инструментов
gen_ai.tool.call.resultВывод инструментов

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