Skip to main content
Skip to content

Каталог конфигурации CLI GitHub Copilot

Найдите информацию о ~/.copilot каталоге, где Copilot CLI хранятся конфигурации, данные сессий и настройки.

Copilot CLI Хранит свою конфигурацию, историю сессий, журналы и настройки в одном каталоге на вашем компьютере. По умолчанию эта папка ( ~/.copilot то есть $HOME/.copilot).

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

Обзор каталога

Каталог ~/.copilot содержит следующие элементы верхнего уровня.

ПутьТипОписание
agents/DirectoryОпределения персональных кастомных агентов
config.jsonФайлАвтоматически управляемое состояние приложения (аутентификация, установленные плагины и другие внутренние данные)
copilot-instructions.mdФайлЛичные индивидуальные инструкции (применяются ко всем сессиям)
extensions/DirectoryПерсональные расширения, загруженные CLI
hooks/DirectoryСкрипты с крючками на уровне пользователя
ide/DirectoryСостояние интеграции IDE
installed-plugins/DirectoryУстановленные файлы плагинов
instructions/DirectoryДополнительные личные *.instructions.md дела
logs/DirectoryФайлы журнала сессии
lsp-config.jsonФайлОпределения серверов LSP на уровне пользователя
mcp-config.jsonФайлОпределения серверов MCP на уровне пользователя
mcp-oauth-config/DirectoryРезервное хранилище токена MCP OAuth и регистрационного резерва
mcp-secrets/DirectoryЛокальное резервное хранилище и индекс секретных заполнятелей MCP
permissions-config.jsonФайлСохранённые права на инструменты и каталоги для каждого проекта
plugin-data/DirectoryПостоянные данные для установленных плагинов
providers.jsonФайлПоставщик и реестр моделей на уровне пользователя с собственным ключом (BYOK)
session-state/DirectoryИстория сессий и данные рабочего пространства
command-history-state/DirectoryДанные истории командования
session-store.dbФайлБаза данных SQLite для данных между сессиями
settings.jsonФайлВаши личные настройки конфигурации
skills/DirectoryОпределения личных индивидуальных навыков

Примечание.

Не все эти предметы появляются сразу. Некоторые создаются по запросу при первом использовании конкретной функции — например, installed-plugins/ появляются только после установки первого плагина.

Файлы, редактируемые пользователем

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

settings.json

Это основной конфигурационный файл для Copilot CLI. В течение сессии вы можете использовать интерактивную /settings команду для изменения конкретных значений или запустить /settings KEY VALUE её для установки одного значения. См . раздел AUTOTITLE. В качестве альтернативы можно редактировать settings.json файл напрямую в текстовом редакторе. Файл поддерживает JSON с комментариями (JSONC).

По умолчанию этот файл находится в ~/.copilot каталоге, который является пользовательской конфигурационной директорией. Он содержит глобальные пользовательские настройки по умолчанию для всех репозиториев. Вы можете изменить расположение этой директории, установив COPILOT_HOME переменную окружения на другой путь.

Примечание.

Параметры, редактируемые пользователем, хранятся в settings.json. Эти параметры изначально хранились в config.json. Все параметры пользователя игнорируются config.json . Этот файл используется для хранения внутреннего состояния, например установленных подключаемых модулей и доверенных папок.

Если settings.json не удается прочитать, проанализировать или проверить, Copilot CLI игнорирует недопустимые значения и отображает предупреждение о запуске на временной шкале, на которой вы направляете на вкладку /settings"Проблемы" команды. Откройте эту вкладку, чтобы увидеть конкретную ошибку, а затем исправьте сообщаемую проблему для восстановления затронутых параметров.

Если settings.json содержит ключ верхнего уровня, который не является распознаваемым параметром (например, опечаткой), он отображается на вкладке /settings"Проблемы" Copilot CLI команды вместо временной шкалы или в stderr. Метка вкладки показывает количество (например, Problems (2)) при возникновении проблем с любой областью конфигурации. $schema допускается и никогда не сообщается.

Если ~/.copilot/settings.json это асимметричная ссылка, например для синхронизации параметров с помощью репозитория dotfiles, записи из /settings команды следуют симлинку и обновляют целевой объект вместо замены симлинка обычным файлом.

Полный список настроек и их взаимодействие с конфигурацией на уровне репозитория см. раздел «Настройки конфигурационных файлов » позже в этой статье.

Совет

Запусти copilot help config в терминале для быстрой справки.

Используйте copilot config из оболочки за пределами сеанса для чтения или изменения параметров, неинтерактивно — аналог скрипта в команде косой /settings черты. Добавьте --repo или --local в целевой .github/copilot/settings.json или .github/copilot/settings.local.json вместо файла параметров пользователя. Можно записать только переопределимые ключи . Полный справочник по команде см. в разделе AUTOTITLE .

copilot-instructions.md

Личные индивидуальные инструкции, которые применимы ко всем вашим сессиям, независимо от того, над каким проектом вы работаете. Этот файл работает так же, как репозиторий copilot-instructions.md , но применяется глобально.

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

instructions/

Здесь храните дополнительные личные инструкции в виде *.instructions.md файлов. Они загружаются вместе copilot-instructions.md и применяются ко всем вашим сессиям. Вы можете организовать инструкции по темам — например, ~/.copilot/instructions/code-style.instructions.md.

mcp-config.json

Определяет серверы MCP (Model Context Protocol), доступные на уровне пользователя. Эти серверы доступны во всех ваших сессиях, независимо от того, в каком вы каталоге проектов. Project-уровневые конфигурации MCP (в .mcp.json или .github/mcp.json) имеют приоритет над определениями на уровне пользователя при конфликте имён серверов.

Дополнительные сведения см. в разделе Добавление MCP-серверов для GitHub Copilot CLI.

lsp-config.json

Определяет серверы Language Server Protocol (LSP), доступные на уровне пользователя. Эти серверы предоставляют агенту языковой интеллект (диагностику, завершение и т.д.). Управляйте этим файлом с помощью /lsp команды slash или редактируйте его напрямую.

Дополнительные сведения см. в разделе Добавление серверов LSP для GitHub Copilot CLI.

providers.json

Определяет реестр поставщиков и моделей с собственным ключом (BYOK) в качестве объекта JSON с providers ключами и models ключами. Когда этот файл объявляет любой поставщик или модель, он имеет приоритет над устаревшими COPILOT_PROVIDER_* переменными среды.

По умолчанию этот файл расположен по адресу ~/.copilot/providers.json. Переопределите его расположение с помощью переменной COPILOT_PROVIDERS_CONFIG среды.

Модели в этом файле доступны вместе с моделями, предоставляемыми Copilot вашей подпиской. После редактирования файла вручную перезапустите Copilot CLI , чтобы загрузить изменения. Инструкции по настройке см. в разделе Добавление моделей LLM в интерфейс командной строки GitHub Copilot.

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

Ключи API, маркеры носителя и значения заголовков в этом файле хранятся в виде обычного текста. Не фиксируйте файл в репозитории или не делитесь им, не удаляя учетные данные. Такие значения, как $MY_API_KEY литеральные строки, а не ссылки на переменные среды.

Структура конфигурации поставщика

Используйте объект JSON без примечаний или запятых. Файл содержит два массива. Каждый поставщик определяет подключение, и каждая модель ссылается на одного из этих поставщиков по имени. В приведенных ниже [] таблицах означает запись в массиве. Например, models[].capabilities.supports.vision параметр vision``supports``capabilitiesвнутри элемента модели.

ПолеТипОбязательныйDefaultОписание
providersМассив объектовНет[]Подключения поставщика. См. параметры поставщика.
modelsМассив объектовНет[]Модели, доступные через эти подключения. См. параметры модели.

Отсутствующий или пустой файл или файл без записей поставщика или модели позволяет CLI вернуться к COPILOT_PROVIDER_* переменным среды. null Значение для любого массива рассматривается как пустой массив. Вместо этого файл с недопустимыми записями JSON или недопустимыми поставщиками или моделями создает ошибку конфигурации.

Чтобы использовать настроенную модель при запуске интерфейса командной строки, перейдите PROVIDER-NAME/MODEL-ID к параметру --model . PROVIDER-NAME — это значение поставщика name и MODEL-ID является значением модели id . Например, выполните команду copilot --model local/qwen3:8b. Кроме того, во время интерактивного сеанса можно ввести /model и выбрать модель из средства выбора.

Этот файл настраивает подключения, возможности модели и инструкции по модели для использования.Copilot CLI Json в этом файле не является текстом запроса API поставщика. Параметры не передаются поставщику при их добавлении в этот файл.

Параметры поставщиков

Каждая запись в providers ней принимает следующие поля. Только name и baseUrl всегда обязательны. Требования к проверке подлинности зависят от поставщика.

ПолеТипОбязательныйDefaultОписание
providers[].nameStringДаNoneУникальное имя для этого соединения, например "local" или "my-anthropic". Не должен содержать /. Модели ссылаются на это имя с помощью поля provider .
providers[].typeStringНет"openai"Тип подключения: "openai" для API сообщений, совместимых с OpenAI, "azure" для Azure OpenAI, "anthropic" для API сообщений Anthropic или "local_model" для локальной модели, обслуживаемойllama-server.
providers[].baseUrlСтрока, содержащая URL-адрес или путь к файлуДаNoneБазовый URL-адрес API поставщика. Для ИНТЕРФЕЙСов API, совместимых с OpenAI, включите необходимый префикс API, например https://api.openai.com/v1 Ollama или http://127.0.0.1:11434/v1 Ollama. Для прямого Anthropic доступа используйте https://api.anthropic.com. Для Azure используйте конечную точку ресурса. Вместо "type": "local_model"этого это может быть путь к файлу .gguf модели.
providers[].wireApiStringНет"completions"Формат API для подключений OpenAI и Azure: "completions" для завершения чата или "responses" ДЛЯ API ответов. Игнорируется для Anthropic.
providers[].transportStringНет"http"Принимает "http" или "websockets". WebSockets требуется "type": "openai" и "wireApi": "responses"поставщик должен поддерживать этот транспорт.
providers[].apiKeyStringЗависимость от поставщикаСброситьКлюч API поставщика. Может быть опущено для локального сервера без проверки подлинности.
providers[].bearerTokenStringЗависимость от поставщикаСброситьМаркер носителя без Bearer префикса. Имеет приоритет, когда apiKey обе установлены. Это статический маркер, а не команда обновления маркеров.
providers[].headersObjectНетСброситьДополнительные заголовки HTTP с именами заголовков в виде ключей и строк в качестве значений.
providers[].headers.<header-name>StringНетСброситьНапример, "X-Project": "my-project"значение заголовка. Используйте apiKey или bearerToken для стандартной проверки подлинности поставщика.
providers[].azureObjectНетСброситьпараметры Azure. Содержит apiVersion поле, описанное ниже.
providers[].azure.apiVersionStringНетСброситьВерсия API Azure для запроса. Если задано значение непустой строки версии, поддерживаемой конечной точкой, интерфейс командной строки использует API развертывания с версией. При опущении интерфейс командной строки использует API без /openai/v1 версий.
providers[].localModelObjectНетСброситьПараметры сервера для управляемой .gguf интерфейсом командной строки модели. См. параметры сервера локальной модели.
providers[].modelProviderStringНетВывод из подключенияМетка поставщика, используемая только для телеметрии. Распознанные значения: "openai", , "anthropic", "azure_openai"``"ollama", "lm_studio"и "foundry_local"``"llama_cpp". Не изменяет поведение протокола подключения или модели.
providers[].hasBearerTokenProviderBooleanНетfalseУказывает, что приложение, использующее пакет SDK, предоставляет маркеры через обратный вызов. Не указывайте это при настройке интерфейса командной строки вручную. Если он задан в этом файле, он true не регистрирует поставщика маркеров.

Файл именованного поставщика не поддерживается apiKeyCommand. Не помещайте учетные данные или команды обновления маркеров в metadata или localModel.args.

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

Эти параметры применяются только в том случае, baseUrl если providers[].type``"local_model" это путь к файлу.gguf. Интерфейс командной строки начинается llama-server при первом использовании модели. Исполняемый файл должен быть установлен и доступен.PATH Используйте абсолютный путь модели, чтобы избежать в зависимости от каталога, с которого запускается интерфейс командной строки.

Если baseUrl это URL-адрес HTTP или HTTPS, интерфейс командной строки подключается к существующему серверу и не использует эти параметры запуска. Они также не настраивают Ollama или другие серверы, совместимые с OpenAI.

Все поля внутри providers[].localModel являются необязательными.

ПолеТипDefaultОписание
providers[].localModel.ctxSizeНеотрицательное целое число
llama-server По умолчаниюЗапрошенный размер контекста в токенах, переданный как --ctx-size. Фактическое выделение может быть меньше запрошенного.
providers[].localModel.nGpuLayersНеотрицательное целое число
llama-server По умолчаниюКоличество уровней модели для разгрузки на GPU, переданного как --n-gpu-layers.
providers[].localModel.parallelНеотрицательное целое число1Число слотов сервера, передаваемых как --parallel. Несколько слотов могут разделить доступный контекст между запросами.
providers[].localModel.argsМассив строк[]Дополнительные llama-server аргументы. Каждый аргумент представляет собой отдельную строку, например ["--threads", "8"]. Ниже приведены аргументы, созданные из указанных выше полей.
providers[].localModel.persistBooleanfalseЗапрашивает, что управляемый сервер остается запущен после чистого выхода CLI, чтобы последующий процесс CLI может повторно использовать его. В противном случае интерфейс командной строки очищает сервер при выходе.
providers[].localModel.logsСтрока, содержащая путь к файлу или "inherit"Выходные данные отмененыДобавляет стандартные выходные данные сервера и выходные данные ошибок в указанный файл. Используйте абсолютный путь.
"inherit" отправляет выходные данные в терминал и может препятствовать отображению интерфейса командной строки.

Интерфейс командной строки управляет путем модели сервера, узлом и портом. Невозможно передать --model, -m``--hostили --port через args, включая такие формы, как --port=8080.

Параметры модели

Каждая запись в models ней принимает следующие поля. Только id и provider являются обязательными.

ПолеТипОбязательныйDefaultОписание
models[].idStringДаNoneИдентификатор модели, используемый в интерфейсе командной строки. Должен быть уникальным в пределах своего поставщика. Также используется в качестве имени модели поставщика, если wireModel не задано.
models[].providerStringДаNoneДолжен соответствовать name записи в providers.
models[].wireModelStringНетЗначение параметра idИмя модели или развертывания, отправленное поставщику. Используйте это, когда поставщик ожидает другое имя от идентификатора, который вы хотите выбрать в CLI.
models[].modelIdStringНетЗначение параметра idУдостоверение модели, используемое для поиска поведения и по умолчанию для конкретной модели интерфейса командной строки. Для псевдонима или имени развертывания задайте для нее распознанный идентификатор базовой модели. Это не изменяет имя модели, отправленное поставщику.
models[].nameStringНетPROVIDER-NAME/MODEL-IDОтображаемое имя модели. Не изменяет идентификатор выбора.
models[].maxPromptTokensIntegerНетЗависимый от модели, в противном случае 128000Бюджет входного токена. Используйте положительное целое число, соответствующее модели и развертыванию.
models[].maxContextWindowTokensIntegerНетОграничение известной модели, в противном случае не заданоОбщее ограничение контекстного окна, включая входные и выходные маркеры. Задайте этот параметр для моделей, предел которых не знает интерфейс командной строки.
models[].maxOutputTokensIntegerНетЗависимые от модели и поставщикаБюджет выходных маркеров. Поставщик и требования к рассуждениям модели могут дополнительно ограничить выходные данные.
models[].capabilitiesObjectНетЗначения по умолчанию моделиОписание поддерживаемых функций и ограничений. См. статью "Возможности модели".
models[].systemMessageObjectНетСтандартные инструкции ПО CLIДобавляет, заменяет или настраивает системные инструкции для этой модели. См. системные сообщения модели.
models[].metadataObjectНетСброситьДополнительные описательные данные, включая сведения, сохраненные при обнаружении модели. См. метаданные модели.

Три поля ограничения маркеров принимают целые числа от 0``4294967295. Используйте положительные значения, подходящие для развертывания, а не как 0 способ отключить ограничение. Эти параметры сообщают интерфейсу командной строки, какие ограничения следует использовать, но не увеличивайте фактическую емкость модели.

Возможности модели

Объект models[].capabilities описывает модель. Установка функции, которая не добавляет эту функцию true в модель, которая не поддерживает ее.

ПолеТипОписание
models[].capabilities.familyStringОписательный идентификатор семейства моделей. Используйте modelIdне это поле, чтобы выбрать поведение для конкретной модели интерфейса командной строки.
models[].capabilities.supportsObjectПоддерживаемые функции. См. сведения о поддерживаемых функциях модели.
models[].capabilities.limitsObjectОграничения маркера и изображения. См. ограничения возможностей модели.

Все поля возможностей являются необязательными. Объекты объединяются со значениями по умолчанию модели, а массивы заменяют соответствующие массивы по умолчанию.

Поддерживаемые функции модели

Следующие поля относятся внутри models[].capabilities.supports.

ПолеТипОписание
models[].capabilities.supports.visionBooleanПринимает ли модель изображения. По умолчанию используется, false если нет других сведений о возможностях.
models[].capabilities.supports.toolCallsBooleanПоддерживает ли модель вызовы инструментов. Правописание tool_calls также принимается и имеет приоритет, если оба присутствуют. В этом описана поддержка, а не разрешение на запуск средств.
models[].capabilities.supports.streamingBooleanПоддерживает ли модель потоковые ответы. Это сведения о возможностях, а не параметр для включения или отключения потоковой передачи ответов.
models[].capabilities.supports.adaptive_thinkingСтрока или логическое значениеПоддержка модели для Anthropic адаптивного мышления. Предпочитайте одно из строковых значений, описанных ниже. Для совместимости, true средств и false средств"unsupported"``"optional".
models[].capabilities.supports.reasoning_effortМассив строкУровни усилий по соображениям, поддерживаемые моделью. Это объявляет доступные уровни, а не уровень, используемый для запроса. Интерфейс командной строки также применяет ограничения для конкретной модели.
models[].capabilities.supports.thinkingBooleanОписательные сведения о поддержке, которые могут сохраняться при обнаружении модели. Сам по себе не настраивает мышление или включает элементы управления усилиями по анализу.
models[].capabilities.supports.reasoningEffortЛогический или массив строкПоле совместимости. Логический элемент управления не включает элементы управления аргументами, а массив не используется последовательно в функциях CLI. Используется reasoning_effort для списка поддерживаемых уровней.

Значения adaptive_thinking имеют следующие значения.

ValueMeaning
"unsupported"Модель не поддерживает адаптивное мышление. Это не исключает другие формы рассуждений.
"optional"Модель поддерживает адаптивное мышление, но не требует его.
"required"При включении мышления модель требует адаптивного мышления вместо бюджета ручного мышления. Мышление по-прежнему может быть отключено.
"adaptive_only"Модель требует адаптивного мышления и не позволяет думать об отключении.

Для reasoning_effort, интерфейс командной строки распознает "none", "minimal", "low", "medium", "high"``"xhigh"и "max". Список только уровней, поддерживаемых моделью, например ["low", "medium", "high"]. Опущенный или пустой список оставляет интерфейс командной строки для использования по умолчанию для конкретной модели. Выберите уровень с --reasoning-effort помощью средства выбора моделей, где они доступны.

Ограничения возможностей модели

Следующие поля относятся внутри models[].capabilities.limits. Все они необязательны.

ПолеТипОписание
models[].capabilities.limits.max_prompt_tokensIntegerБюджет входного токена. Соответствует <license type="expression">.
models[].capabilities.limits.max_context_window_tokensIntegerОбщее ограничение контекстного окна. Соответствует <license type="expression">.
models[].capabilities.limits.max_output_tokensIntegerБюджет маркера вывода. Соответствует <license type="expression">.
models[].capabilities.limits.visionObjectОграничения изображений, содержащие указанные ниже поля.
models[].capabilities.limits.vision.supported_media_typesМассив строкПринятые типы MIME изображений, такие как "image/jpeg", "image/png"и "image/webp". Эти три типа являются значениями по умолчанию.
models[].capabilities.limits.vision.max_prompt_imagesIntegerМаксимальное количество изображений на запрос. Значение по умолчанию — 1.
models[].capabilities.limits.vision.max_prompt_image_sizeIntegerМаксимальный размер каждого изображения в байтах. Значение по умолчанию — 3145728 3 МиБ.

Предпочитайте поля модели maxPromptTokens``maxContextWindowTokensи maxOutputTokens поля при настройке бюджетов маркеров вручную. Обнаружение может сохранять ограничения в обоих местах. Сохраняйте согласованность повторяющихся значений, так как различные операции CLI считывают два представления. Для локальных серверов, управляемых интерфейсом командной строки, измеряемое ограничение контекста может иметь приоритет над настроенным значением.

Используйте не отрицательные целые числа для количества маркеров и размеров изображений, а также положительное целое число для количества изображений. Счетчики маркеров и количество изображений должны соответствовать 0``4294967295. Размеры изображений измеряются в байтах, а не в маркерах.

Системные сообщения модели

models[].systemMessage управляет системными инструкциями, используемыми при создании стандартного запроса для этой модели, включая подагенты общего назначения. Он имеет приоритет над конфигурацией сообщений на уровне сеанса в этих путях. Он не заменяет инструкции выбранного пользовательского агента или специализированного подагента.

Предпочитайте, "mode": "append" если вам нужны только дополнительные инструкции. Замена или удаление встроенных инструкций может изменить использование средства CLI и другое ожидаемое поведение. Опустить systemMessage , чтобы сохранить стандартные инструкции, а не задать для него значение null.

ПолеТипОбязательныйОписание
models[].systemMessage.modeStringНет
"append" (по умолчанию), "replace"или "customize". См. таблицу режима ниже.
models[].systemMessage.contentStringВ режиме replaceТекст для добавления или использования в качестве инструкций по замене. В customize режиме это добавляется после изменения раздела.
models[].systemMessage.sectionsObjectНетИзменения раздела, доступные только в customize режиме. См. разделы "Системное сообщение".
models[].systemMessage.contentBlocksМассив объектовНетИнструкции по замене разделены на блоки, доступные только в replace режиме. См. раздел "Блоки содержимого системного сообщения".

Принимаются только поля, перечисленные в режиме. Например, добавление sections без параметров "mode": "customize" приводит к ошибке конфигурации.

ModeПринятые поляЭффект
"append"
mode, contentСохраняет стандартный запрос и добавления content. Опущение mode выбирает этот режим.
"replace"
mode, , content``contentBlocksЗаменяет стандартные инструкции.
content должен присутствовать в виде строки, даже если вы предоставляете contentBlocks. Интерфейс командной строки по-прежнему может добавлять применимые среды и контекст агента.
"customize"
mode, , sections``contentИзменяет именованные разделы стандартного запроса и при необходимости добавляется content. Разделы, которые не изменяются, сохраняют значения по умолчанию.

В содержимом замены {{copilot:memories}} вставляет инструкции и контексты памяти ИНТЕРФЕЙСА командной строки при наличии.

Разделы системного сообщения

В режиме customize``models[].systemMessage.sections сопоставляет имена разделов с объектами. Каждый объект задает action и при необходимости content. Например, models[].systemMessage.sections.tone изменяет раздел тона.

ПолеТипОбязательныйОписание
models[].systemMessage.sections.<section-name>ObjectНетИзменение одного из разделов или групп, перечисленных ниже.
models[].systemMessage.sections.<section-name>.actionStringДа, для каждой записи
"replace", "remove", "append", "prepend" или "preserve".
models[].systemMessage.sections.<section-name>.contentStringНетТекст, используемый replace, appendили prepend. Опущенное содержимое рассматривается как пустое. Не требуется или remove``preserve.

Доступны указанные ниже действия.

ActionЭффект
"replace"Заменяет раздел или группу contentна .
"remove"Удаляет раздел или группу. Удаление группы сохраняет разделы с собственными записями sections.
"append"Добавляется content после раздела или группы. Включите в него все обязательные пробелы contentили новые линии.
"prepend"Добавляется content перед разделом или группой. Включите в него все обязательные пробелы contentили новые линии.
"preserve"Оставляет раздел без изменений и защищает его от удаления через группу. Не защищает его от замены группы.

Действие transform не поддерживается providers.json , так как для него требуется обратный вызов приложения, а не сохраненная конфигурация JSON.

Используйте следующие имена разделов или групп в качестве ключей.sections

NameKindСодержимое покрыто
preambleСекцияВводные инструкции по идентификации помощника.
toneСекцияСтиль тона и ответа.
tool_efficiencyСекцияРуководство по эффективному использованию инструментов.
environment_contextСекцияСведения о рабочей среде.
code_change_rulesСекцияРуководство по внесению изменений в код.
guidelinesСекцияДополнительные рекомендации по поведению агента.
safetyСекцияРекомендации по безопасности и ограничения среды.
custom_instructionsСекцияЗагруженные пользовательские инструкции.
runtime_instructionsСекцияДополнительные инструкции, собранные для сеанса.
last_instructionsСекцияИнструкции, помещенные в конце запроса.
identityGroupИдентификация, взаимодействие, тон, делегирование, эффективность инструментов, версия, модель и инструкции по задачам. Не включает environment_context.
tool_instructionsGroupИнструкции по использованию и введение в инструмент.

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

Блоки содержимого системного сообщения

В replace режиме models[].systemMessage.contentBlocks предоставляются инструкции по замене вместо простой content строки. Сохраняйте content представление, так как оно требуется в формате конфигурации. Все блоки должны иметь content строку.

ПолеТипОбязательныйDefaultОписание
models[].systemMessage.contentBlocks[].contentStringДаNoneТекст этого блока в порядке массива.
models[].systemMessage.contentBlocks[].isStaticBooleanНетНе помечен статическийПомечает содержимое, которое можно кэшировать независимо от изменения содержимого запроса.
models[].systemMessage.contentBlocks[].cacheBreakpointBooleanНетНет явной точки остановаЗапрашивает границу кэша после этого блока для поставщиков, поддерживающих явное кэширование запросов. Не гарантирует кэширование поставщика.

Метаданные модели

models[].metadata — это объект, значения которого могут быть любым допустимым значением JSON. Это описательные данные, а не способ предоставления параметров запроса API или учетных данных. Вам не нужно добавлять метаданные вручную.

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

ПолеТипОписание
models[].metadata.adapterIdStringОпределяет интеграцию обнаружения, например "ollama".
models[].metadata.providerKindStringВид обнаруженного поставщика, например "ollama".
models[].metadata.providerInstanceIdStringОпределяет экземпляр поставщика, например "ollama:http://127.0.0.1:11434".
models[].metadata.providerDigestStringДайджест модели, предоставленный поставщиком, когда он доступен.

Пример конфигурации поставщика

В этом примере подключается к существующему серверу Ollama и показано, как вложены возможности модели и системные инструкции. Предполагается, что qwen3:8b он установлен. Ограничения маркеров являются примерами бюджетов, а не инструкцией максимальной емкости модели. Настройте их в соответствии с контекстом, настроенным на сервере.

JSON
{
  "providers": [
    {
      "name": "local",
      "type": "openai",
      "baseUrl": "http://127.0.0.1:11434/v1",
      "modelProvider": "ollama"
    }
  ],
  "models": [
    {
      "id": "qwen3:8b",
      "provider": "local",
      "name": "Qwen 3 8B",
      "maxPromptTokens": 6144,
      "maxContextWindowTokens": 8192,
      "maxOutputTokens": 2048,
      "capabilities": {
        "supports": {
          "vision": false,
          "toolCalls": true
        }
      },
      "systemMessage": {
        "mode": "customize",
        "sections": {
          "tone": {
            "action": "append",
            "content": "\nUse concise explanations."
          }
        }
      }
    }
  ]
}

После перезапуска интерфейса командной /model строки выберите эту модель с copilot --model local/qwen3:8b помощью средства выбора или средства выбора. Добавьте дополнительные объекты в любой массив для настройки дополнительных поставщиков и моделей.

agents/

Здесь храните личные определения пользовательских агентов в виде .agent.md файлов. Агенты, размещённые в этом каталоге, доступны во всех ваших сессиях. Если личный агент и агент уровня проекта имеют один и тот же идентификатор, например, если оба файла верхнего уровня называются reviewer.agent.md, личный агент имеет приоритет. Необязательное name поле frontmatter не управляет дедупликацией, поэтому агенты с одинаковыми name , но различными идентификаторами обоих загрузок.

Дополнительные сведения см. в разделе Создание и использование пользовательских агентов для GitHub Copilot CLI.

skills/

Здесь храните личные индивидуальные определения навыков. Каждый навык находится в подкаталоге, содержащем SKILL.md файл — например, ~/.copilot/skills/my-skill/SKILL.md. Личные навыки доступны во всех ваших сессиях. Навыки Project Level имеют приоритет над личными, если у них одинаковое название.

Дополнительные сведения см. в разделе Добавление навыков агента для GitHub Copilot CLI.

hooks/

Здесь можно хранить скрипты с крючками на уровне пользователя. Эти зацепки применимы ко всем вашим сессиям. Вы также можете задать крючки в строке в пользовательском конфигурационном файле (~/.copilot/settings.json) с помощью ключа hooks . Хуки уровня репозитория (in .github/hooks/) загружаются вместе с пользовательскими хуками.

Дополнительные сведения см. в разделе Использование крючков с GitHub Copilot CLI.

extensions/

Храните файлы расширений пользовательского уровня здесь. Расширения в этом каталоге доступны между сессиями.

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

Автоматически управляемые файлы

Следующие пункты управляются CLI. Обычно не стоит редактировать их вручную.

config.json

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

Примечание.

Ранние версии Copilot CLI хранили как пользовательские настройки, так и состояние приложения в config.json. Настройки, редактируемые пользователем, теперь расположены в settings.json. Параметры, оставшиеся в config.json ней, игнорируются. Этот файл содержит только внутреннее состояние, например установленные подключаемые модули и доверенные папки.

permissions-config.json

Сохраняет сохранённые решения по инструменту и разрешению каталога, организованные по расположению проекта. Когда вы одобряете инструмент или предоставляете доступ к каталогу текущего местоположения, CLI фиксирует решение здесь, чтобы вас больше не запросили в том же репозитории или каталоге.

Примечание.

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

Расположение файла

Copilot CLI Разрешает файл из каталога конфигурации.

PrioritySourceИспользуемый файл
1--config-dir=DIRECTORYDIRECTORY/permissions-config.json
2COPILOT_HOME$COPILOT_HOME/permissions-config.json
3Default~/.copilot/permissions-config.json

Интерфейс командной строки использует только первый применимый каталог конфигурации в этом порядке. Он также не загружается permissions-config.json из расположений с более низким приоритетом.

Этот --config-dir вариант — наследие. Предпочитаю COPILOT_HOME , когда нужно менять каталог конфигурации.

В Windows стандартный файл обычно выглядит:

C:\Users\YOUR-USER\.copilot\permissions-config.json

Старые сборки использовали файл без расширения под названием permissions-config. Если permissions-config.json его нет, а файл без расширения есть, CLI всё равно учитывает наследственный файл. Используйте permissions-config.json для новых правок.

Предыдущие локации конфигурации на базе XDG мигрируются ~/.copilot при запуске, когда COPILOT_HOME она не настроена.

Ключи местоположения

Объект верхнего уровня locations определяется абсолютным путём.

  • Для репозитория Git используйте корень Git, используемый для определения разрешений.
  • Связанные рабочие деревья разрешаются на основной корень репозитория, поэтому они разделяют права с основным деревом работы.
  • Подмодули используют собственную рабочую директорию.
  • Для каталога, который не входит в репозиторий Git, используйте нормализованный текущий рабочий каталог.

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

CLI загружает одобрения соответствующего места при начале сессии и изменении активного рабочего каталога.

Схема

Файл должен содержать объект JSON.

ПолеТипОбязательныйDefaultДопустимые значенияОписание
locationsObjectНет{}Ключи абсолютных путейКарта ключей местоположения для сохраненных одобрений.
locations.<key>ObjectНет{}Любой абсолютный ключ местоположенияСохранены одобрения для одного репозитория или каталога.
locations.<key>.tool_approvalsМассивНет[]Объекты утвержденияИнструменты одобрены для этого места.
locations.<key>.allowed_directoriesМассив строкНет[]Пути абсолютных каталоговДополнительные каталоги, к которым может получить доступ путевой врата для этого места. Каждый каталог должен существовать, когда CLI применяет конфигурацию.
locations.<key>.tool_approvals[].kindStringДаNone
commands, read``write``mcp``mcp-sampling``memory``custom-tool``extension-management``extension-permission-accessВыбирает тип одобрения.
commandIdentifiersМассив строкДа, для commandsNoneИдентификаторы командОболоченные идентификаторы команд для одобрения.
serverNameStringДа, для mcp и mcp-samplingNoneИмя сервера MCPMCP-сервер для одобрения.
toolNameСтрока или nullДа, для mcpNoneНазвание инструмента MCP, или nullИнструмент MCP для одобрения. Используйте null для одобрения всех инструментов на сервере.
toolNameStringДа, для custom-toolNoneПользовательское имя инструментаПользовательский инструмент для одобрения по точному названию.
operationStringНет, для extension-managementУпущенныйНазвание операции расширенияОперация по управлению расширением для утверждения. Исключить это поле для утверждения всех операций по управлению расширением.
extensionNameStringДа, для extension-permission-accessNoneИмя расширенияРасширение, доступ к возможностям с ограничением разрешений одобрен.

permissions-config.json не поддерживает правила отказа, правила «спросить», режимы по умолчанию, правила URL, фильтрацию инструментов или совместную политику репозитория. Для таких действий используйте командные опции, такие --deny-toolкак , --available-tools, --excluded-tools``--allow-url, и --deny-url. Правила сохранения URL хранятся в settings.json, а не в permissions-config.json.

Неизвестные поля не входят в схему. CLI может их игнорировать, а последующие записи могут их удалять.

Виды одобрения

Каждый элемент должен tool_approvals быть одним из следующих объектов.

kindОбязательные поляНеобязательные поляMeaning
commandscommandIdentifiersNoneОдобряет совпадающие идентификаторы команд shell.
readNoneNoneОдобряет запросы на инструменты чтения. Интерактивные сессии CLI уже автоматически одобряют чтение, поэтому обычно это не обязательно.
writeNoneNoneОдобряет запросы на создание и инструменты для модификации файлов. Запрос на путь всё равно может применяться для путей вне разрешённых каталогов.
mcp
serverName, toolNameNoneОдобряет один инструмент MCP или все инструменты на сервере, когда toolName это null.
mcp-samplingserverNameNoneОдобряет запросы на выборку MCP для одного сервера.
memoryNoneNoneОдобряет запросы на запись и голосование по памяти.
custom-tooltoolNameNoneОдобряет кастомный инструмент под точным названием.
extension-managementNoneoperationУтверждает управление расширением. Если operation опущено, все операции управления расширением совпадают.
extension-permission-accessextensionNameNoneОдобряет доступ расширения к возможностям с ограничением разрешений.

Для одобрения MCP serverName должно точно совпадать с настроенным именем сервера MCP. Используйте сырое имя сервера из вашей конфигурации MCP, а не очищенный префикс имени инструмента.

Сопоставление команд оболочки

permissions-config.json не поддерживает регулярные выражения или общие шаблоны глобов. Строковые значения совпадают буквально, за исключением того, что :* значение оболочки commandIdentifiers соответствует тексту до :*того, как само по себе или за ним следует пробел и больше текста. Равнина * не имеет особого смысла, поэтому git* не соответствует git status.

РисунокСовпаденияНе соответствует
git statusgit statusgit status --short
git:*
git, , git status``git pushgitea
gh pr:*
gh pr, , gh pr view``gh pr creategh repo view

Сопоставление каталогов

allowed_directories Записи позволяют Copilot CLI получать доступ к путям внутри этих каталогов без отдельного запроса на путь. Они не одобряют саму работу инструмента. Например, редактирование файла в разрешённой папке всё равно может требовать write одобрения.

Каждая allowed_directories запись должна быть абсолютной, непустой и доступной папкой. CLI разрешает симлинки перед сравнением путей, блокирует сетевые пути UNC, если они не являются локальными путями расширенной длины, сравнивает пути без падежа в Windows и сравнивает пути с учетом регистра на других платформах. Если запись не может быть применена, CLI фиксирует предупреждение и пропускает эту запись.

Примеры

Разрешите все подкоманды Git и получите доступ к дополнительной локальной директории:

JSON
{
  "locations": {
    "C:\\src\\my-repo": {
      "tool_approvals": [
        {
          "kind": "commands",
          "commandIdentifiers": ["git:*"]
        }
      ],
      "allowed_directories": ["C:\\src\\shared-docs"]
    }
  }
}

Разрешите выбранные команды, всё ещё спрашивая перед записью файла:

JSON
{
  "locations": {
    "/Users/YOUR-USER/src/my-repo": {
      "tool_approvals": [
        {
          "kind": "commands",
          "commandIdentifiers": [
            "git status",
            "git diff",
            "git log",
            "npm test",
            "npm run build"
          ]
        }
      ]
    }
  }
}

Approve file writes и один MCP-сервер для репозитория:

JSON
{
  "locations": {
    "/home/YOUR-USER/src/my-repo": {
      "tool_approvals": [
        {
          "kind": "write"
        },
        {
          "kind": "mcp",
          "serverName": "github-mcp-server",
          "toolName": null
        }
      ]
    }
  }
}

Одобрить один MCP-инструмент, запись в памяти и доступ к разрешениям расширения:

JSON
{
  "locations": {
    "C:\\src\\my-repo": {
      "tool_approvals": [
        {
          "kind": "mcp",
          "serverName": "github-mcp-server",
          "toolName": "search_code"
        },
        {
          "kind": "memory"
        },
        {
          "kind": "extension-permission-access",
          "extensionName": "my-extension"
        }
      ]
    }
  }
}

session-state/

Содержит данные истории сессий, организованные по идентификатору сессии в подкаталогах. Каждый каталог сессии хранит журнал событий (events.jsonl) и артефакты рабочего пространства (планы, контрольные точки, отслеживаемые файлы). Эти данные позволяют возобновить сессию (--resume или --continue).

Удаление файлов из этой папки удаляет только локальные копии. Если у вас синхронизированы сессии с аккаунтом GitHub , синхронизированные данные хранятся отдельно и не зависят от локального удаления файлов. Вы можете удалить или скрыть синхронизированные сессии из GitHub.com. Дополнительные сведения см. в разделе Сведения о GitHub Copilot данных сеанса.

command-history-state/

Содержит данные истории команд, используемые для обратного поиска (Ctrl R+) и навигации по истории в интерактивном интерфейсе. Этот каталог управляется автоматически и не подлежит редактированию.

session-store.db

База данных SQLite, используемая CLI для межсессионных данных, таких как индексация контрольных точек и поиск. Этот файл управляется автоматически и не должен редактироваться.

Если вы удалите этот файл, его можно восстановить с помощью команды /chronicle reindex . Реиндексация также синхронизирует данные сессии с аккаунтом.

logs/

Содержит лог-файлы для сессий CLI. Каждая сессия создаёт лог-файл с названием process-{timestamp}-{pid}.log. Эти файлы полезны для отладки.

CLI также может создавать логи, специфичные для расширения, в разделе logs/extensions/.

Это отдельно от ~/.copilot/extensions/, где хранится код расширений, созданный пользователем.

Совет

Чтобы найти файл журнала вашей текущей сессии, зарегистрируйте /session интерактивную сессию. Вывод включает полный путь к файлу журнала, а также другие детали сессии, такие как идентификатор сессии, длительность и рабочий каталог.

installed-plugins/

Содержит файлы для установленных вами плагинов. Плагины, установленные на маркетплейсе, хранятся в .installed-plugins/{marketplace-name}/{plugin-name}/ Напрямую установленные плагины хранятся в .installed-plugins/_direct/ Управляйте плагинами с copilot plugin помощью команд, а не редактировать эту папку напрямую.

Дополнительные сведения см. в разделе Ссылка на плагин GitHub Copilot CLI.

plugin-data/

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

ide/

Содержит файлы блокировки и состояние для интеграций с IDE (например, при Copilot CLI подключении к Visual Studio Code). Этот каталог управляется автоматически.

mcp-oauth-config/

Содержит резервные файлы MCP OAuth, регистрационные и резервные файлы PKCE при недоступном хранилище, поддерживаемом брелоком. Этот каталог управляется автоматически.

mcp-secrets/

Содержит резервное хранилище файлов и индекс секретных заполняющих MCP, когда хранилище с защитой связки ключей недоступно. Этот каталог управляется автоматически.

Изменение расположения каталога конфигурации

Чтобы переопределить местоположение по умолчанию ~/.copilot , установите COPILOT_HOME переменную среды на путь к нужной вам директории.

Bash
export COPILOT_HOME=/path/to/my/copilot-config

Вещи, которые следует учитывать

  • COPILOT_HOME заменяет весь ~/.copilot путь. Значение должно быть полным путём к нужной директории, которую вы хотите использовать для конфигурационных файлов и подкаталогов.

  • Изменение каталога означает, что ваша существующая конфигурация, история сессий, установленные плагины и сохранённые права не будут найдены в новом месте. Скопируйте или переместите содержимое ~/.copilot в новый адрес, если хотите сохранить его.

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

    • macOS:~/Library/Caches/copilot
    • Linux: $XDG_CACHE_HOME/copilot или ~/.cache/copilot
    • Windows:%LOCALAPPDATA%/copilot

    Чтобы отдельно переопределить каталог кэша, установите COPILOT_CACHE_HOME.

Что можно безопасно удалить

ЭлементБезопасно ли удалить?Эффект
agents/, , skills/``hooks/Не рекомендуетсяВы потеряете свои личные настройки. Сначала отойди.
config.jsonС осторожностьюСбрасывает состояние приложения, включая аутентификацию. Вам потребуется повторная аутентификацию, и CLI повторно обнаружит внутреннее состояние при следующем запуске.
copilot-instructions.md, instructions/Не рекомендуетсяВы потеряете свои индивидуальные инструкции. Сначала отойди.
extensions/Не рекомендуетсяВы потеряете свои личные продления. Сначала отойди.
installed-plugins/Не рекомендуетсяИспользуйте copilot plugin uninstall вместо этого, чтобы метаданные плагина config.json оставались точными.
logs/ДаФайлы журналов создаются заново каждую сессию. Удаление их не имеет функционального эффекта.
lsp-config.jsonНе рекомендуетсяВы потеряете определения сервера LSP на уровне пользователя. Сначала отойди.
mcp-config.jsonНе рекомендуетсяВы потеряете определения сервера MCP на уровне пользователя. Сначала отойди.
mcp-oauth-config/С осторожностьюПроходит через резервный штат MCP OAuu. Возможно, потребуется повторная аутентификация MCP-серверов.
mcp-secrets/С осторожностьюОчищает местное секретное резервное состояние MCP и карты. Серверы MCP с секретной поддержкой могут потребовать перенастройки.
permissions-config.jsonС осторожностьюСбрасывает все сохранённые права. CLI снова подскаже вам одобрение инструментов и каталогов.
plugin-data/ДаПостоянные данные плагина создаются по мере необходимости.
providers.jsonНе рекомендуетсяВы потеряете конфигурацию поставщика BYOK и модели. Сначала отойди.
session-state/С осторожностьюУдаление удаляет историю сессий. Вы больше не сможете возобновить прошлые занятия.
command-history-state/С осторожностьюУдаление удаляет историю команд. Вы больше не сможете искать предыдущие команды с помощью Ctrl+R.
session-store.dbС осторожностьюУдаление удаляет данные между сессиями. Файл воссоздаётся автоматически.
settings.jsonС осторожностьюВсе пользовательские настройки сбрасываются до стандартных настроек. Вам нужно будет перенастроить настройки.

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

Настройки применяются в следующем порядке (позже переопределяются раньше):

  1. Встроенные значения по умолчанию
  2. Управляемые настройки Mobile Управление устройствами (MDM)
  3. Пользовательские настройки (~/.copilot/settings.json)
  4. Настройки репозитория (.github/copilot/settings.json)
  5. Локальные настройки (.github/copilot/settings.local.json)
  6. Переменные среды
  7. Флаги командной строки

Управляемые настройки MDM загружаются при запуске и объединяются с пользовательскими настройками как базовая база политики. Для большинства клавиш пользовательские настройки могут переопределить эту базовую линию. Для permissions.disableBypassPermissionsMode, MDM-значение "disable" всегда выигрывает. Управляемые sandbox параметры являются еще одним исключением. Вместо переопределения каждое управляемое sandbox значение задает пол, который нельзя расслабить. Если ваш собственный параметр более разрешительный, управляемое значение выигрывает. Параметр sandbox.failIfUnavailable можно задать только администратором. Для получения дополнительной информации см. управляемые настройки MDM.

Область действияLocationPurpose
User~/.copilot/settings.jsonГлобальные стандарты для всех репозиториев. Используйте COPILOT_HOME переменную среды для указания альтернативного пути.
Репозиторий.github/copilot/settings.jsonКонфигурация общего репозитория (фиксирована в репозитории).
Local.github/copilot/settings.local.jsonЛичные перемены (добавьте это к .gitignore).

CLI также читает и для общего кросс-инструментального подмножества настроек репозитория (таких .claude/settings.jsonкак , .claude/settings.local.json, companyAnnouncements, disableAllHooks, и enabledPlugins).extraKnownMarketplaces``hooks

Значения по умолчанию репозитория являются необязательными: задайте enabledPlugins записи false в локальных параметрах репозитория, чтобы переопределить значения по умолчанию репозитория. Управляемые обязательные или заблокированные записи подключаемого модуля всегда выигрывают. См . раздел AUTOTITLE.

Пользовательские настройки (~/.copilot/settings.json)

Эти настройки применимы ко всем вашим сессиям и репозиториям. Вы можете использовать /settings команду slash для запуска интерактивного диалога, или специальные команды для обновления отдельных значений, либо редактировать этот файл напрямую.

КлючТипDefaultОписание
allowedUrlsstring[][]URL или домены разрешены без подсказки. Поддерживает точные URL-адреса, шаблоны доменов и поддомены с уайлдкардом (например, "*.gh.asamalin.top").
askUserbooleantrueПозвольте агенту задавать уточняющие вопросы. Настроен false на полностью автономную работу. Также можно установить с --no-ask-user.
autoTier
"efficiency"
|
"balance"
|
"intelligence"
сброситьУровень автоматической маршрутизации по умолчанию для новых бесед при выборе модели auto. См. команду косой /model черты.
"fast" больше не выбирается и возвращается к "balance" предупреждению, если задано.
autoUpdatebooleantrueАвтоматическое скачивание обновлений CLI и обновление сторонних подключаемых модулей в начале каждого сеанса.
autoUpdatesChannel
"stable"
|
"prerelease"
"stable"Канал обновлений. Настроен на "prerelease" получение обновлений до релиза.
banner
"always"
|
"once"
|
"never"
"once"Частота анимированного отображения баннеров.
bashEnvbooleanfalseВключите BASH_ENV поддержку bash-shells. Также можно задать с --bash-env помощью или --no-bash-env.
beepbooleantrueВоспроизведите звуковой сигнал, когда требуется внимание.
beepOnSchedulebooleantrueВоспроизведите звуковой сигнал, когда запланированный /every или /after забег заканчивается.
colorMode
"default"
|
"github"
|
"dim"
|
"high-contrast"
|
"colorblind"
"github"Устаревший псевдоним для theme. Предпочитать theme.
commandHistoryMaxSizenumber50Максимальное количество последних команд, сохраненных для журнала ввода и обратного поиска. Должно быть целым числом между 1 и 1000.
compactPastebooleantrueСвернуть большие пасты (более 10 строк) в компактные токены.
companyAnnouncementsstring[][]Пользовательские сообщения отображаются случайным образом при запуске. Одно сообщение выбирается случайным образом каждый раз при запуске CLI. Полезно для командных объявлений или напоминаний.
connectorsbooleantrueВключите Copilot соединители при наличии. Установите false, чтобы отключить.
continueOnAutoModebooleanfalseАвтоматически переключается в автоматический режим при ограничении скорости. Когда trueошибки допустимого лимита скорости вызывают автоматическое переключение в авторежим и повторную попытку. Это не относится к глобальным тарифным лимитам или провайдерам BYOK.
copyOnSelectboolean
true (macOS), false (другое)Автоматически скопируйте выбранный мышью текст в системный буфер обмена.
customAgents.defaultLocalOnlybooleanfalseИспользуйте только локальные кастомные агенты (без удалённых агентов организации или корпоративных агентов).
defaultMode
"interactive"
|
"plan"
|
"autopilot"
"interactive"Режим агента, в который начинаются новые интерактивные сеансы.
--autopilotПараметры --modeи --plan параметры имеют приоритет. Возобновленные сеансы сохраняют собственный режим, и параметр игнорируется для -p/--prompt, --serverи --acp выполняется.
defaultPermissionMode
"manual"
|
"assisted"
|
"allow-all"
МеняетсяПредпочитаемый режим разрешений для новых интерактивных сеансов. Управляемое управление permissions.defaultMode имеет приоритет над этим предпочтениям. Если ни задано значение по умолчанию, сеансы могут запускаться в ручном или вспомогательном режиме. Задайте "manual" для запроса запросы, которые еще не разрешены, "assisted" использовать проверку модели для соответствующих запросов или "allow-all" предоставить широкие разрешения, эквивалентные --allow-all. Запрет правил и ограничений предприятия по-прежнему применяются. См . раздел AUTOTITLE. Возобновленные сеансы сохраняют собственный режим. Параметр не применяется к неинтерактивным запускам и --allow-all``--yolo имеет приоритет. По умолчанию вспомогательный запуск не применяется к удаленным сеансам. Если настроенный режим недоступен или заблокирован политикой предприятия, интерфейс командной строки начинается с утверждения вручную и сообщает вам, почему. Связывание "assisted" или "allow-all" пропуск defaultMode: "autopilot" подтверждения разрешений autopilot при применении настроенного режима разрешений.
deniedUrlsstring[][]URL или домены, которые всегда отклоняются. Правила отказа имеют приоритет над правилами допуска.
disableAllHooksbooleanfalseОтключите все хуки (как на уровне репозитория, так и на уровне пользователя).
disabledMcpServersstring[][]Имена серверов MCP нужно отключить. Указанные серверы настроены, но не запущены.
disabledSkillsstring[][]Имена навыков нужно отключить. Перечисленные навыки открываются, но не загружаются.
dynamicRetrieval{ skills?: boolean }сброситьУправление по категориям динамического поиска инструкций на основе вложения. Настройте skills на false отключение поиска навыков.
editorMode
"normal"
|
"vim"
"normal"Режим редактирования входного композитора. Задайте, переключив команду косой /vim черты. См . раздел AUTOTITLE.
effortLevelstring"medium"Уровень усилий для рассуждения для расширенного мышления: "low", "medium", "high", или "xhigh". Более высокие уровни требуют больше вычислений.
enabledMcpServersstring[][]Включите встроенные серверы MCP, отключенные по умолчанию.
enabledPluginsRecord<string, boolean>{}Автоматическая установка декларативного плагина. Клавиши — это спецификации плагинов; значения — true (включено) или false (отключено).
experimentalbooleanfalseВключить экспериментальные функции. Также можно включить с --experimental помощью командной строки или /experimental команды слэш.
extraKnownMarketplacesRecord<string, {...}>{}Дополнительные маркетплейсы плагинов. Каждый ключ — это имя Marketplace; значение указывает обязательный source ("directory", "git"или "github"). Установите autoUpdate: true для записи, чтобы выбрать установленные подключаемые модули Marketplace в автоматическое обновление сеанса, то же самое, что и сторонние подключаемые модули. Эта возможность применяется только к интерактивным сеансам, -p а сеансы SDK и сервера не обновляются автоматически. Согласие учитывается при установке в собственных параметрах пользователя или в управляемых параметрах (MDM/server). При столкновении с тем же именем встроенная первая сторона Marketplace выигрывает, а затем управляемую запись (которая заменяет всю ту же именованную запись пользователя, поэтому управляемая запись без "autoUpdate": true удаления согласия пользователя), а затем собственная запись пользователя.
footerobject—Управляет, какие предметы появляются в строке статуса. Подключения включают showModelEffort, showDirectory, showBranch, showContextWindow, showQuota, showAgent, showAiUsed``showCodeChanges``showUsername``showSandbox``showYolo, и showCustom (все ).boolean Управляется командой /statusline слэша.
hooksobject—Встроенные определения хуков на уровне пользователя, с ключом по названию события. Использует ту же схему, что и .github/hooks/*.json файлы. См . раздел AUTOTITLE.
ide.autoConnectbooleantrueАвтоматически подключайтесь к рабочему пространству IDE при запуске. Когда false, вы всё ещё можете подключиться вручную с помощью команды /ide .
ide.openDiffOnEditbooleantrueОткрывайте дифференциации редактирования файлов в подключённом IDE для утверждения. Когда false, одобрения редактирования файлов отображаются только в терминале.
ignoredSkillsLocationsstring[][]Каталоги навыков (и их потомки) исключены из обнаружения, независимо от расположения, в противном случае они будут отображаться. Поддерживает ~относительные пути. См . раздел AUTOTITLE.
includeCoAuthoredBybooleantrueДобавьте Co-authored-by трейлер к git-коммитам, сделанным агентом.
inlineImagesbooleantrueОтрисовка изображений в встроенном формате с помощью протокола графики Kitty. Требуется поддерживаемый терминал (Призрак, котенка или WezTerm). При отключении вложения изображений отображают заполнитель текста.
keepAlive
"on"
|
"off"
|
"busy"
"off"Режим keep-alive применяется при запуске CLI.
"on" Всегда препятствует системе спящей, "busy" не даёт спящему только во время работы агента и "off" отключает поддержание жизни. Также можно настраивать с /keep-alive помощью команды слэша.
logLevel
"none"
|
"error"
|
"warning"
|
"info"
|
"debug"
|
"all"
|
"default"
"default"Веду многословность.
mergeStrategy
"rebase"
|
"merge"
—Стратегия разрешения конфликтов для /pr fix conflicts. При установке в "rebase", конфликты разрешаются путем перебазировки на базовую ветвь. При установке в "merge", базовая ветвь объединяется с ветвью признаков. Если не настроено, отображается диалог picker.
modelstringизменяетсяМодель искусственного интеллекта для использования. Настройте "auto" так, чтобы автоматически Copilot выбирать лучшую доступную модель. Управляется командой /model слэша.
mousebooleantrueВключите поддержку мыши. Также можно задать с --mouse помощью или --no-mouse.
permissions.disableBypassPermissionsModestring—Задайте для "disable" блокировки всех параметров разрешения (--allow-all-tools,, --allow-all-paths, --allow-all-urls, --allow-all). --yolo Этот параметр не блокирует assisted permissionsуправление отдельно. Другие значения рассматриваются как псевдоним "disable" и предупреждение записывается в журнал. См . раздел AUTOTITLE.
pinnedPromptsbooleantrueЗакрепите запрос пользователя текущего раздела непосредственно под верхней панелью при прокрутке временной шкалы, поэтому он остается ясным, к каким запросам относится видимый результат. Только пользовательский интерфейс CLI не влияет на запросы, отправленные в модель.
powershellFlagsstring[]["-NoProfile", "-NoLogo"]Флаги передавались в PowerShell при запуске. В Windows CLI предпочитает PowerShell 7+ (pwsh) и возвращается к Windows PowerShell (powershell.exe), когда pwsh недоступен. Только для Windows.
proxyKerberosServicePrincipalstringсброситьИмя принципа сервиса (SPN) для аутентификации прокси Kerberos/Negotiate, переопределяя производное HTTP/<proxy-host>.
proxyUrlstringсброситьПрокси-URL для HTTP(S)-запросов (например, http://proxy.corp.example:3128). Переопределяется HTTP_PROXY переменными окружающей среды или HTTPS_PROXY (любой корпус).
remoteSessionsbooleanfalseВключение удаленного управления по умолчанию для интерактивных сеансов при наличии удаленного управления. Используйте /remote on или /remote off измените удаленный контроль для текущего сеанса. Это отличается от remoteExport параметра синхронизации сеансов.
renderHexColorsbooleantrueОтображение шестизначных шестнадцатеричных цветовых кодов, написанных как встроенный код (например, `#FF0000`) в виде цветовых образцов.
renderMarkdownbooleantrueRender Markdown на выходе терминала.
remoteExportbooleantrueСинхронизация журнала сеансов с учетной записью при доступности синхронизации сеансов. Установите для false отказа по умолчанию. Включение удаленного управления с remoteSessions: true поддержкой экспорта независимо от этого параметра. Журнал синхронизации не включает удаленный контроль. Используйте --sync-session=on или --sync-session=off переопределите синхронизацию журнала для выполнения.
respectGitignorebooleantrueИсключите gitignored файлы из выбора @ упоминаний файлов. Когда false, picker включает файлы, обычно исключаемые ..gitignore
sandbox.allowBypassbooleantrueРазрешить изолированным командам запрашивать обход для определенных операций (отображается запрос на разрешение), поэтому такие инструменты, как grep и glob работа, когда песочница в противном случае блокирует их. Запрос также позволяет отключить песочницу для остальной части текущего сеанса, если эффективная политика разрешает обход. Установите для false отказа.
sandbox.enabledbooleanfalseОграничить команды оболочки, серверы MCP/LSP и встроенные файлы или веб-инструменты в изолированной среде с ограниченным доступом к файловой системе и сети. Включите его из диалогового /sandbox окна или с помощью /sandbox enable.
sandbox.auth.gitbooleantrueВставьте учетные данные Git в песочницу, чтобы команды, выполняемые внутри него, могли пройти проверку подлинности с помощью Git. Установите для false отказа. Переименован из sandbox.gitAuth; старый ключ не имеет миграции и игнорируется везде, где он по-прежнему отображается.
sandbox.auth.ghbooleantrueВставьте GitHub CLI () учетные данные в песочницу, чтобы команды, выполняемые внутри него, могли пройти проверку подлинности с помощью gh.GitHub CLI Установите для false отказа. Переименован из sandbox.ghAuth; старый ключ не имеет миграции и игнорируется везде, где он по-прежнему отображается.
sandbox.credentialsobjectсброситьМаскирование выбранных переменных среды в изолированных процессах. Содержит объект, ключом по имени переменной envVars , с непустым injectHosts массивом для каждой записи. Процессы получают заполнители, а локальный прокси-сервер предоставляет реальные значения только в заголовках запросов HTTPS этим узлам. Сохраняет имена переменных и правила узла, а не секретные значения. Требуется включить песочницу. Настройте на вкладке /sandbox"Учетные данные диалогового окна" в разделе "Маскированные переменные среды". См . раздел AUTOTITLE.
sandbox.userPolicy.network.allowLocalNetworkbooleanfalseУправление доступом к локальной сети, например подключениям к локальным серверам разработки. Влияние на изолированные команды зависит от операционной системы. В поддерживаемых узлах Windows включение этого параметра также позволяет подключаться к локальному хосту узла. Старые версии Windows сохраняют блокировку localhost, даже если этот параметр включен. Windows правила прокси-сервера и узла требуют этогоtrue.
sandbox.userPolicy.network.proxyobjectсброситьМаршрутизация изолированного сетевого трафика через прокси-сервер HTTP(S). Поля: url (обязательно), username (необязательно), password (необязательно). URL-адрес не должен содержать учетные данные. Настройте учетные данные на вкладке /sandbox"Сеть " диалогового окна, которая маскирует поле пароля. Литеральные пароли используют хранилище учетных данных ОС при наличии с резервным файлом локального файла.
settings.json содержит ссылку на секрет. Вместо этого пароль может быть ссылкой на целое поле ${VAR} или $VAR переменную среды. Применение прокси-сервера отличается от платформы, как описано ниже.
sandbox.userPolicy.network.allowedHostsstring[][]Узлы изолированной команды разрешены для доступа. Записи — это точные имена узлов, IP-адреса или *.example.com поддомены, но не корневой домен (* соответствует каждому узлу). Блоки CIDR не поддерживаются. Не включать URL-адреса или порты. Непустый список блокирует несовпаденные узлы, за исключением , 127.0.0.1а localhost``::1 также при включении исходящего и локального доступа к сети. Эти автоматические записи не изменяют сохраненный список. Явные правила запрета и списки разрешений предприятия по-прежнему применяются. Настройте вкладку /sandbox"Сеть " диалогового окна в разделе "Правила узла".
sandbox.userPolicy.network.blockedHostsstring[][]Узлы изолированной команды запрещены достичь, совпадают с тем же способом, что allowedHostsи команда.
blockedHosts всегда имеет приоритет над соответствующей allowedHosts записью, и запрет домена также отрицает его поддомены. Настройте вкладку /sandbox"Сеть " диалогового окна в разделе "Правила узла".
sandbox.userPolicy.filesystem.deniedPathsstring[][]Пути, к которым запрещен доступ изолированные команды. Windows требуется версия, поддерживающая запрещенные пути. Если узел не может применить их, команда завершается ошибкой, а не с более слабыми ограничениями. Отсутствующие запрещенные пути и их родители создаются как каталоги перед запуском и не удаляются автоматически, даже для имени, например .env. Ошибки подготовки перестают запускаться. Предварительная версия только для /sandbox policy чтения создает ничего и не пропускает запрещенные пути в Linux.
sandbox.userPolicy.seatbelt.keychainAccessbooleanfalseтолько macOS. Предоставьте изолированным командам доступ к цепочке ключей системы. Настраиваемая только в settings.json, а не через /sandbox или /settings.
screenReaderbooleanfalseВключите оптимизацию экранных читателей.
scrollbarbooleantrueПокажите полосу прокрутки в режиме прокрутки. Настройте на false скрытие и используйте всю ширину клеммы.
shellShortcutbooleantrueПусть одинокий $ в запросе, за которым следует ВВОД, откройте интерактивную оболочку, корневую в рабочем каталоге сеанса (активирует только для локального, доверенного, простоя сеанса в реальном TTY). Только для пользователей или управляемых областей— не переопределяемый репозиторий.
showReasoningbooleanNoneОтображение причин модели на временной шкале. Этот параметр можно задать или /config``/settingsпереключить с помощью клавиш CTRL+T. Ваши предпочтения сохраняются в сеансах.
showTimestampsbooleantrueОтображение меток HH:mm времени рядом с пользовательскими сообщениями на временной шкале.
showTipsOnStartupbooleantrueПоказывайте случайную подсказку команд при запуске CLI.
sidebarbooleantrueВключите боковую панель текущего сеанса. Установите для false отключения его полностью, скрывая подсказку композитора и ← открытый жест. См . раздел AUTOTITLE.
skillDirectoriesstring[][]Дополнительные каталоги для поиска определений пользовательских навыков (в дополнение к ~/.copilot/skills/).
statusLineobject—Пользовательский отбор строки статуса.
type: должно быть "command".
command: путь к исполняемому скрипту, который принимает session JSON на stdin и печатает статус-контент в stdout.
padding: необязательное количество пробелов с левым заполнением.
refreshInterval: необязательное целое число секунд (1–2147483) для повторного выполнения команды таймера вместо событий; опустите его, чтобы обновить только при изменении состояния сеанса. Если команда не сможет разрежена, завершает работу без нуля или не получает состояние JSON в stdin, интерфейс командной строки записывает предупреждение один раз на каждый эпизод непрерывного сбоя и оставляет строку состояния пустой, а не автоматически. Выполните команду, --log-level all чтобы просмотреть основные сведения об ошибке.
stayInAutopilotbooleantrueОставаться в режиме автопилота после завершения каждой задачи. При включении следующего запроса после завершения задачи также обрабатывается в режиме autopilot. Дополнительные сведения см. в разделе Использование режима Autopilot в интерфейсе командной строки GitHub Copilot.
storeTokenPlaintextbooleanfalseРазрешить хранить токены аутентификации в открытом тексте, config.json когда системный ключ недоступен.
streambooleantrueВключите потоковые ответы.
streamerModebooleanfalseСкрытие имен моделей предварительного просмотра, сведений о квоте, меток времени запроса и уведомления об обновлении. Полезно при демонстрации Copilot CLI или совместном использовании экрана.
subagents.agentsobject{}Конфигурация модели для каждого агента, с ключом по имени агента. Каждое значение — это объект с необязательными model (строками), modelPolicy ("preferred"строкой "required"``effortLevel ) и contextTier ("default"``"long_context"или) "inherit"полями. Задайте model, effortLevelили contextTier для "inherit" использования значения родительского сеанса во время отправки.
modelPolicy Не влияет, когда определение агента задает modelPolicy: "required"значение , то блокировка не может быть переопределена здесь. Используйте /subagents команду slash для интерактивной настройки этих настроек.
subagents.agents["rubber-duck"].autoInvokebooleanfalseРазрешить Copilot упреждающе консультироваться с агентом резины утки, не спрашивая. Чтобы изменить это, выполните команду /subagents, выберите rubber-duck, нажмите клавишу ВВОД, а затем переключите упреждающее вызов.
subagents.disabledSubagentsstring[][]Имена вложенных элементов, отключенных. Управление этим списком с помощью элемента управления On/Off для каждого агента в /subagents средстве выбора в интерактивном сеансе.
subagents.maxConcurrencynumberна основе планаМаксимальное число параллельных подагентов для этого сеанса. Учитывается только для пользователей выставления счетов на основе использования; игнорируется для всех остальных планов. Обрезанный в 32. См . раздел AUTOTITLE.
subagents.maxDepthnumber6Максимальная глубина вложения субагентов. Учитывается только для пользователей выставления счетов на основе использования; игнорируется для всех остальных планов. Обрезанный в 256. См . раздел AUTOTITLE.
tabs.enabledbooleantrueПокажите панель вкладок главной комнаты. Настроил false на то, чтобы полностью это скрыть.
tabs.hidestring[][]Идентификаторы вкладок для скрытия. Принятые значения: "copilot", "agents", "issues", "pull-requests"``"gists" , (совпадение без падежа).
tabs.sortstring[][]Порядок отображения вкладок. Вкладки, не указанные, сохраняют свой относительный порядок по умолчанию после перечисленных вкладок. Неизвестные идентификаторы игнорируются.
taskbarPresencebooleantrueОтображение динамического Copilot сеанса на панели задач Windows (значок агента и карточка наведения указателя мыши). Установите для false отказа. Только для запуска; вступает в силу при следующем запуске. Только для Windows.
terminalNotificationsbooleanfalseПредпочитайте уведомления OSC 777 на поддерживаемых терминалах (Ghostty, WezTerm) при включении уведомлений о настольных компьютерах, возвращаясь к собственным уведомлениям ОС при сбое поддержки или доставки.
terminalProgressbooleantrueEmit OSC 9; 4 индикатора прогресса терминала, пока агент работает. Поддерживаемые терминалы включают Терминал Windows, iTerm2, Ghostty и ConEmu.
theme
"default"
|
"github"
|
"dim"
|
"high-contrast"
|
"colorblind"
"github"Цветовая палитра для выходных данных терминала. Управляется командами /settings и /theme слэш.
colorMode является устаревшим псевдонимом для этого параметра.
toolSearchbooleanЗависящие от модели и признаковПоиск инструментов управления (отложенная загрузка инструментов). Настройте toolSearch: false на отказ от поиска по инструментам.
transcriptView
"default"
|
"concise"
"default"Установите для "concise" группирования действий средства в развернутые рабочие сводки на временной шкале. Установите для "default" отображения полной собственной расшифровки.
updateTerminalTitlebooleantrueПокажите текущее намерение во вкладке терминала или в заголовке окна.
worktreeBaseRef
"head"
|
"defaultBranch"
"head"Отправная точка для новых рабочих полос, созданных /worktree, /worktree new, и --worktree``/new worktree``/move.
"defaultBranch" начинается с удаленной ветви по умолчанию вместо текущего выхода.
/fork worktree всегда ветвляется HEADнезависимо от этого параметра.
worktreePathTemplatestringсброситьГде /worktree, /move``/newи --worktree создание рабочих полос, например~/src/worktrees/{repo}/{branch}.
{repoPath}
{branch}
{repo}Поддерживает заполнители, а также {branchSlug} заполнители. При отмене набора используется макет <repo>.worktrees/по умолчанию с косыми чертами в имени ветви, неструктурированным до дефисов.

Совет

Выполните copilot help sandbox полный справочник по песочнице, включая поддерживаемые узлы и все sandbox ключи параметров.

Диалоговое /sandbox окно группирует проверку подлинности, gh проверку подлинности и маскированные переменные среды в выделенной вкладке "Учетные данные " и показывает settings.json путь, по которому хранится текущая конфигурация песочницы. На вкладке "Файловая система " список настроенных путей суммируется по разрешениям (например, 2 read/write, 1 read-onlyза строкой, настроенной пользователем ). Нажмите клавишу ВВОД в этой строке, чтобы открыть полный список, который берет на себя курсор и панель вкладок, пока не нажимаете клавишу ESC. Настроенные пути отображаются как абсолютные пути, а не ./относительные или ~сокращенные формы. Ввод ~/path при добавлении пути по-прежнему расширяет его в домашний каталог. Нажмите клавиши CTRL+E в /sandbox диалоговом окне, чтобы сохранить ожидающие изменения и открыть settings.json его в редакторе (COPILOT_EDITORилиVISUAL``EDITOR) с одинаковым ярлыком/settings. Диалоговое окно перезагрузит его состояние с диска после изменения и сохранения файла.

Правила узла и sandbox.userPolicy.network.proxy использование встроенного локального прокси-сервера. При настройке обоих локальный прокси применяет правила узла перед пересылкой трафика в вышестоящий прокси-сервер. Исходящие учетные данные остаются вне изолированного дочернего процесса. Правила узла и параметры прокси-сервера неактивны при отключении исходящего доступа.

Если прокси-сервер не задан в параметрах песочницы, локальный прокси-сервер выбирает его вышестоящий прокси-сервер из первой непустой переменной среды на узле в этом порядке: HTTPS_PROXY, , HTTP_PROXY. ALL_PROXY Поддерживаются только http:// и https:// прокси-серверы, а не socks5.

Назначения, соответствующие обходу узла NO_PROXY , соответствуют только этому наследуемого вышестоящего прокси-сервера. Локальный прокси-сервер песочницы по-прежнему обрабатывает эти подключения и применяет правила узла. Прокси-сервер, настроенный в параметрах песочницы, игнорирует NO_PROXY.

В macOS и Linux песочница ограничивает прямые подключения, поэтому программы не могут избежать прокси-сервера. В Windows песочница зависит от программ с учетом параметров прокси-сервера. В результате программы, которые игнорируют параметры прокси-сервера в Windows, могут напрямую подключаться и обойти правила узла. Windows правила прокси-сервера и узла также требуют поддерживаемого узла и allowLocalNetwork: trueразрешения доступа к частной сети. В Linux параметры прокси-сервера отклоняют литералы адресов IPv6, отличные от подстановочного знака двойного [::] стека. Используйте конечную точку IPv4 или имя узла с поддержкой IPv4.

Параметры песочницы — это управляемые пользователем или предприятиями параметры. Они не переопределяются репозиторием. Инструкции по настройке и ограничения сети см. в разделе Настройка локальных настроек песочницы.

Песочница поддерживается Microsoft контейнер eXecution (MXC), который предоставляет серверные серверы, зависящие от платформы. Copilot CLIиспользуется Seatbelt в macOS, Bubblewrap в Linux и ProcessContainer на Windows.

Настройки репозитория (.github/copilot/settings.json)

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

Примечание.

Ключи, связанные с плагинами, в конфигурационном файле репозитория (enabledPlugins и ) также считываются не только extraKnownMarketplacesCopilot in the cloud.Copilot CLI Это позволяет активировать одни и те же плагины для обоих клиентов из одного файла. Для получения дополнительной информации о плагинах см. Подключаемые модули для GitHub Copilot.

На уровне репозитория поддерживаются только ключи, перечисленные в следующей таблице. Любые другие ключи — включая те, что действительны в пользовательском конфигурационном файле — молча игнорируются. Каждый поддерживаемый ключ имеет политику направления слияния, которая сохраняет переопределение сбоем и безопасно.

КлючТипПоведение слиянияОписание
companyAnnouncementsstring[]Замена — репозиторий имеет приоритетСообщения появляются случайно при запуске.
contextTier
"default"
|
"long_context"
Замена — репозиторий имеет приоритетЗакрепление уровня контекста по умолчанию.
deniedUrlsstring[]Объединение— репозиторий может добавлять записи, никогда не удалятьURL-адреса или домены заблокированы.
disableAllHooksbooleanРепозиторий имеет приоритетОтключите все крючки.
disabledMcpServersstring[]Объединение— репозиторий может добавлять записи, никогда не удалятьСерверы MCP настроены, но не запущены.
disabledSkillsstring[]Объединение— репозиторий может добавлять записи, никогда не удалятьНавыки обнаружены, но не загружены.
effortLevelstringЗамена — репозиторий имеет приоритетЗакрепление усилий по умолчанию по поводу причин.
enabledPluginsRecord<string, boolean>Merged — репозиторий переопределяет пользователя для того же ключаАвтоматическая установка декларативного плагина.
extraKnownMarketplacesRecord<string, {...}>Merged — репозиторий переопределяет пользователя для того же ключаМаркетплейсы плагинов, доступные в этом репозитории. Требуется каждая запись source . Запись autoUpdate: true принимается на уровне репозитория, но в настоящее время игнорируется— автоматическое обновление учитывается только при установке параметров пользователя или в параметрах управляемого (MDM/server).
hooksobjectMerged — репозиторий переопределяет пользователя для того же ключаОпределения крючков, ограниченные этим репозиторием. См . раздел AUTOTITLE.
includeCoAuthoredBybooleanЗамена — репозиторий имеет приоритет
Co-authored-by Добавьте трейлер для фиксаций.
mergeStrategy
"rebase"
|
"merge"
Замена — репозиторий имеет приоритетСтратегия разрешения конфликтов для /pr fix conflicts.
modelstringЗамена — репозиторий имеет приоритетЗакрепление модели по умолчанию для этого репозитория.
respectGitignorebooleanТолько для ужесточения— репозиторий может включать, никогда не отключатьИсключите gitignored файлы из выбора @ упоминаний файлов.

model, effortLevelи contextTier переопределения применяются только в том случае, если рабочий каталог является доверенным.

Подключаемый модуль, включенный только через репозиторий enabledPlugins , ограничен этим репозиторием: он автоматически устанавливает и активирует в декларируемом репозитории, но остается отключенным глобально, поэтому он никогда не активируется в не связанных проектах. Выход из репозитория или репозиторий, отключающий подключаемый модуль, удаляет сервер MCP и деактивирует агенты и навыки сеанса.

Список разрешений моделей уровня репозитория (.github/allowed_models.txt)

Ограничение того, какие встроенные модели репозитория могут использовать с списком .github/allowed_models.txtразрешений обычного текста, разрешенным из корневого каталога текущего рабочего каталога (или рабочего каталога за пределами репозитория).

Каждая строка — это шаблон глоба, соответствующий идентификаторам модели, или fallback: директива, именующая модель, используемую, если настроенная или запрошенная модель не разрешена:

# .github/allowed_models.txt
fallback: gpt-6-astra
gpt-6-astra
gpt-6-sol
claude-sonnet-*
ПравилоОписание
*Разрешить все модели (по умолчанию, если файл отсутствует).
MODEL-IDРазрешить точный идентификатор модели.
GLOB-PATTERNРазрешить идентификаторы модели, соответствующие глобу (например, claude-sonnet-*).
fallback: MODEL-IDТребуется ровно один раз. Модель используется, если активная модель Copilot не разрешена.
#Строка комментариев.

Негабаритные шаблоны () не поддерживаются, резервная модель должна быть точным идентификатором (!patternа не глобом), а резервная модель должна соответствовать одной из настроенных глобов. Copilot CLI Повторно оценивает политику /cd и отклоняет недопустимый файл с ошибкой перед выполнением.

Список разрешений управляет только Copilotвстроенными моделями. Не удается отфильтровать пользовательские модели, добавленные с помощью метода "Ключи API" (BYOK). Модели BYOK остаются в списке и выбираются независимо от настроенных шаблонов, и fallback: директива никогда не применяется к ним. Дополнительные сведения см. в разделе [AUTOTITLE и Включение пользовательских моделей для GitHub Copilot в организации](/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models).

Локальные настройки (.github/copilot/settings.local.json)

Создайте .github/copilot/settings.local.json в репозитории личные перемены, которые не должны быть коммитированы. Добавить этот файл в .gitignore.

Локальный конфигурационный файл использует ту же схему, что и файл конфигурации репозитория (.github/copilot/settings.json), и имеет приоритет над ней.

Управляемые настройки MDM

ИТ-администраторы могут запускать базовую политику с помощью управляемых настроек Mobile Управление устройствами (MDM) вместо необходимости конфигурации для каждого пользователя. Эти настройки применяют устройства по умолчанию для поддерживаемых клавиш и загружаются до пользовательских настроек.

Управляемые параметры применяются равномерно в каждом режиме размещения сеансов — интерактивном, -p, , --acp``--ahp-hostи —поэтому корпоративная MCP, разрешение и --serverполитика подключаемых модулей не могут быть обходить путем запуска сеанса через другую точку входа.

Copilot CLI также загружает параметры, управляемые сервером при запуске, в дополнение к MDM. Параметры, управляемые устройством (MDM) и управляемые сервером, разрешаются на один ключ: значение MDM выигрывает для всех заданных ключей, а значение сервера заполняется ключами MDM не задано. Это позволяет организации задать определенную политику с помощью MDM (например, permissions), получая другие управляемые значения по умолчанию (например, model) с сервера.

Длительные сеансы повторно извлекает и повторно применяет управляемые параметры почасово, поэтому изменения политики, например, организация, включающая permissions.disableBypassPermissionsMode, вступают в силу без перезапуска сеанса.

Источники управляемых настроек MDM

Copilot CLI читает управляемые настройки из специализированных для платформы MDM или файловых локаций.

PlatformТип источникаLocation
macOSPlist MDMcom.github.copilot
macOSФайл/Library/Application Support/GitHubCopilot/managed-settings.json
WindowsРеестр MDMHKLM\SOFTWARE\Policies\GitHubCopilot
WindowsФайл%ProgramFiles%\GitHubCopilot\managed-settings.json
LinuxФайл/etc/github-copilot/managed-settings.json

Примечание.

В системах Copilot CLI POSIX отклоняет управляемые настройки на основе файлов, которые являются символическими ссылками, не принадлежащими root, или записываемыми по всему миру.

Формат файла

Пишите управляемые настройки на основе файлов в формате JSON.

{
    "model": "auto",
    "permissions": {
        "disableBypassPermissionsMode": "disable"
    }
}

Примечание.

model — это ключ верхнего уровня. Старые конфигурации, вложенные в нее по-прежнему permissions.model работают, — среда выполнения возвращается в это расположение, когда ключ верхнего уровня model отсутствует, но записывает новые конфигурации на model верхнем уровне.

Поддерживаемые ключи

В управляемых настройках MDM поддерживаются только следующие ключи.

КлючОписание
allowedMcpServersСписок разрешенных пользователей серверов MCP может загружаться, сопоставляется serverUrl``serverCommand``serverNameили . Доверенные сторонние серверы (например, встроенный GitHub сервер MCP) всегда освобождаются. Если этот ключ не задан, все серверы, не используемые по умолчанию; Пустой массив отрицает все из них. См. список разрешений и запретов управляемого сервера MCP.
autoTierЗадайте уровень автоматической маршрутизации по умолчанию ("efficiency"или"balance"``"intelligence") для сеансов с заданным model значениемauto. Голая строка строго блокирует уровень, переопределяя параметры пользователя и репозитория и скрывая его от /settings. Используйте {"overridable": "TIER"} вместо этого, чтобы задать организацию по умолчанию, которую пользователи и репозитории по-прежнему могут переопределить.
"fast" больше не выбирается и возвращается к "balance" предупреждению.
deniedMcpServersСписок запретов серверов MCP, которые никогда не должны загружаться, совпадают с тем же способом, что allowedMcpServersи серверы MCP. Соответствующий сервер, не используемый по умолчанию, блокируется независимо от списка разрешений. Запрет всегда выигрывает. См. список разрешений и запретов управляемого сервера MCP.
enabledPluginsВключите или отключите определённые плагины
extraKnownMarketplacesДобавьте доверенные маркетплейсы плагинов
forceLoginOrgsЗакрепите вход в утвержденный набор GitHub организаций (массив имен входа организации, соответствующий регистр не учитывается).
Copilot выполняется только для учетной записи, принадлежащей по крайней мере одной указанной организации; Личная учетная запись, учетная запись, которая принадлежит только другому предприятиям, или проверка подлинности с помощью КЛЮЧА BYOK/API отказывается с ошибкой, доступной для действия. Задайте пустой массив, чтобы отключить закрепление без удаления ключа. Разверните этот ключ через канал устройств (plist/registry) mdM или managed-settings.json, так как он должен иметь возможность перенаправления первого входа разработчика— канал, управляемый сервером, достигает только учетных записей, которые уже прошли проверку подлинности в организации. Этот ключ завершается сбоем: неиспользуемое значение или управляемая политика, которая не может быть прочитана на известном управляемом устройстве, блокирует все входы до исправления.
forceRemoteSettingsRefreshТребуется получение новых параметров, управляемых сервером, при запуске, даже если существует новая кэшированная политика. Кэшированные политики не могут соответствовать требованию о свежести. Если получение завершается сбоем, затронутые операции остаются ограниченными до тех пор, пока текущая политика не будет подтверждена. Значение устройства (MDM) имеет приоритет над кэшируемым значением сервера.
modelЗадайте модель по умолчанию для всех пользователей (переопределяется флагом --model или моделью возобновления сеанса).
effortLevel и contextTier задайте наряду с model тем же управляемым уровнем усилий и контекста, что и соответствующие ключи параметров репозитория , но только если управляемая модель поддерживает явные параметры усилий и контекста.
permissionsЗадайте управляемые разрешения, включая disableBypassPermissionsMode``ask / / deny``allow массивы правил и limitTo массив границ домена. См. правила управляемого разрешения и границу домена (limitTo).
policyHelperЗарегистрируйте исполняемый файл, предоставляющий уровень управляемых параметров с наименьшим приоритетом. Поля: path (обязательно), а также необязательные args, timeoutMsи refreshIntervalMs. Если устройство (MDM) и политика сервера регистрируются policyHelper, регистрация устройства выигрывает.
remoteControlУправление тем, можно ли управлять сеансами на этом устройстве с других устройств.
mode is "enabled", "disabled"or "requireSSO" (требуется githubDotComOrganizations , если задано).
requireBase64ImageAttachmentsЕсли trueтребуется вложение изображений в кодировке Base64, а не URL-адреса вложений.
false или unset сохраняет существующее поведение.
sandboxЗадайте пол политики песочницы, который пользователи не могут расслабиться. Поддерживаемые параметры включают enabled, failIfUnavailable, allowBypass``auth.git``sandboxMcpServers``addCurrentWorkingDirectory``auth.gh``allowDevToolAccess``sandboxLspServers``learningModeи файловую userPolicy.* систему и правила сети. Управляемое значение всегда имеет приоритет над собственным значением пользователя в более безопасном направлении. Включение песочницы, требующее успешного выполнения, и отключать изолированные серверы MCP и LSP нельзя. Отключение обхода или внедрения учетных данных невозможно повторно включить. Списки разрешений файловой системы можно сузить, а пути запрещены только для добавления.
failIfUnavailable можно задать только администратором и блокировать сеанс, если песочница не может быть установлена. Сведения о параметрах, которые пользователи могут задать сами, см. в разделе "Параметры пользователя " или "Запуск copilot help sandbox".
shellShortcutПринудительное включение или принудительное отключение ярлыка интерактивной $ оболочки для всех пользователей. Управляемое значение всегда переопределяет собственный shellShortcut параметр пользователя.
strictKnownMarketplacesОграничить подключаемые модули списком разрешенных платформ (массив json спецификаций Marketplace). Список разрешений также управляет встроенными marketplaceми после установки— пустой массив ([]) скрывает и блокирует все marketplace, включая встроенные, а не только добавленные пользователем или репозиторием.
telemetryОтправка базовой конфигурации экспорта OpenTelemetry: enabled, endpoint, protocol, headers``resourceAttributes, captureContent, serviceName``lockCaptureContentи headersProvider. См . раздел AUTOTITLE.

Примечание.

* policyHelper.path принимает абсолютный путь, относительный путь~/... () или имя программы, разрешенное PATHбез доступа. Другие относительные формы отклоняются. Регистрация принимается и проверяется, но среда выполнения пока не вызывает вспомогательный сервер — вспомогательный процесс выполнения в будущем выпуске.

  • Если remoteControl.mode есть "requireSSO", перечислить разрешенные организации в remoteControl.githubDotComOrganizations. Клиент должен быть авторизованным единым входом по крайней мере для одной из перечисленных gh.asamalin.top организаций— он больше не должен быть авторизован для всех из них.

"disable" Установите значение permissions.disableBypassPermissionsMode в управляемых параметрах MDM, чтобы заблокировать все параметры на уровне устройства. Параметры учетной записи не могут переопределить эту политику. Если задано нераспознанное значение, интерфейс командной строки регистрирует проблему и применяется "disable" как неисправное значение по умолчанию. См . раздел AUTOTITLE.

  • Большинство управляемых ключей блокируют всю строку: локальное изменение автоматически переопределяется управляемым значением при следующей загрузке. enabledPlugins и extraKnownMarketplaces это исключение— управляемый слой объединяет эти карты с собственными записями по полю вместо того, чтобы заменить их прямо. Это означает, что блокировка применяется для каждой записи, а не ко всему ключу: подключаемый модуль или Marketplace, закрепленный управляемой политикой, не может быть повторно включен, отключен или перенаправлен локально, но другие записи на той же карте остаются полностью управляемыми пользователем.

sandbox.learningModeимеет значение Windows только и может быть задано только с помощью собственного MDM (например, через Intune или реестр) — managed-settings.json значение файла игнорируется. На узле с записью отказа установите его "allow" для запуска изолированных команд оболочки в режиме записи и разрешения вместо режима записи и запрета по умолчанию, записывая каждую файловую систему или доступ к процессу и разрешая ей, а не отказываясь от нее (сетевая политика по-прежнему применяется). Это позволяет администратору отслеживать, какие команды когорты необходимы, прежде чем блокировать их; он не является режимом хранения. В строке состояния отображаются sandbox relaxed и вызовы оболочки отображаются (sandbox relaxed) во время его применения. deny Значение (по умолчанию) или удаление ключа возвращает когорту в обычную песочницу, а deny из любого управляемого канала всегда выигрываетallow. Параметры пользователя и узлы пакета SDK не могут задать этот ключ.

Правила управляемого разрешения

Добавьте denyи ask``allow списки правил под управляемым permissions ключом, чтобы применить политику разрешений для всех. Это работает независимо от того, задано ли permissions.disableBypassPermissionsMode значение.

{
    "permissions": {
        "deny": ["Shell(rm -rf *)", "Domain(*.evil.example)"],
        "ask": ["Shell(git push *)"],
        "allow": ["Read(**)"]
    }
}
Семейство правилСовпадения
Bash(...), Shell(...)Команды оболочки. Используйте <command> * (например, git push *) для сопоставления префикса команды; в противном случае правило соответствует точному тексту.
PowerShell(...)Команды PowerShell совпадают с тем же способом, что Shell(...)и команды PowerShell.
Read(...)Пути чтения и просмотра файлов. Поддерживает шаблоны глобов: / для корневого каталога рабочей области, ~/ для домашнего каталога и ./ текущего рабочего каталога.
Edit(...), Write(...)Пути записи и редактирования файлов совпадают с способом Read(...).
Domain(...)Имена узлов URL-адресов, соответствующие правилам URL-адреса.

Правила объединяются между управляемыми источниками с фиксированным приоритетом: всегда отклонять победы, а затем запрашивать, а затем разрешать— сопоставление deny правила блокирует запрос, даже если правило также соответствует правилу allow . deny и ask объединяются между каждым управляемым источником (сервером, MDM). allow требует каждого источника, объявляющего allow список, чтобы признать операцию — пересечение, а не объединение. Если любой из denyнаборов или ask``allow установлен, операция, которая не соответствует ни одному из них по умолчаниюask, а не падает безмолвно.

Edit(...) и Write(...) правила применяются к более чем встроенным средствам файлов. Они также охватывают файлы, написанные непосредственно командой оболочки. Copilot CLI распознает фиксированный набор этих записей. В ней рассматриваются перенаправления выходных данных Bash (, , , >|, ), выходные перенаправления PowerShell (>, >>, *>``*>>), а также небольшой набор изменений на месте sed (>``sed -iили --in-place, а также формы -i '' BSD и ).-I ''``&>>``&>``>> Когда Copilot CLI можно выработать целевой файл из команды, deny соответствующее правило блокирует запись и ask соответствующее правило сначала запрашивает. Это применяется даже в том случае, если широкое правило, например Shell(*) , разрешает команду. Иногда целевой файл не может быть заранее разработан, например, когда путь поступает из переменной. В этом случае эти правила пути не применяются, и команда проверяется обычными правилами команд оболочки.

Граница домена (limitTo)

Добавьте массив рядом limitTo с ask``denyключом и allow под управляемым permissions ключом для принудительного применения списка разрешений домена закрытого мира:

{
    "permissions": {
        "limitTo": ["gh.asamalin.top", "*.gh.asamalin.top"]
    }
}

Поддерживаются limitToтолько Domain(...) записи. Любой запрос сети агента к домену за пределами списка запрещен без запроса, а правила пользователя, сохраненные утверждения и режимы разрешений не могут расширить его. URL-адреса, обнаруженные в запросах оболочки, обрабатываются как Domain запросы, а также должны соответствовать границе. limitToне ограничивает shell``readсами операции или write операции.

Пустой limitTo список запрещает каждый запрос домена. Недопустимый список или недопустимая запись применяется как пустой список (и сообщается как ошибка конфигурации), а не отменяет остальную часть управляемой политики.

deny по-прежнему имеет приоритет над limitTo. ask и allow только уточняйте запросы, которые уже находятся внутри границы. Как allowи, limitTo является пересечением между управляемыми источниками — каждый управляемый источник, объявляющий limitTo список, должен признать запрос.

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

Администраторы могут управлять серверами MCP непосредственно с помощью управляемых параметров MDM, независимо от списка разрешений MCP предприятия.

Задайте allowedMcpServers и(или) deniedMcpServers в источнике управляемых параметров:

{
    "allowedMcpServers": [
        { "serverUrl": "https://mcp.example.com/*" },
        { "serverCommand": ["npx", "-y", "@example/mcp-server"] }
    ],
    "deniedMcpServers": [
        { "serverName": "untrusted-server" }
    ]
}

Каждая запись идентифицирует сервер точно одним из следующих совпадений.

СовпаденийСовпаденияNotes
serverUrlУдаленный сервер (HTTP/SSE) по URL-адресуПоддерживает * подстановочные знаки; схему и сопоставление узла без учета регистра, регистр пути с учетом регистра.
${VAR} ссылки развертываются перед сопоставлением.
serverCommandСервер stdio по точной команде и аргументам в порядке
${VAR} ссылки развертываются перед сопоставлением.
serverNameСервер по назначенной меткиЗаписи списка разрешений ограничены [A-Za-z0-9_./-]+ (учитывает регистр, без подстановочных знаков; имена реестра, такие как microsoft/playwright-mcp приняты); записи списка запретов принимают любую непустую строку.

Правила:

  • Доверенные сторонние серверы (например, встроенный GitHub сервер MCP) всегда освобождаются от обоих списков.
  • Unset allowedMcpServers разрешает все серверы, отличные от по умолчанию; Пустой массив блокирует все из них (запретить все).
  • Отмена набора или пустого deniedMcpServers ничего не блокирует.
  • Запрет всегда выигрывает— сопоставление deniedMcpServers сервера блокируется, даже если он также соответствует allowedMcpServers.
  • Для удаленных серверов совпадение должно поступать из serverUrl записи; serverName только при отсутствии serverUrl записей. Для серверов stdio совпадение должно поступать из serverCommand записи; serverName только при отсутствии serverCommand записей.

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