Skip to main content
Skip to content

Diretório de configuração do GitHub Copilot CLI

Encontre informações sobre o ~/.copilot diretório, onde Copilot CLI armazena configuração, dados de sessão e personalizações.

Copilot CLI armazena sua configuração, histórico de sessão, logs e personalizações em um único diretório em seu computador. Por padrão, esse diretório é ~/.copilot (ou seja, $HOME/.copilot).

Este artigo descreve o conteúdo deste diretório e como você pode usá-los.

Visão geral do diretório

O ~/.copilot diretório contém os seguintes itens de nível superior.

CaminhoTipoDescrição
agents/DiretórioDefinições de agente personalizado pessoal
config.jsonArquivoEstado do aplicativo gerenciado automaticamente (autenticação, plug-ins instalados e outros dados internos)
copilot-instructions.mdArquivoInstruções personalizadas pessoais (aplicadas a todas as sessões)
extensions/DiretórioExtensões pessoais carregadas pela CLI
hooks/DiretórioScripts de gancho no nível do usuário
ide/DiretórioEstado de integração do IDE
installed-plugins/DiretórioArquivos de plug-in instalados
instructions/DiretórioArquivos pessoais adicionais *.instructions.md
logs/DiretórioArquivos de log de sessão
lsp-config.jsonArquivoDefinições de servidor LSP no nível do usuário
mcp-config.jsonArquivoDefinições de servidor MCP no nível do usuário
mcp-oauth-config/DiretórioArmazenamento de fallback de registro e token OAuth do MCP
mcp-secrets/DiretórioArmazenamento de fallback local e índice para espaços reservados secretos do MCP
permissions-config.jsonArquivoPermissões de ferramenta e diretório salvas por projeto
plugin-data/DiretórioDados persistentes para plug-ins instalados
providers.jsonArquivoProvedor BYOK (bring-your-own-key) de nível de usuário e registro de modelos
session-state/DiretórioHistórico de sessão e dados do workspace
command-history-state/DiretórioDados do histórico de comandos
session-store.dbArquivoBanco de dados SQLite para dados entre sessões
settings.jsonArquivoSuas configurações pessoais
skills/DiretórioDefinições de habilidades personalizadas pessoais

Observação

Nem todos esses itens aparecem imediatamente. Alguns são criados sob demanda na primeira vez que você usa um recurso específico— por exemplo, installed-plugins/ aparece somente depois de instalar seu primeiro plug-in.

Arquivos editáveis pelo usuário

Os arquivos a seguir foram projetados para serem editados diretamente por você ou gerenciados por meio de comandos da CLI.

settings.json

Este é o arquivo de configuração principal para Copilot CLI. Em uma sessão, você pode usar o comando interativo /settings para alterar valores específicos ou executar /settings KEY VALUE para definir um único valor. Consulte Alterando as configurações com o /settings comando. Como alternativa, você pode editar o settings.json arquivo diretamente em um editor de texto. O arquivo dá suporte a JSON com comentários (JSONC).

Por padrão, esse arquivo está localizado no ~/.copilot diretório, que é o diretório de configuração no nível do usuário. Ele contém padrões globais de nível de usuário para todos os repositórios. Você pode alterar o local desse diretório definindo a variável de COPILOT_HOME ambiente para um caminho diferente.

Observação

As configurações editáveis pelo usuário são armazenadas em settings.json. Essas configurações foram armazenadas originalmente em config.json. Quaisquer configurações de usuário em config.json são ignoradas. Esse arquivo é usado para armazenar o estado interno, como plug-ins instalados e pastas confiáveis.

Se settings.json falhar ao ler, analisar ou validar, Copilot CLI ignorará os valores inválidos e mostrará um aviso de inicialização na linha do tempo direcionando você para a guia Problemas do comando /settings. Abra essa guia para ver o erro específico e, em seguida, corrija o problema relatado para restaurar as configurações afetadas.

Se settings.json contiver uma chave de nível superior que não seja uma configuração reconhecida (por exemplo, um erro de digitação), Copilot CLI liste-a na guia Problemas do /settings comando em vez de na linha do tempo ou no stderr. O rótulo da aba exibe uma contagem (por exemplo, Problems (2)) quando qualquer escopo de configuração apresenta um problema. $schema é tolerado e nunca relatado.

Se ~/.copilot/settings.json for um link simbólico — por exemplo, para sincronizar configurações usando um repositório de dotfiles —, as gravações do comando /settings seguem o link simbólico e atualizam seu destino, em vez de substituir o link simbólico por um arquivo comum.

Para obter a lista completa de configurações e como elas interagem com a configuração no nível do repositório, consulte configurações de arquivo mais adiante neste artigo.

Dica

Execute copilot help config em seu terminal para obter uma referência rápida.

Use copilot config no shell, fora de uma sessão, para ler ou alterar as configurações de forma não interativa: o equivalente em script ao comando de barra /settings. Adicionar --repo ou --local ao destino .github/copilot/settings.json ou .github/copilot/settings.local.json em vez do arquivo de configurações do usuário; somente chaves substituíveis por repositório podem ser gravadas lá. Consulte referência de comando da CLI GitHub Copilot para obter a referência de comando completa.

copilot-instructions.md

Instruções personalizadas pessoais que se aplicam a todas as suas sessões, independentemente de em qual projeto você está trabalhando. Esse arquivo funciona da mesma maneira que um nível copilot-instructions.md de repositório, mas se aplica globalmente.

Para obter mais informações, consulte Adicionando instruções personalizadas do repositório para GitHub Copilot.

instructions/

Armazene aqui arquivos de instrução pessoal adicionais como arquivos *.instructions.md. Elas são carregadas junto com copilot-instructions.md e se aplicam a todas as suas sessões. Você pode organizar instruções por tópico, por exemplo, ~/.copilot/instructions/code-style.instructions.md.

mcp-config.json

Define os servidores MCP (Protocolo de Contexto de Modelo) disponíveis no nível do usuário. Esses servidores estão disponíveis em todas as suas sessões, independentemente de qual diretório de projeto você esteja. As configurações MCP de nível de projeto (em .mcp.json ou .github/mcp.json) têm precedência sobre definições no nível do usuário quando os nomes de servidor entram em conflito.

Para obter mais informações, consulte Adicionando servidores MCP para GitHub Copilot CLI.

lsp-config.json

Define servidores LSP (Language Server Protocol) disponíveis no nível do usuário. Esses servidores fornecem inteligência de linguagem (diagnóstico, conclusões etc.) para o agente. Gerencie este arquivo usando o /lsp comando de barra, ou edite-o diretamente.

Para obter mais informações, consulte Adicionando servidores LSP para GitHub Copilot CLI.

providers.json

Define um registro de provedores e modelos BYOK (bring-your-own-key), como um objeto JSON com providers e models chaves. Quando esse arquivo declara qualquer provedor ou modelo, ele tem precedência sobre as variáveis de ambiente herdadas COPILOT_PROVIDER_* .

Por padrão, esse arquivo está localizado em ~/.copilot/providers.json. Substitua sua localização com a variável de ambiente COPILOT_PROVIDERS_CONFIG.

Os modelos neste arquivo estão disponíveis junto com os modelos fornecidos por sua Copilot assinatura. Depois de editar o arquivo manualmente, reinicie Copilot CLI para carregar suas alterações. Para obter instruções de configuração, confira Adicionando modelos LLM à CLI de GitHub Copilot.

Aviso

Chaves de API, tokens Bearer e valores de cabeçalho neste arquivo são armazenados como texto simples. Não faça commit do arquivo em um repositório nem o compartilhe sem remover as credenciais. Valores como $MY_API_KEY são cadeias de caracteres literais, não referências a variáveis de ambiente.

Estrutura de configuração do provedor

Use um objeto JSON, sem comentários ou vírgulas à direita. O arquivo contém dois arrays. Cada provedor define uma conexão e cada modelo se refere a um desses provedores pelo nome. Nas tabelas abaixo, [] significa uma entrada em um array. Por exemplo, models[].capabilities.supports.vision é a vision configuração dentro supports, dentro capabilities, dentro de uma entrada de modelo.

CampoTipoObrigatórioDefaultDescrição
providersMatriz de objetosNo[]Conexões do fornecedor. Consulte as configurações do Provider.
modelsMatriz de objetosNo[]Modelos disponíveis por meio dessas conexões. Consulte as configurações do modelo.

Um arquivo ausente ou vazio, ou um arquivo sem entradas de provedor ou modelo, permite que a CLI faça fallback para COPILOT_PROVIDER_* variáveis de ambiente. Um valor null para qualquer array é tratado como um array vazio. Um arquivo com JSON inválido ou entradas de modelo ou provedor inválido produz um erro de configuração.

Para usar um modelo configurado ao iniciar a CLI, passe PROVIDER-NAME/MODEL-ID na opção --model. PROVIDER-NAME é o valor do name provedor e MODEL-ID é o valor do id modelo. Por exemplo, execute copilot --model local/qwen3:8b. Como alternativa, durante uma sessão interativa, você pode inserir /model e escolher o modelo no seletor.

Esse arquivo configura conexões, recursos de modelo e instruções de modelo para uso em Copilot CLI. O JSON neste arquivo não é um corpo de solicitação de API do provedor. As configurações não são passadas para o provedor quando você as adiciona a esse arquivo.

Configurações do provedor

Cada entrada em providers aceita os campos a seguir. Apenas name e baseUrl são sempre obrigatórios. Os requisitos de autenticação dependem do provedor.

CampoTipoObrigatórioDefaultDescrição
providers[].nameStringSimNoneUm nome exclusivo para essa conexão, como "local" ou "my-anthropic". Não deve conter /. Os modelos se referem a esse nome usando seu provider campo.
providers[].typeStringNo"openai"O tipo de conexão: "openai" para APIs compatíveis com OpenAI, "azure" para Azure OpenAI, "anthropic" para a API de Mensagens da Anthropic ou "local_model" para um modelo local servido por llama-server.
providers[].baseUrlCadeia de caracteres que contém uma URL ou caminho de arquivoSimNoneA URL base da API do provedor. Para APIs compatíveis com OpenAI, inclua o prefixo de API necessário, como https://api.openai.com/v1 ou http://127.0.0.1:11434/v1 para Ollama. Para acesso direto Anthropic, use https://api.anthropic.com. Para o Azure, use o endpoint do recurso. Com "type": "local_model", isso pode, em vez disso, ser um caminho para um .gguf arquivo de modelo.
providers[].wireApiStringNo"completions"O formato de API para conexões OpenAI e Azure: "completions" para Chat Completions ou "responses" para a API de Responses. Ignorado por Anthropic.
providers[].transportStringNo"http"Aceita "http" ou "websockets". WebSockets exigem "type": "openai" e "wireApi": "responses", e o provedor deve dar suporte a esse transporte.
providers[].apiKeyStringDependente do provedorRemover definiçãoA chave de API do provedor. Pode ser omitido para um servidor local não autenticado.
providers[].bearerTokenStringDependente do provedorRemover definiçãoUm token Bearer, sem o prefixo Bearer . Tem precedência sobre apiKey quando ambos são definidos. Esse é um token estático, não um comando de atualização de token.
providers[].headersObjetoNoRemover definiçãoCabeçalhos HTTP adicionais, com nomes de cabeçalho como chaves e cadeias de caracteres como valores.
providers[].headers.<header-name>StringNoRemover definiçãoO valor de um cabeçalho, por exemplo "X-Project": "my-project". Use apiKey ou bearerToken para autenticação de provedor padrão.
providers[].azureObjetoNoRemover definiçãoOpções específicas do Azure. Contém o apiVersion campo descrito abaixo.
providers[].azure.apiVersionStringNoRemover definiçãoA versão da API do Azure a ser solicitada. Quando definida como uma cadeia de caracteres de versão não vazia com suporte pelo endpoint, a CLI usa a API de implantação com versão. Quando omitida, a CLI usa a API sem versão /openai/v1.
providers[].localModelObjetoNoRemover definiçãoOpções de servidor para um modelo gerenciado pela .gguf CLI. Consulte as configurações do servidor de modelo local.
providers[].modelProviderStringNoInferido da conexãoUm rótulo de provedor usado apenas para telemetria. Os valores reconhecidos são "openai", "anthropic", "azure_openai", "ollama", "lm_studio", "foundry_local" e "llama_cpp". Não altera o protocolo de conexão ou o comportamento do modelo.
providers[].hasBearerTokenProviderbooleanoNofalseIndica que um aplicativo que usa o SDK fornece tokens por meio de um retorno de chamada. Omita isso ao configurar a CLI manualmente. Defini-lo como true neste arquivo não registra um provedor de token.

O arquivo de provedor nomeado não dá suporte apiKeyCommand. Não coloque credenciais ou comandos de atualização de token em metadata ou localModel.args.

Configurações do servidor de modelo local

Essas configurações se aplicam somente quando providers[].type é "local_model" e baseUrl é um caminho para um arquivo .gguf. A CLI é iniciada llama-server quando o modelo é usado pela primeira vez. O executável deve ser instalado e estar disponível em PATH. Use um caminho de modelo absoluto para evitar depender do diretório do qual você inicia a CLI.

Se baseUrl for uma URL HTTP ou HTTPS, a CLI se conectará a esse servidor existente e não usará essas configurações de inicialização. Eles também não configuram o Ollama ou outros servidores compatíveis com OpenAI.

Todos os campos dentro providers[].localModel são opcionais.

CampoTipoDefaultDescrição
providers[].localModel.ctxSizeInteiro não negativo
llama-server PadrãoTamanho de contexto solicitado em tokens, passado como --ctx-size. A alocação real pode ser menor do que a solicitada.
providers[].localModel.nGpuLayersInteiro não negativo
llama-server PadrãoNúmero de camadas de modelo para transferir para a GPU, passado como --n-gpu-layers.
providers[].localModel.parallelInteiro não negativo1Número de slots de servidor, passado como --parallel. Vários slots podem dividir o contexto disponível entre solicitações.
providers[].localModel.argsMatriz de cadeias de caracteres[]
llama-server argumentos adicionais. Cada argumento é uma cadeia de caracteres separada, como ["--threads", "8"]. Estes seguem os argumentos gerados dos campos acima.
providers[].localModel.persistbooleanofalseSolicita que o servidor gerenciado permaneça em execução após a saída de uma CLI limpa para que um processo da CLI posterior possa reutilizá-lo. Caso contrário, a CLI limpará o servidor ao sair.
providers[].localModel.logsCadeia de caracteres que contém um caminho de arquivo ou "inherit"Saída descartadaAcrescenta a saída padrão do servidor e a saída de erro ao final do arquivo especificado. Use um caminho absoluto.
"inherit" envia a saída para o terminal e pode interferir na exibição da CLI.

A CLI gerencia o caminho do modelo do servidor, o host e a porta do servidor. Você não pode passar --model, -m, --host ou --port através de args, incluindo formas como --port=8080.

Configurações do modelo

Cada entrada em models aceita os campos a seguir. Somente id e provider são necessários.

CampoTipoObrigatórioDefaultDescrição
models[].idStringSimNoneO identificador de modelo usado na CLI. Deve ser único em seu provedor. Também usado como o nome do modelo do provedor, a menos que wireModel esteja definido.
models[].providerStringSimNoneDeve corresponder à name de uma entrada de providers.
models[].wireModelStringNoValor de idO modelo ou o nome da implantação enviado ao provedor. Use isto quando o provedor espera um nome diferente da ID que você deseja selecionar na CLI.
models[].modelIdStringNoValor de idA identidade do modelo usada para consultar o comportamento e os padrões específicos do modelo da CLI. Para um alias ou nome de implantação, defina-o como a ID reconhecida do modelo subjacente. Isso não altera o nome do modelo enviado ao provedor.
models[].nameStringNoPROVIDER-NAME/MODEL-IDUm nome de exibição para o modelo. Não altera sua ID de seleção.
models[].maxPromptTokensIntegerNoDependente de modelo, caso contrário 128000O orçamento de tokens de entrada. Use um número inteiro positivo que corresponda ao seu modelo e deployment.
models[].maxContextWindowTokensIntegerNoLimite de modelo conhecido, caso contrário, não definidoO limite total da janela de contexto, incluindo tokens de entrada e saída. Defina isso para modelos cujo limite a CLI não conhece.
models[].maxOutputTokensIntegerNoDependente do modelo e do provedorOrçamento de tokens de saída. Os requisitos de raciocínio do provedor e os do modelo podem restringir ainda mais a saída.
models[].capabilitiesObjetoNoConfigurações padrão do modeloDescreve os recursos com suporte e os limites. Consulte as capacidades do modelo.
models[].systemMessageObjetoNoInstruções da CLI padrãoAdiciona a, substitui ou personaliza as instruções do sistema para este modelo. Veja mensagens do sistema do modelo.
models[].metadataObjetoNoRemover definiçãoDados descritivos adicionais, incluindo informações salvas quando um modelo é descoberto. Consulte metadados do modelo.

Os três campos de limite de token aceitam números inteiros de 0 a 4294967295. Use valores positivos apropriados para sua implantação em vez de depender de 0 como uma maneira de desabilitar um limite. Essas configurações informam à CLI quais limites usar, mas não aumentam a capacidade real do modelo.

Funcionalidades do modelo

O models[].capabilities objeto descreve o modelo. Definir um recurso para true não adiciona esse recurso a um modelo que não dá suporte a ele.

CampoTipoDescrição
models[].capabilities.familyStringIdentificador de família de modelo descritivo. Use modelId, não este campo, para escolher o comportamento específico do modelo da CLI.
models[].capabilities.supportsObjetoRecursos suportados. Consulte os recursos de modelo com suporte.
models[].capabilities.limitsObjetoLimites de token e imagem. Consulte os limites de capacidade do modelo.

Todos os campos de funcionalidade são opcionais. Os objetos são mesclados com os padrões do modelo, e os arrays substituem os arrays padrão correspondentes.

Recursos compatíveis do modelo

Os campos a seguir ficam dentro de models[].capabilities.supports.

CampoTipoDescrição
models[].capabilities.supports.visionbooleanoSe o modelo aceita imagens. O padrão é false quando nenhuma outra informação de funcionalidade está disponível.
models[].capabilities.supports.toolCallsbooleanoSe o modelo dá suporte a chamadas de ferramenta. A grafia tool_calls também é aceita e tem precedência caso as duas grafias estejam presentes. Isso descreve o suporte, não a permissão para executar ferramentas.
models[].capabilities.supports.streamingbooleanoSe o modelo dá suporte a respostas transmitidas. Essas são informações de funcionalidade, não uma configuração para ativar ou desativar o streaming de resposta.
models[].capabilities.supports.adaptive_thinkingstring ou booleanoO suporte do modelo ao pensamento adaptável da Anthropic. Prefira um dos valores de cadeia de caracteres descritos abaixo. Para compatibilidade, true significa "optional" e false significa "unsupported".
models[].capabilities.supports.reasoning_effortMatriz de cadeias de caracteresNíveis de esforço de raciocínio que o modelo suporta. Isso anuncia os níveis disponíveis, não o nível a ser usado para uma solicitação. A CLI também aplica restrições específicas ao modelo.
models[].capabilities.supports.thinkingbooleanoInformações descritivas de suporte que a descoberta de modelos pode salvar. Por si só, não configura o recurso de pensamento nem habilita controles de esforço de raciocínio.
models[].capabilities.supports.reasoningEffortBooleano ou matriz de cadeias de caracteresCampo de compatibilidade. Um booleano não habilita controles de esforço de raciocínio, e um array não é usado consistentemente entre os recursos da CLI. Use reasoning_effort para uma lista de níveis compatíveis.

Os adaptive_thinking valores têm os seguintes significados.

ValueMeaning
"unsupported"O modelo não dá suporte ao raciocínio adaptativo. Isso não exclui outras formas de raciocínio.
"optional"O modelo dá suporte ao pensamento adaptável, mas não o requer.
"required"Quando o pensamento está habilitado, o modelo requer um pensamento adaptável em vez de um orçamento de pensamento manual. Thinking ainda pode ser desabilitado.
"adaptive_only"O modelo requer um pensamento adaptável e não permite que o pensamento seja desabilitado.

Para reasoning_effort, a CLI reconhece "none", "minimal", "low", , "medium", "high", "xhigh"e "max". Liste apenas os níveis compatíveis com seu modelo, por exemplo ["low", "medium", "high"]. Uma lista omitida ou vazia faz com que a CLI use seus padrões específicos do modelo. Selecione um nível com --reasoning-effort ou o seletor de modelo quando disponível.

Limites de capacidades do modelo

Os campos a seguir pertencem dentro de models[].capabilities.limits. Todos são opcionais.

CampoTipoDescrição
models[].capabilities.limits.max_prompt_tokensIntegerOrçamento de tokens de entrada. Corresponde a .
models[].capabilities.limits.max_context_window_tokensIntegerLimite total da janela de contexto. Corresponde a .
models[].capabilities.limits.max_output_tokensIntegerLimite de tokens de saída. Corresponde a .
models[].capabilities.limits.visionObjetoLimites de imagem, contendo os campos abaixo.
models[].capabilities.limits.vision.supported_media_typesMatriz de cadeias de caracteresTipos MIME de imagem aceitos, como "image/jpeg", "image/png"e "image/webp". Esses três tipos são o padrão.
models[].capabilities.limits.vision.max_prompt_imagesIntegerNúmero máximo de imagens por prompt. O padrão é 1.
models[].capabilities.limits.vision.max_prompt_image_sizeIntegerTamanho máximo de cada imagem em bytes. O padrão é 3145728 (3 MiB).

Prefira os campos maxPromptTokens, maxContextWindowTokens e maxOutputTokens do modelo ao definir orçamentos de token manualmente. O Discovery pode salvar os limites em ambos os lugares. Mantenha valores duplicados consistentes, pois diferentes operações da CLI leem as duas representações. Para servidores locais gerenciados pela CLI, um limite de contexto medido pode ter precedência sobre um valor configurado.

Use números inteiros não negativos para contagens de tokens e tamanhos de imagem, e um número inteiro positivo para a contagem de imagens. Contagens de tokens e contagens de imagens devem caber entre 0 e 4294967295. Os tamanhos de imagem são medidos em bytes, não em tokens.

Mensagens do sistema do modelo

models[].systemMessage controla as instruções do sistema usadas quando a CLI cria um prompt padrão para esse modelo, inclusive para subagentes de uso geral. Isso tem precedência sobre a configuração de mensagens do sistema em toda a sessão nesses caminhos. Ele não substitui as instruções de um agente personalizado selecionado ou de um subagente especializado.

Prefira "mode": "append" quando você só precisa de instruções adicionais. Substituir ou remover instruções internas pode alterar o uso da ferramenta da CLI e outro comportamento esperado. Omita systemMessage para manter as instruções padrão, em vez de defini-la como null.

CampoTipoObrigatórioDescrição
models[].systemMessage.modeStringNo
"append" (o padrão), "replace", ou "customize". Consulte a tabela de modo abaixo.
models[].systemMessage.contentStringNo modo replaceTexto a ser acrescentado ou usado como instruções de substituição. No modo customize, isso é acrescentado após as alterações da seção.
models[].systemMessage.sectionsObjetoNoAlterações de seção, disponíveis somente no customize modo. Consulte seções de mensagem do sistema.
models[].systemMessage.contentBlocksMatriz de objetosNoInstruções de substituição divididas em blocos, disponíveis somente no replace modo. Consulte os blocos de conteúdo da mensagem do sistema.

Somente os campos listados para um modo são aceitos. Por exemplo, adicionar sections sem definir "mode": "customize" causa um erro de configuração.

ModeCampos aceitosEfeito
"append"
mode, contentMantém o prompt padrão e acrescenta content. Omitir mode seleciona esse modo.
"replace"
mode
content
contentBlocks
Substitui as instruções padrão.
content deve estar presente como uma cadeia de caracteres, mesmo quando você fornece contentBlocks. A CLI ainda pode adicionar o ambiente e o contexto do agente aplicáveis.
"customize"
mode
sections
content
Altera as seções nomeadas do prompt padrão e, opcionalmente, acrescenta content. As seções que você não alterar mantêm seus padrões.

No conteúdo de reposição, {{copilot:memories}} insere as instruções de memória e o contexto da CLI quando disponível.

Seções de mensagem do sistema

No modo customize, models[].systemMessage.sections mapeia nomes de seção para objetos. Cada objeto especifica um action e, quando necessário, content. Por exemplo, models[].systemMessage.sections.tone altera a seção de tom.

CampoTipoObrigatórioDescrição
models[].systemMessage.sections.<section-name>ObjetoNoUma alteração em uma das seções ou grupos listados abaixo.
models[].systemMessage.sections.<section-name>.actionStringSim, para cada entrada
"replace", "remove", "append", "prepend" ou "preserve".
models[].systemMessage.sections.<section-name>.contentStringNoTexto usado por replace, appendou prepend. O conteúdo omitido é tratado como vazio. Não é necessário para remove ou preserve.

As ações disponíveis são:

ActionEfeito
"replace"Substitui a seção ou grupo com content.
"remove"Remove a seção ou o grupo. Uma remoção de grupo mantém seções que têm suas próprias entradas em sections.
"append"Adiciona content após a seção ou grupo. Inclua espaços necessários ou novas linhas em content.
"prepend"Adiciona content antes da seção ou grupo. Inclua espaços necessários ou novas linhas em content.
"preserve"Deixa a seção inalterada e a protege contra remoção ao agrupá-la. Não o protege contra substituição em grupo.

A ação transform não é suportada em providers.json porque requer um retorno de chamada de aplicativo, não uma configuração JSON salva.

Use os seguintes nomes de seção ou grupo como chaves em sections.

NameVarianteConteúdo coberto
preambleSeçãoInstruções de identidade introdutórias do assistente.
toneSeçãoTom e estilo de resposta.
tool_efficiencySeçãoDiretrizes sobre o uso eficiente de ferramentas.
environment_contextSeçãoInformações sobre o ambiente de trabalho.
code_change_rulesSeçãoDiretrizes para fazer alterações de código.
guidelinesSeçãoDiretrizes adicionais de comportamento do agente.
safetySeçãoDiretrizes de segurança e limitações de ambiente.
custom_instructionsSeçãoInstruções personalizadas carregadas.
runtime_instructionsSeçãoInstruções adicionais compiladas para a sessão.
last_instructionsSeçãoInstruções colocadas no final do prompt.
identityGroupIdentidade, interação, tom, delegação, eficiência da ferramenta, versão, modelo e instruções de tarefa. Não inclui environment_context.
tool_instructionsGroupA introdução da ferramenta e as instruções de uso da ferramenta.

As alterações de seção individuais são aplicadas antes das alterações de grupo. Uma substituição de grupo substitui todas as seções pertencentes ao grupo, incluindo seções que você personalizou separadamente.

Blocos de conteúdo de mensagens do sistema

No modo replace, models[].systemMessage.contentBlocks fornece as instruções de substituição em vez da cadeia de caracteres simples content. Mantenha content presente porque ele é exigido pelo formato de configuração. Todos os blocos devem ter uma string content.

CampoTipoObrigatórioDefaultDescrição
models[].systemMessage.contentBlocks[].contentStringSimNoneO texto desse bloco, na ordem do array.
models[].systemMessage.contentBlocks[].isStaticbooleanoNoNão marcado como estáticoMarca o conteúdo que pode ser armazenado em cache independentemente da alteração do conteúdo do prompt.
models[].systemMessage.contentBlocks[].cacheBreakpointbooleanoNoNenhum ponto de interrupção explícitoSolicita um limite de cache após esse bloco para provedores que dão suporte ao cache de prompt explícito. Não garante o armazenamento em cache pelo provedor.

Metadados do modelo

models[].metadata é um objeto cujos valores podem ser qualquer valor JSON válido. São dados descritivos, não uma maneira de fornecer parâmetros de solicitação da API ou credenciais. Você não precisa adicionar metadados manualmente.

A descoberta de modelo pode salvar os campos de string a seguir. Deixe os valores de descoberta existentes intactos.

CampoTipoDescrição
models[].metadata.adapterIdStringIdentifica a integração de descoberta, como "ollama".
models[].metadata.providerKindStringA categoria do provedor descoberto, como "ollama".
models[].metadata.providerInstanceIdStringIdentifica a instância do provedor, como "ollama:http://127.0.0.1:11434".
models[].metadata.providerDigestStringUm resumo de modelo fornecido pelo provedor, quando disponível.

Exemplo de configuração do provedor

Este exemplo se conecta a um servidor Ollama existente e mostra como as funcionalidades do modelo e as instruções do sistema são aninhadas. Ele pressupõe que qwen3:8b está instalado. Os limites de token são orçamentos de exemplo, não uma indicação da capacidade máxima do modelo. Ajuste-os para corresponder ao contexto configurado em seu servidor.

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."
          }
        }
      }
    }
  ]
}

Depois de reiniciar a CLI, selecione este modelo com copilot --model local/qwen3:8b ou o seletor /model. Adicione mais objetos a qualquer array para configurar outros provedores e modelos.

agents/

Armazene as definições de agente personalizado pessoal aqui como .agent.md arquivos. Os agentes colocados neste diretório estão disponíveis em todas as suas sessões. Se um agente pessoal e um agente no nível do projeto tiverem a mesma ID, por exemplo, se ambos os arquivos de nível superior forem nomeados reviewer.agent.md, o agente pessoal terá precedência. O campo opcional de frontmatter name não controla a desduplicação, portanto, agentes com o mesmo name, mas IDs diferentes, ambos são carregados.

Para obter mais informações, consulte Criando e usando agentes personalizados para GitHub Copilot CLI.

skills/

Armazene as definições de habilidades personalizadas pessoais aqui. Cada habilidade reside em um subdiretório que contém um SKILL.md arquivo, por exemplo, ~/.copilot/skills/my-skill/SKILL.md. As habilidades pessoais estão disponíveis em todas as suas sessões. Habilidades de nível de projeto têm prioridade sobre habilidades pessoais caso compartilhem o mesmo nome.

Para obter mais informações, consulte Adicionando habilidades de agente para GitHub Copilot CLI.

hooks/

Armazene os scripts de gancho no nível do usuário aqui. Esses ganchos se aplicam a todas as suas sessões. Você também pode definir ganchos em linha no arquivo de configuração do usuário (~/.copilot/settings.json) usando a chave hooks. Os ganchos no nível do repositório (in .github/hooks/) são carregados junto com ganchos no nível do usuário.

Para obter mais informações, consulte Usando ganchos com GitHub Copilot CLI.

extensions/

Armazene arquivos de extensão no nível do usuário aqui. As extensões neste diretório estão disponíveis entre sessões.

Você pode criar arquivos neste diretório manualmente ou criar uma extensão e editar o arquivo gerado.

Arquivos gerenciados automaticamente

Os itens a seguir são gerenciados pela CLI. Você geralmente não deve editá-los manualmente.

config.json

Armazena o estado do aplicativo interno que é gerenciado automaticamente pela CLI, incluindo dados de autenticação, metadados de plug-in instalados e outras informações de runtime. Normalmente, não é necessário editar esse arquivo.

Observação

Versões anteriores de Copilot CLI armazenavam tanto as configurações do usuário quanto o estado do aplicativo em config.json. As configurações editáveis pelo usuário agora estão localizadas em settings.json. As configurações deixadas em config.json são ignoradas. Esse arquivo contém apenas o estado interno, como plug-ins instalados e pastas confiáveis.

permissions-config.json

Armazena as suas decisões de permissão de ferramenta e diretório salvas, organizadas pelo local do projeto. Quando você aprova uma ferramenta ou concede acesso a um diretório para o local atual, a CLI registra a decisão aqui para que você não seja solicitado novamente no mesmo repositório ou diretório.

Observação

Se você quiser redefinir permissões para um projeto, poderá excluir a entrada relevante desse arquivo. No entanto, editar o arquivo enquanto uma sessão está em execução pode causar um comportamento inesperado. A CLI remove automaticamente as entradas cujo caminho de localização não existe mais no disco.

Local do arquivo

Copilot CLI resolve o arquivo do diretório de configuração.

PrioridadeFonteArquivo usado
1--config-dir=DIRECTORYDIRECTORY/permissions-config.json
2COPILOT_HOME$COPILOT_HOME/permissions-config.json
3Default~/.copilot/permissions-config.json

A CLI usa apenas o primeiro diretório de configuração aplicável nesta ordem. Ele também não carrega permissions-config.json dos locais de menor prioridade.

A --config-dir opção é uma opção herdada. Prefira COPILOT_HOME quando precisar alterar o diretório de configuração.

No Windows, o arquivo padrão normalmente é:

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

Builds mais antigos usavam um arquivo sem extensão chamado permissions-config. Se permissions-config.json não existir, mas o arquivo sem extensão existir, a CLI ainda continuará usando o arquivo legado. Use permissions-config.json para novas edições.

Os locais anteriores de configuração baseados em XDG são migrados para ~/.copilot na inicialização quando COPILOT_HOME não está definido.

Chaves de localização

O objeto de nível locations superior é chaveado por um caminho absoluto.

  • Para um repositório Git, use a raiz do Git como base para definir o escopo das permissões.
  • As árvores de trabalho vinculadas apontam para a raiz do repositório principal; portanto compartilham permissões com a árvore de trabalho principal.
  • Os submódulos usam seu próprio diretório de trabalho.
  • Para um diretório que não esteja em um repositório Git, use o diretório de trabalho atual normalizado.

A chave deve corresponder ao local em que Copilot CLI está em execução. Se a chave não corresponder, as aprovações salvas não serão aplicadas.

A CLI carrega as aprovações do local correspondente quando uma sessão é iniciada e quando o diretório de trabalho ativo é alterado.

Schema

O arquivo deve conter um objeto JSON.

CampoTipoObrigatórioDefaultValores permitidosDescrição
locationsObjetoNo{}Chaves de caminho absolutasMapa de chaves de localização para aprovações salvas.
locations.<key>ObjetoNo{}Qualquer chave de localização absolutaAprovações salvas para um repositório ou diretório.
locations.<key>.tool_approvalsArrayNo[]Objetos de aprovaçãoFerramentas aprovadas para esse local.
locations.<key>.allowed_directoriesMatriz de cadeias de caracteresNo[]Caminhos absolutos de diretórioDiretórios extras que a porta de caminho pode acessar para esse local. Cada diretório deve existir quando a CLI aplica a configuração.
locations.<key>.tool_approvals[].kindStringSimNone
commands, read, write, mcp, , mcp-sampling, memory, custom-tool, , extension-management``extension-permission-accessSeleciona o tipo de aprovação.
commandIdentifiersMatriz de cadeias de caracteresSim, para commandsNoneIdentificadores de comandoIdentificadores de comando do Shell a serem aprovados.
serverNameStringSim, para mcp e mcp-samplingNoneNome do servidor MCPServidor MCP para aprovação.
toolNameString ou nullSim, para mcpNoneNome da ferramenta MCP ou nullFerramenta MCP para aprovação. Use null para aprovar todas as ferramentas no servidor.
toolNameStringSim, para custom-toolNoneNome da ferramenta personalizadaFerramenta personalizada para aprovar pelo nome exato.
operationStringNão, para extension-managementOmitidoNome da operação de extensãoOperação de gerenciamento de extensões a ser aprovada. Deixe este campo em branco para aprovar todas as operações de gerenciamento de extensões.
extensionNameStringSim, para extension-permission-accessNoneNome da extensãoExtensão cujo acesso a recursos fechados por permissão é aprovado.

permissions-config.json não dá suporte a regras de negação, regras de "pergunta", modos padrão, regras de URL, filtragem de ferramentas ou política compartilhada local do repositório. Para esses comportamentos, use opções de linha de comando, como --deny-tool, --available-tools, , --excluded-toolse --allow-url``--deny-url. As regras de URL salvas são armazenadas em settings.json, não em permissions-config.json.

Campos desconhecidos não fazem parte do esquema. A CLI pode ignorá-las, e operações de gravação subsequentes podem removê-las.

Tipos de aprovação

Cada item em tool_approvals deve ser um dos seguintes objetos.

kindCampos obrigatóriosCampos opcionaisMeaning
commandscommandIdentifiersNoneAprova identificadores de comandos do shell correspondentes.
readNoneNoneAprova solicitações de leitura da ferramenta. As sessões interativas da CLI já aprovam leituras automaticamente, portanto, isso geralmente é desnecessário.
writeNoneNoneAprova solicitações de ferramenta de criação e modificação de arquivo. Uma solicitação de caminho ainda pode ser aplicada a caminhos fora dos diretórios permitidos.
mcp
serverName, toolNameNoneAprova uma ferramenta MCP ou todas as ferramentas no servidor quando toolName é null.
mcp-samplingserverNameNoneAprova solicitações de amostragem do MCP para um servidor.
memoryNoneNoneAprova solicitações de gravação de memória e de voto.
custom-tooltoolNameNoneAprova uma ferramenta personalizada pelo nome exato.
extension-managementNoneoperationAprova o gerenciamento de extensões. Se houver omissão de operation, todas as operações de gerenciamento de extensão serão correlacionadas.
extension-permission-accessextensionNameNoneAprova o acesso de uma extensão a recursos fechados por permissão.

Para aprovações do MCP, serverName deve corresponder exatamente ao nome do servidor MCP configurado. Use o nome original do servidor da sua configuração do MCP, não um prefixo de nome de ferramenta sanitizado.

Correlação de comandos do Shell

permissions-config.json não oferece suporte a expressões regulares nem a padrões glob em geral. Os valores da cadeia de caracteres são comparados literalmente, exceto que um :* à direita em um valor commandIdentifiers do Shell se correlaciona ao texto antes de :*, isoladamente ou seguido por um espaço e mais texto. Um * simples não tem nenhum significado especial, portanto git* não corresponde a git status.

PatternPartidasNão corresponde
git statusgit statusgit status --short
git:*
git
git status
git push
gitea
gh pr:*
gh pr
gh pr view
gh pr create
gh repo view

Correlação de diretórios

As entradas de allowed_directories permitem que a Copilot CLI acesse os caminhos dentro desses diretórios sem um prompt de caminho separado. Eles não aprovam a operação da ferramenta em si. Por exemplo, editar um arquivo em um diretório permitido ainda pode exigir uma write aprovação.

Cada allowed_directories entrada deve ser um diretório absoluto, não vazio e acessível. A CLI resolve os symlinks antes de comparar caminhos, bloqueia os caminhos de rede UNC, a menos que sejam caminhos locais de comprimento estendido, compara caminhos sem diferenciar maiúsculas de minúsculas no Windows e compara os caminhos diferenciando maiúsculas de minúsculas em outras plataformas. Se uma entrada não puder ser aplicada, a CLI registrará um aviso e ignorará essa entrada.

Examples

Permitir todos os subcomandos git e acessar um diretório local extra:

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

Permita comandos selecionados enquanto ainda pede a confirmação antes de gravações de arquivos:

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

Aprove as gravações de arquivo e um servidor MCP para um repositório:

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

Aprove uma ferramenta MCP, gravações de memória e acesso às permissões da extensão:

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/

Contém dados de histórico de sessão, organizados por ID de sessão em subdiretórios. Cada diretório de sessão armazena um log de eventos (events.jsonl) e artefatos de workspace (planos, pontos de verificação, arquivos rastreados). Esses dados permitem que a sessão seja retomada (--resume ou --continue).

Excluir arquivos desse diretório remove apenas cópias locais. Se você tiver sincronizado sessões com sua GitHub conta, os dados sincronizados serão armazenados separadamente e não serão afetados pela exclusão de arquivo local. Você pode excluir ou ocultar sessões sincronizadas de GitHub.com. Para obter mais informações, consulte Sobre os dados da sessão do GitHub Copilot.

command-history-state/

Contém dados de histórico de comandos usados para pesquisa reversa (Ctrl+R) e navegação de histórico na interface interativa. Esse diretório é gerenciado automaticamente e não deve ser editado.

session-store.db

Um banco de dados SQLite usado pela CLI para armazenamento de dados entre sessões, como indexação e buscas de checkpoints. Esse arquivo é gerenciado automaticamente e não deve ser editado.

Se você excluir esse arquivo, poderá recompilá-lo usando o /chronicle reindex comando. A reindexação também sincroniza seus dados de sessão com sua conta.

logs/

Contém arquivos de log para sessões da CLI. Cada sessão cria um arquivo de log chamado process-{timestamp}-{pid}.log. Esses arquivos são úteis na depuração de problemas.

A CLI também pode criar logs específicos de extensão em logs/extensions/.

Isso é separado do ~/.copilot/extensions/, que armazena o código de extensão criado pelo usuário.

Dica

Para localizar o arquivo de log da sessão atual, insira /session em uma sessão interativa. A saída inclui o caminho completo para o arquivo de log, juntamente com outros detalhes da sessão, como a ID da sessão, a duração e o diretório de trabalho.

installed-plugins/

Contém os arquivos para plug-ins instalados. Os plug-ins instalados de um marketplace são armazenados em installed-plugins/{marketplace-name}/{plugin-name}/. Os plug-ins instalados diretamente são armazenados em installed-plugins/_direct/. Gerencie plug-ins usando os copilot plugin comandos em vez de editar esse diretório diretamente.

Para obter mais informações, consulte referência de plugin da CLI GitHub Copilot.

plugin-data/

Contém dados persistentes para plug-ins instalados, organizados pelo marketplace e pelo nome do plug-in. Esses dados são gerenciados pelos próprios plug-ins e não devem ser editados manualmente.

ide/

Contém arquivos de bloqueio e estado para integrações de IDE (por exemplo, quando Copilot CLI se conecta a Visual Studio Code). Esse diretório é gerenciado automaticamente.

mcp-oauth-config/

Contém arquivos de fallback do token OAuth do MCP, de registro e de PKCE quando o armazenamento com suporte do keychain não está disponível. Esse diretório é gerenciado automaticamente.

mcp-secrets/

Inclui armazenamento de arquivos de fallback e um índice para espaços reservados de segredos do MCP quando o armazenamento baseado em keychain não está disponível. Esse diretório é gerenciado automaticamente.

Alterando o local do diretório de configuração

Para substituir o local padrão ~/.copilot , defina a COPILOT_HOME variável de ambiente para o caminho do diretório que você deseja usar.

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

Coisas que devem ser observadas

  • COPILOT_HOME substitui todo o caminho ~/.copilot. O valor definido deve ser o caminho completo para o diretório que você deseja usar para os arquivos de configuração e subdiretórios.

  • Alterar o diretório significa que a configuração existente, o histórico de sessão, os plug-ins instalados e as permissões salvas não serão encontrados no novo local. Copie ou mova o conteúdo de ~/.copilot para o novo local, para preservá-los.

  • O diretório de cache (usado para caches do marketplace, pacotes de atualização automática e outros dados efêmeros) segue as convenções da plataforma e não é afetado por COPILOT_HOME. Ele está localizado em:

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

    Para substituir o diretório de cache separadamente, defina COPILOT_CACHE_HOME.

O que você pode excluir com segurança

ItemÉ seguro excluir?Efeito
agents/``skills/``hooks/Não recomendadoVocê perderá suas personalizações pessoais. Faça backup primeiro.
config.jsonCom cuidadoRedefine o estado do aplicativo, incluindo a autenticação. Você precisará se autenticar novamente e a CLI detectará novamente o estado interno na próxima inicialização.
copilot-instructions.md, instructions/Não recomendadoVocê perderá suas instruções personalizadas pessoais. Faça backup primeiro.
extensions/Não recomendadoVocê perderá suas extensões pessoais. Faça backup primeiro.
installed-plugins/Não recomendadoEm vez disso, use copilot plugin uninstall para garantir que os metadados de plug-in config.json permaneçam precisos.
logs/SimOs arquivos de log são recriados a cada sessão. Excluí-los não tem nenhum impacto funcional.
lsp-config.jsonNão recomendadoVocê perderá suas definições de servidor LSP no nível do usuário. Faça backup primeiro.
mcp-config.jsonNão recomendadoVocê perderá suas definições de servidor MCP no nível do usuário. Faça backup primeiro.
mcp-oauth-config/Com cuidadoLimpa o estado local de fallback do OAuth do MCP. Talvez seja necessário autenticar novamente os servidores MCP.
mcp-secrets/Com cuidadoLimpa o estado de fallback do segredo local do MCP e os mapeamentos. Os servidores MCP com backup secreto podem precisar de reconfiguração.
permissions-config.jsonCom cuidadoRedefine todas as permissões salvas. A CLI solicitará novamente as aprovações de ferramentas e diretórios.
plugin-data/SimOs dados persistentes de plug-in são recriados conforme necessário.
providers.jsonNão recomendadoVocê perderá o provedor BYOK e a configuração do modelo. Faça backup primeiro.
session-state/Com cuidadoA exclusão remove o histórico da sessão. Você não poderá mais retomar as sessões anteriores.
command-history-state/Com cuidadoExcluir remove o histórico de comandos. Você não poderá mais pesquisar comandos anteriores com Ctrl+R.
session-store.dbCom cuidadoA exclusão remove dados entre sessões. O arquivo é recriado automaticamente.
settings.jsonCom cuidadoRedefine todas as preferências do usuário para padrões. Você precisará reconfigurar suas configurações.

Configurações do arquivo de configuração

As configurações são aplicadas nesta ordem (as posteriores substituem as anteriores):

  1. Padrões internos
  2. Configurações gerenciadas por MDM (gerenciamento de dispositivos móveis)
  3. Configurações do usuário (~/.copilot/settings.json)
  4. Configurações do repositório (.github/copilot/settings.json)
  5. Configurações locais (.github/copilot/settings.local.json)
  6. Variáveis de ambiente
  7. Sinalizadores de linha de comando

As configurações gerenciadas por MDM são carregadas durante a inicialização e mescladas com as configurações do usuário como linha de base da política. Para a maioria das chaves, as configurações do usuário podem substituir essa linha de base. Para permissions.disableBypassPermissionsMode, um valor MDM de "disable" sempre prevalece. As configurações gerenciadas sandbox são outra exceção. Em vez de ser substituível, cada valor gerenciado de sandbox define um limite mínimo que você não pode flexibilizar. Se sua própria configuração for mais permissiva, o valor gerenciado ganhará. A sandbox.failIfUnavailable configuração só pode ser definida por um administrador. Para obter mais informações, consulte as configurações gerenciadas do MDM.

ScopeLocalidadePropósito
Usuário~/.copilot/settings.jsonPadrões globais para todos os repositórios. Use a variável de COPILOT_HOME ambiente para especificar um caminho alternativo.
Repositório.github/copilot/settings.jsonConfiguração do repositório compartilhado (confirmada no repositório).
Local.github/copilot/settings.local.jsonSubstituições pessoais (adicione-as a .gitignore).

A interface de linha de comando também lê .claude/settings.json e .claude/settings.local.json para o subconjunto compartilhado entre ferramentas das configurações do repositório (como companyAnnouncements, disableAllHooks, enabledPlugins, extraKnownMarketplaces e hooks).

Os padrões do repositório são opcionais: defina as entradas enabledPlugins como false nas configurações locais do repositório para substituir os padrões do repositório. As entradas de plug-in necessárias ou bloqueadas gerenciadas sempre têm prioridade. Consulte Localizando e instalando plug-ins para GitHub Copilot CLI.

Configurações do usuário (~/.copilot/settings.json)

Essas configurações se aplicam em todas as suas sessões e repositórios. Você pode usar o /settings comando barra para executar uma caixa de diálogo interativa ou usar comandos de barra específicos para atualizar valores individuais ou editar esse arquivo diretamente.

ChaveTipoDefaultDescrição
allowedUrlsstring[][]URLs ou domínios permitidos sem solicitação. Dá suporte a URLs exatas, padrões de domínio e subdomínios curinga (por exemplo, "*.github.com").
askUserbooleantruePermitir que o agente faça perguntas esclarecedoras. Defina para false para operação totalmente autônoma. Também pode ser definido com --no-ask-user.
autoTier
"efficiency"
|
"balance"
|
"intelligence"
remover definiçãoNível padrão de roteamento Auto para novas conversas quando o modelo selecionado é auto. Consulte o comando de barra /model.
"fast" não pode mais ser selecionado e recorre a "balance" com um aviso, se definido.
autoUpdatebooleantrueBaixe automaticamente as atualizações da CLI e atualize os plug-ins de primeira parte no início de cada sessão.
autoUpdatesChannel
"stable"
|
"prerelease"
"stable"Atualizar canal. Defina para "prerelease" receber atualizações de pré-lançamento.
banner
"always"
|
"once"
|
"never"
"once"Frequência de exibição de banner animado.
bashEnvbooleanfalseHabilitar o suporte de BASH_ENV para shells bash. Também pode ser definido com --bash-env ou --no-bash-env.
beepbooleantrueReproduza um bipe audível quando a atenção é necessária.
beepOnSchedulebooleantrueEmita um sinal sonoro quando uma execução agendada /every ou /after terminar.
colorMode
"default"
|
"github"
|
"dim"
|
"high-contrast"
|
"colorblind"
"github"Alias obsoleto para theme. Prefira theme.
commandHistoryMaxSizenumber50Número máximo de comandos recentes retidos para histórico de entrada e pesquisa inversa. Deve ser um inteiro entre 1 e 1000.
compactPastebooleantrueRecolher colagens grandes (mais de 10 linhas) em tokens compactos.
companyAnnouncementsstring[][]Mensagens personalizadas mostradas aleatoriamente na inicialização. Uma mensagem é selecionada aleatoriamente sempre que a CLI é iniciada. Útil para anúncios ou lembretes da equipe.
connectorsbooleantrueHabilite Copilot conectores quando estiverem disponíveis. Defina como false para desabilitar.
continueOnAutoModebooleanfalseAlterne automaticamente para o modo automático quando limitado por taxa. Quando true, os erros de limite de taxa elegíveis disparam uma troca automática para o modo automático e tentam novamente. Não se aplica a limites de taxa globais ou provedores BYOK.
copyOnSelectboolean
true (macOS), false (outros)Copie automaticamente o texto selecionado pelo mouse para a área de transferência do sistema.
customAgents.defaultLocalOnlybooleanfalseUse apenas agentes personalizados locais (nenhuma organização remota ou agentes empresariais).
defaultMode
"interactive"
|
"plan"
|
"autopilot"
"interactive"O modo de agente no qual as novas sessões interativas começam. As opções --mode, --autopilot e --plan têm precedência. As sessões retomadas mantêm seu próprio modo, e a configuração é ignorada para -p/--prompt, --server e execuções de --acp.
defaultPermissionMode
"manual"
|
"assisted"
|
"allow-all"
VariaçõesSeu modo de permissão preferencial para novas sessões interativas. Um permissions.defaultMode gerenciado tem precedência sobre essa preferência. Se nenhuma configuração padrão for definida, as sessões poderão ser iniciadas no modo manual ou assistido. Defina "manual" para pedir confirmação para solicitações que ainda não são permitidas, "assisted" para usar a revisão de modelo para solicitações qualificadas ou "allow-all" para conceder permissões amplas equivalentes a --allow-all. Regras de negação e restrições empresariais ainda se aplicam. Consulte Permitindo a execução de comandos seguros sem aprovação manual. As sessões retomadas mantêm seu próprio modo. A configuração não se aplica a execuções não interativas, e --allow-all ou --yolo prevalece. Um padrão de inicialização assistida não se aplica a sessões remotas. Se um modo configurado estiver indisponível ou bloqueado pela política empresarial, a CLI começará com aprovação manual e informará o porquê. Emparelhe "assisted" ou "allow-all" com defaultMode: "autopilot" para ignorar a confirmação de permissão do piloto automático quando o modo de permissão configurado puder ser aplicado.
deniedUrlsstring[][]URLs ou domínios que sempre são negados. As regras de negação têm precedência sobre as regras de permissão.
disableAllHooksbooleanfalseDesabilite todos os ganchos (nível de repositório e nível de usuário).
disabledMcpServersstring[][]Nomes de servidor MCP para desabilitar. Os servidores listados são configurados, mas não iniciados.
disabledSkillsstring[][]Nomes de habilidade para desabilitar. As habilidades listadas foram identificadas, mas não carregadas.
dynamicRetrieval{ skills?: boolean }remover definiçãoControle por categoria da recuperação dinâmica de instruções baseada em embeddings. Defina skills como false para desabilitar a recuperação de habilidades.
editorMode
"normal"
|
"vim"
"normal"Modo de edição do compositor de entrada. Definido ao alternar o comando slash /vim. Consulte referência de comando da CLI GitHub Copilot.
effortLevelstring"medium"Nível de esforço de raciocínio para o pensamento estendido: "low", "medium", ou "high"``"xhigh". Níveis mais altos usam mais computação.
enabledMcpServersstring[][]Habilite servidores MCP internos desabilitados por padrão.
enabledPluginsRecord<string, boolean>{}Instalação automática do plug-in declarativo. As chaves são especificações de plug-in; os valores são true (habilitados) ou false (desabilitados).
experimentalbooleanfalseHabilitar recursos experimentais. Também pode ser habilitado com a opção --experimental de linha de comando ou o comando de barra /experimental.
extraKnownMarketplacesRecord<string, {...}>{}Marketplaces de plug-in adicionais. Cada chave é um nome do marketplace; o valor especifica o necessário source ("directory"ou "git"``"github"). Defina autoUpdate: true em uma entrada para incluir os plug-ins instalados desse marketplace na atualização automática ao iniciar a sessão, assim como os plug-ins primários. Essa adesão se aplica somente a sessões interativas e -p — as sessões de SDK e de servidor não são atualizadas automaticamente. A aceitação é respeitada quando definida nas suas próprias configurações de usuário ou em configurações gerenciadas (MDM/servidor). Em um conflito entre nomes idênticos, um marketplace interno primário prevalece. Em seguida, uma entrada gerenciada (que substitui toda a entrada do usuário com o mesmo nome, de modo que uma entrada gerenciada sem "autoUpdate": true remove a aceitação do usuário) e, por fim, a entrada do próprio usuário.
footerobject—Controla quais itens aparecem na linha de status. As subchaves incluem showModelEffort, showDirectory, showBranch, showContextWindow, showQuota, showAgent, showAiUsed, showCodeChanges, showUsername, showSandbox, showYolo e showCustom (todas boolean). Gerenciado pelo comando de barra /statusline.
hooksobject—Definições inline de ganchos no nível do usuário, chaveadas pelo nome do evento. Usa o mesmo esquema que os arquivos .github/hooks/*.json. Consulte Usando ganchos com GitHub Copilot CLI.
ide.autoConnectbooleantrueConecte-se automaticamente a um workspace do IDE na inicialização. Quando false, você ainda pode se conectar manualmente usando o comando /ide.
ide.openDiffOnEditbooleantrueAbra as diferenças de edição nos arquivos no IDE conectado para aprovação. Quando false, as aprovações de edição de arquivo são mostradas somente no terminal.
ignoredSkillsLocationsstring[][]Diretórios de habilidades (e seus descendentes) excluídos da detecção, independentemente de qual localização os exibiria de outra forma. Oferece suporte a caminhos relativos a ~. Consulte referência de comando da CLI GitHub Copilot.
includeCoAuthoredBybooleantrueAdicione um trailer Co-authored-by às confirmações do git feitas pelo agente.
inlineImagesbooleantrueRenderize imagens embutidas usando o protocolo gráfico Kitty. Requer um terminal com suporte (Ghostty, kitty ou WezTerm). Quando desabilitado, os anexos de imagem mostram um espaço reservado para texto.
keepAlive
"on"
|
"off"
|
"busy"
"off"Modo keep-alive aplicado na inicialização da CLI.
"on" sempre impede que o sistema entre em modo de suspensão, "busy" impede a suspensão somente enquanto o agente está em execução, e "off" desabilita a funcionalidade de manter ativo. Também configurável com o comando de barra /keep-alive.
logLevel
"none"
|
"error"
|
"warning"
|
"info"
|
"debug"
|
"all"
|
"default"
"default"Verbosidade de registro em log.
mergeStrategy
"rebase"
|
"merge"
—Estratégia de resolução de conflitos para /pr fix conflicts. Quando definido como "rebase", os conflitos são resolvidos fazendo o rebasamento para a ramificação de base. Quando definido como "merge", o ramo base é mesclado no ramo de funcionalidade. Se não estiver configurado, uma caixa de diálogo de seleção será mostrada.
modelstringvariesModelo de IA a ser usado. Defina para "auto" para que Copilot selecione automaticamente o melhor modelo disponível. Gerenciado pelo comando de barra /model.
mousebooleantrueHabilite o suporte ao mouse. Também pode ser definido com --mouse ou --no-mouse.
permissions.disableBypassPermissionsModestring—Definido como "disable" para bloquear todas as opções de permitir tudo (--allow-all-tools, --allow-all-paths, --allow-all-urls, --allow-all, --yolo). Essa configuração não bloqueia assisted permissions, que são controladas separadamente. Outros valores são tratados como um alias de "disable", e um aviso é gravado no log. Consulte referência de comando da CLI GitHub Copilot.
pinnedPromptsbooleantrueFixe o prompt do usuário da seção atual logo abaixo da barra superior ao rolar a linha do tempo, para que fique claro a qual solicitação o conteúdo exibido pertence. Apenas interface de linha de comando (CLI) — não afeta os prompts enviados ao modelo.
powershellFlagsstring[]["-NoProfile", "-NoLogo"]Sinalizadores passados para o PowerShell na inicialização. Em Windows, a CLI prefere o PowerShell 7+ (pwsh) e volta para Windows PowerShell (powershell.exe) quando pwsh não está disponível. Apenas para Windows.
proxyKerberosServicePrincipalstringremover definiçãoNome principal de serviço (SPN) para autenticação de proxy Kerberos/Negotiate, substituindo o HTTP/<proxy-host> derivado.
proxyUrlstringremover definiçãoURL de proxy para solicitações HTTP(S) (por exemplo, http://proxy.corp.example:3128). Substituição pelas variáveis de ambiente HTTP_PROXY ou HTTPS_PROXY (qualquer uso de maiúsculas/minúsculas).
remoteSessionsbooleanfalseHabilite o controle remoto por padrão para sessões interativas quando o controle remoto estiver disponível. Use /remote on ou /remote off para alterar o controle remoto para a sessão atual. Isso é separado da configuração remoteExport de sincronização de sessão.
renderHexColorsbooleantrueMostrar códigos de cor hexadecimais de seis dígitos escritos como código embutido (por exemplo, `#FF0000`) como amostras de cores.
renderMarkdownbooleantrueRenderizar Markdown na saída do terminal.
remoteExportbooleantrueSincronizar o histórico de sessão com sua conta quando a sincronização de sessão estiver disponível. Defina para false para desativar por padrão. Habilitar o controle remoto com remoteSessions: true também habilita a exportação, independentemente dessa configuração. A sincronização do histórico não habilita o controle remoto por si só. Use --sync-session=on ou --sync-session=off para substituir a sincronização do histórico para uma execução.
respectGitignorebooleantrueExclua os arquivos gitignored do seletor de menções de arquivos @. Quando false, o seletor inclui arquivos normalmente excluídos por .gitignore.
sandbox.allowBypassbooleantruePermitir que comandos em sandbox solicitem uma exceção para operações específicas (exibindo uma solicitação de permissão), para que ferramentas como grep e glob continuem funcionando quando a sandbox normalmente as bloquearia. O prompt também permite desabilitar a área restrita para o restante da sessão atual se a política efetiva permitir bypass. Defina como false para desativar.
sandbox.enabledbooleanfalseRestrinja comandos de shell, servidores MCP/LSP e ferramentas integradas de arquivos/web a um ambiente isolado com acesso limitado ao sistema de arquivos e à rede. Habilite-o na /sandbox caixa de diálogo ou com /sandbox enable.
sandbox.auth.gitbooleantrueInsira credenciais do Git na área restrita para que os comandos em execução dentro dele possam se autenticar com o Git. Defina como false para desativar. Renomeado de sandbox.gitAuth. Não há migração para a chave antiga, e ela é ignorada em qualquer lugar em que ainda aparece.
sandbox.auth.ghbooleantrueInjeta credenciais GitHub CLI (gh) no sandbox para que os comandos executados dentro dele possam autenticar com o GitHub CLI. Defina como false para desativar. Renomeado de sandbox.ghAuth. Não há migração para a chave antiga, e ela é ignorada em qualquer lugar em que ainda aparece.
sandbox.credentialsobjectremover definiçãoMascarar variáveis de ambiente selecionadas em processos em área restrita. Contém um objeto envVars chaveado pelo nome da variável, com um array injectHosts não vazio para cada entrada. Os processos recebem placeholders, e o proxy local fornece os valores reais somente em cabeçalhos de solicitação HTTPS para esses hosts. Armazena nomes de variáveis e regras de host, não valores secretos. Requer que o sandboxing seja habilitado. Configure na guia Credenciais da caixa de diálogo /sandbox, em variáveis de ambiente mascaradas. Consulte Configurando as configurações locais da sandbox.
sandbox.userPolicy.network.allowLocalNetworkbooleanfalseControlar o acesso à rede local, como conexões com servidores de desenvolvimento locais. O efeito nos comandos em área restrita depende do sistema operacional. Em hosts Windows compatíveis, habilitar essa configuração também permite conexões com o localhost do computador host. Versões de Windows mais antigas mantêm o localhost bloqueado mesmo com essa configuração habilitada. As regras de proxy e host do Windows exigem que isso seja true.
sandbox.userPolicy.network.proxyobjectremover definiçãoRotear o tráfego de rede em sandbox por meio de um proxy HTTP(S). Campos: url (obrigatório), username (opcional), password (opcional). A URL não deve conter credenciais. Configure as credenciais na guia Rede da caixa de diálogo /sandbox, que mascara o campo senha. Senhas literais usam o repositório de credenciais do sistema operacional quando disponíveis, com um fallback de arquivo local.
settings.json contém uma referência secreta. Em vez disso, a senha pode ser uma referência de campo inteiro ${VAR} ou $VAR de variável de ambiente. A imposição de proxy difere por plataforma, conforme descrito abaixo.
sandbox.userPolicy.network.allowedHostsstring[][]Hosts que um comando em área restrita tem permissão para acessar. As entradas são nomes de host exatos, endereços IP ou *.example.com para subdomínios, mas não o domínio raiz (* corresponde a cada host). Não há suporte para blocos CIDR. Não inclua URLs ou portas. Uma lista não vazia bloqueia hosts sem correspondência, exceto por localhost, 127.0.0.1 e ::1 quando o acesso de saída e à rede local estão habilitados. Essas entradas automáticas não alteram sua lista salva. Regras de negação explícitas e listas de permissões empresariais ainda se aplicam. Configure na guia Rede da caixa de diálogo /sandbox, em Regras de host.
sandbox.userPolicy.network.blockedHostsstring[][]Hosts que um comando em área restrita não pode acessar, correspondentes da mesma forma que allowedHosts.
blockedHosts sempre tem precedência sobre uma entrada correspondente allowedHosts e negar um domínio também nega seus subdomínios. Configure na guia Rede da caixa de diálogo /sandbox, em Regras de host.
sandbox.userPolicy.filesystem.deniedPathsstring[][]Caminhos aos quais comandos em sandbox têm o acesso negado. O Windows requer uma versão que dê suporte a caminhos bloqueados. Se o host não puder aplicá-los, o comando falhará em vez de ser executado com restrições mais fracas. Caminhos negados inexistentes e seus pais são criados como diretórios antes do lançamento e não são removidos automaticamente, mesmo para um nome como .env. Os erros de preparação param o lançamento. A visualização somente leitura /sandbox policy não cria nada e omite caminhos ausentes e negados no Linux.
sandbox.userPolicy.seatbelt.keychainAccessbooleanfalseSomente macOS. Concede acesso ao chaveiro do sistema aos comandos em sandbox. Configurável somente em settings.json, não por meio /sandbox ou /settings.
screenReaderbooleanfalseHabilitar otimizações de leitor de tela.
scrollbarbooleantrueMostrar a barra de rolagem em exibições roláveis. Defina para false para ocultá-lo e usar a largura completa do terminal.
shellShortcutbooleantruePermita que um $ sozinho no prompt, seguido de Enter, abra um shell interativo enraizado no diretório de trabalho da sessão (isso só é ativado para uma sessão local, confiável e ociosa em um TTY real). Apenas com escopo de usuário ou gerenciado — não pode ser substituído pelo repositório.
showReasoningbooleanNoneMostrar o raciocínio do modelo na linha do tempo. Você pode definir isso com /config ou /settingsou alterná-lo com Ctrl+T. Sua preferência é salva entre sessões.
showTimestampsbooleantrueExibe carimbos de data/hora HH:mm discretos ao lado das mensagens do usuário na linha do tempo.
showTipsOnStartupbooleantrueMostrar uma dica de comando aleatória quando a CLI for iniciada.
sidebarbooleantrueAtive a barra lateral da sessão atual. Defina como false para desativá-lo completamente, ocultando a dica do compositor e o gesto de abrir ←. Consulte referência de comando da CLI GitHub Copilot.
skillDirectoriesstring[][]Diretórios adicionais para pesquisar definições de habilidade personalizadas (além de ~/.copilot/skills/).
statusLineobject—Exibição da linha de status personalizada.
type: deve ser "command".
command: caminho para um script executável que recebe JSON de sessão no stdin e imprime o conteúdo de status para o stdout.
padding: quantidade opcional de espaços de preenchimento à esquerda.
refreshInterval: número inteiro opcional de segundos (1–2147483) para executar novamente o comando em um temporizador em vez de apenas em eventos; omita-o para atualizar somente quando o estado da sessão for alterado. Se o comando falhar ao gerar, sair fora de zero ou não receber o JSON de status no stdin, a CLI registrará um aviso uma vez por episódio de falha contínua e deixará a linha de status em branco, em vez de falhar silenciosamente. Execute com --log-level all para ver os detalhes do erro subjacente.
stayInAutopilotbooleantruePermaneça no modo de piloto automático após a conclusão de cada tarefa. Quando habilitado, o próximo prompt que você inserir após a conclusão de uma tarefa também é tratado no modo de piloto automático. Para obter mais informações, consulte Usando o modo Autopilot na CLI do GitHub Copilot.
storeTokenPlaintextbooleanfalsePermitir que os tokens de autenticação sejam armazenados em texto config.json sem formatação quando nenhum conjunto de chaves do sistema estiver disponível.
streambooleantrueHabilitar respostas de streaming.
streamerModebooleanfalseOcultar nomes de modelos de pré-visualização, detalhes de cotas, carimbos de data/hora de prompts e o aviso de atualização disponível. Útil ao demonstrar Copilot CLI ou ao compartilhar a tela.
subagents.agentsobject{}Configuração de modelo por agente, com chave pelo nome do agente. Cada valor é um objeto com campos opcionais model (cadeia de caracteres), modelPolicy ("preferred" ou "required"), effortLevel (cadeia de caracteres) e contextTier ("default", "long_context"ou "inherit") . Defina model, effortLevel ou contextTier como "inherit" para usar o valor da sessão pai no momento do despacho.
modelPolicy não tem efeito quando a definição do agente em si define modelPolicy: "required"— esse bloqueio não pode ser substituído aqui. Use o /subagents comando barra para definir essas configurações interativamente.
subagents.agents["rubber-duck"].autoInvokebooleanfalsePermita que o Copilot consulte proativamente o agente de pato de borracha sem ser solicitado. Para alterar isso, execute /subagents, selecione rubber-duck, pressione Enter e alterne a invocação proativa.
subagents.disabledSubagentsstring[][]Nomes de subagentes que foram desativados. Gerencie essa lista usando o controle Ativar/Desativar para cada agente no seletor /subagents em uma sessão interativa.
subagents.maxConcurrencynumberbaseado em planoNúmero máximo de subagentes simultâneos para esta sessão. Aplicável somente a usuários com cobrança baseada em uso; ignorado nos demais planos. Limitado a 32. Consulte referência de comando da CLI GitHub Copilot.
subagents.maxDepthnumber6Profundidade máxima de aninhamento de subagente. Aplicável somente a usuários com cobrança baseada em uso; ignorado nos demais planos. Limitado a 256. Consulte referência de comando da CLI GitHub Copilot.
tabs.enabledbooleantrueMostrar a barra de abas da tela inicial. Defina como false para ocultá-lo completamente.
tabs.hidestring[][]Identificadores de tabulação a serem ocultados. Valores aceitos: "copilot", "agents", "issues", "pull-requests", "gists" (correspondência sem diferenciar maiúsculas de minúsculas).
tabs.sortstring[][]Ordem de exibição das abas. As guias não listadas mantêm sua ordem relativa padrão após as listadas. Identificadores desconhecidos são ignorados.
taskbarPresencebooleantrueMostrar uma sessão ativa Copilot na barra de tarefas do Windows (ícone do agente e cartão ao passar o mouse). Defina como false para desativar. Apenas na inicialização; passa a valer na próxima inicialização. Apenas para Windows.
terminalNotificationsbooleanfalsePrefira notificações OSC 777 controladas pelo terminal em terminais compatíveis (Ghostty, WezTerm) quando as notificações da área de trabalho estiverem habilitadas, recorrendo às notificações nativas do sistema operacional quando não houver suporte ou se a entrega falhar.
terminalProgressbooleantrueEmita indicadores de progresso do terminal OSC 9;4 enquanto o agente está em execução. Os terminais com suporte incluem Terminal do Windows, iTerm2, Ghostty e ConEmu.
theme
"default"
|
"github"
|
"dim"
|
"high-contrast"
|
"colorblind"
"github"Paleta de cores para saída do terminal. Gerenciado pelos comandos de barra /settings e /theme.
colorMode é um alias preterido para essa configuração.
toolSearchbooleandependente do modelo e da funcionalidadeControla a busca de ferramentas (carregamento adiado de ferramentas). Defina toolSearch: false para desativar a busca de ferramentas.
transcriptView
"default"
|
"concise"
"default"Defina como "concise" para agrupar a atividade da ferramenta em resumos de trabalho expansíveis na linha do tempo. Defina como "default" para mostrar a transcrição original completa.
updateTerminalTitlebooleantrueMostrar a intenção atual na guia do terminal ou no título da janela.
worktreeBaseRef
"head"
|
"defaultBranch"
"head"Ponto de partida para novas árvores de trabalho criadas por /worktree, , /worktree new, /new worktree, /movee --worktree.
"defaultBranch" inicia da ramificação padrão remota, e não no check-out atual.
/fork worktree sempre é derivado de HEAD, independentemente dessa configuração.
worktreePathTemplatestringremover definiçãoOnde /worktree, /move, /new e --worktree criam árvores de trabalho — por exemplo, ~/src/worktrees/{repo}/{branch}. Oferece suporte aos espaços reservados {repoPath}, {repo}, {branch} e {branchSlug}. Quando não está definido, o layout padrão, <repo>.worktrees/, é usado, com as barras no nome da ramificação convertidas em hífens.

Dica

Execute copilot help sandbox para ver a referência completa do sandbox, incluindo os hosts compatíveis e todas as chaves de configuração de sandbox.

A /sandbox caixa de diálogo agrupa a autenticação do Git, gh a autenticação e as variáveis de ambiente mascaradas em uma guia Credenciais dedicadas e mostra o settings.json caminho em que a configuração atual do sandbox é armazenada. Na guia Sistema de Arquivos, a lista de caminhos configurada é resumida por permissão (por exemplo, 2 read/write, 1 read-only) em uma linha Caminhos configurados pelo usuário. Pressione Enter nessa linha para abrir a lista completa, que assume o cursor e a barra de tabulação até pressionar Esc. Os caminhos configurados são exibidos como caminhos absolutos em vez de ./formulários relativos ou ~abreviados. Digitar ~/path ao adicionar um caminho ainda o expande para o diretório pessoal. Pressione Ctrl+E na /sandbox caixa de diálogo para salvar as alterações pendentes e abrir settings.json no editor (COPILOT_EDITOR``VISUALouEDITOR), correspondendo ao mesmo atalho em /settings. A caixa de diálogo recarrega seu estado a partir do disco após editar e salvar o arquivo.

Regras de host e sandbox.userPolicy.network.proxy usam um proxy local interno. Quando ambos são configurados, o proxy local aplica as regras de host antes de encaminhar o tráfego para o proxy upstream. As credenciais upstream permanecem fora do processo filho em área restrita. As regras de host e as configurações de proxy ficam inativas quando o acesso de saída está desativado.

Quando nenhum proxy é definido nas configurações de área restrita, o proxy local seleciona seu proxy upstream a partir da primeira variável de ambiente não vazia no host nesta ordem: HTTPS_PROXY, HTTP_PROXY, ALL_PROXY. Somente http:// e https:// proxies têm suporte, não socks5.

Destinos que correspondem ao host NO_PROXY ignoram apenas este proxy upstream herdado. O proxy local da sandbox ainda manipula essas conexões e aplica suas regras de host. Um proxy configurado nas configurações de sandbox ignora NO_PROXY.

No macOS e no Linux, o sandbox restringe as conexões diretas para que os programas não possam evitar o proxy. No Windows, o sandbox depende de programas que respeitam as configurações de proxy. Como resultado, os programas que ignoram as configurações de proxy no Windows podem se conectar diretamente e contornar suas regras de host. As regras de proxy e host do Windows também exigem um host com suporte e allowLocalNetwork: true, o que permite acesso à rede privada. No Linux, as configurações de proxy rejeitam literais de endereço IPv6 diferentes do [::] curinga de pilha dupla. Use um ponto de extremidade IPv4 ou um nome de host com suporte para IPv4.

As configurações de sandbox são de nível de usuário ou gerenciadas pela empresa. Eles não podem ser sobrescritos no nível do repositório. Para obter as etapas de configuração e as limitações de rede, consulte Configurando as configurações locais da sandbox.

O sandboxing é viabilizado por Microsoft eXecution Container (MXC), que fornece mecanismos de isolamento específicos da plataforma. Copilot CLIusa o Seatbelt no macOS, o Bubblewrap no Linux e o ProcessContainer no Windows.

Configurações do repositório (.github/copilot/settings.json)

As configurações do repositório se aplicam a todos que trabalham no repositório. Eles são comprometidos com o repositório e compartilhados com colaboradores.

Observação

As chaves relacionadas ao plug-in no arquivo de configuração do repositório (enabledPlugins e extraKnownMarketplaces) também são lidas por Copilot in the cloud, não apenas Copilot CLI. Isso permite habilitar os mesmos plug-ins para ambos os clientes de um único arquivo. Para obter mais informações sobre plug-ins, consulte Plug-ins para GitHub Copilot.

Somente as chaves listadas na tabela a seguir têm suporte no nível do repositório. Todas as outras chaves, incluindo chaves válidas no arquivo de configuração do usuário, são ignoradas silenciosamente. Cada chave compatível tem uma política de mesclagem direcional que mantém a substituição fechada em caso de falha e segura.

ChaveTipoComportamento de mesclagemDescrição
companyAnnouncementsstring[]Substituído — o repositório assume precedênciaMensagens mostradas aleatoriamente na inicialização.
contextTier
"default"
|
"long_context"
Substituído — o repositório assume precedênciaFixar a camada de contexto padrão.
deniedUrlsstring[]União: o repositório pode adicionar entradas, nunca removê-lasURLs ou domínios bloqueados.
disableAllHooksbooleanRepositório tem precedênciaDesabilite todos os ganchos.
disabledMcpServersstring[]União: o repositório pode adicionar entradas, nunca removê-lasServidores MCP configurados, mas não iniciados.
disabledSkillsstring[]União: o repositório pode adicionar entradas, nunca removê-lasHabilidades descobertas, mas não carregadas.
effortLevelstringSubstituído — o repositório assume precedênciaFixe o esforço de raciocínio padrão.
enabledPluginsRecord<string, boolean>Mesclado — o repositório tem prioridade sobre o usuário para a mesma chaveInstalação automática do plug-in declarativo.
extraKnownMarketplacesRecord<string, {...}>Mesclado — o repositório tem prioridade sobre o usuário para a mesma chaveMarketplaces de plug-in disponíveis neste repositório. O campo source de cada entrada é obrigatório. Uma autoUpdate: true em uma entrada é aceita no nível do repositório, mas atualmente é ignorada. A opção de adesão à atualização automática só é respeitada quando definida nas configurações do próprio usuário ou em configurações gerenciadas (MDM/do servidor).
hooksobjectMesclado — o repositório tem prioridade sobre o usuário para a mesma chaveDefinições de gancho destinadas a este repositório. Consulte Usando ganchos com GitHub Copilot CLI.
includeCoAuthoredBybooleanSubstituído — o repositório assume precedênciaAdicionar um trailer Co-authored-by aos commits.
mergeStrategy
"rebase"
|
"merge"
Substituído — o repositório assume precedênciaEstratégia de resolução de conflitos para /pr fix conflicts.
modelstringSubstituído — o repositório assume precedênciaFixe o modelo padrão para este repositório.
respectGitignorebooleanApenas restringir — o repositório pode habilitar, nunca desabilitarExclua os arquivos gitignored do seletor de menções de arquivos @.

As substituições model, effortLevel econtextTier só se aplicam quando o diretório de trabalho é confiável.

Um plug-in habilitado somente por meio do enabledPlugins de um repositório fica restrito a esse repositório: ele é instalado e ativado automaticamente no repositório em que é declarado, mas permanece desabilitado globalmente, de modo que nunca é ativado em projetos não relacionados. Sair do repositório ou o repositório desativar o plugin encerra seu servidor MCP e desativa seus agentes e habilidades para a sessão.

Lista de permissões de modelos no nível do repositório (.github/allowed_models.txt)

Restrinja quais modelos integrados um repositório pode usar com uma lista de permissões em texto simples em .github/allowed_models.txt, resolvida a partir da raiz do repositório no diretório de trabalho atual (ou do próprio diretório de trabalho fora de um repositório).

Cada linha é um padrão glob comparado com IDs de modelo ou uma diretiva fallback: que nomeia o modelo a ser usado quando o modelo configurado ou solicitado não for permitido:

# .github/allowed_models.txt
fallback: gpt-6-astra
gpt-6-astra
gpt-6-sol
claude-sonnet-*
RegraDescrição
*Permitir todos os modelos (padrão quando nenhum arquivo estiver presente).
MODEL-IDPermitir um ID de modelo exato.
GLOB-PATTERNPermitir IDs de modelo correspondentes ao glob (por exemplo, claude-sonnet-*).
fallback: MODEL-IDObrigatório exatamente uma vez. O modelo Copilot é usado quando o modelo ativo não é permitido.
#Linha de comentário.

Padrões negados (!pattern) não são suportados; o modelo de fallback deve ser um ID exato (não um padrão glob) e o próprio modelo de fallback deve corresponder a um dos padrões glob configurados. Copilot CLI reavalia a política /cd e rejeita um arquivo inválido com um erro antes de executar.

A lista de permissões se aplica apenas aos modelos integrados de Copilot. Ele não pode filtrar modelos personalizados adicionados usando o método BYOK (traga suas próprias chaves de API). Os modelos BYOK permanecem listados e selecionáveis independentemente dos padrões configurados e a fallback: diretiva nunca se aplica a eles. Para obter mais informações, consulte Habilitar modelos personalizados para GitHub Copilot em sua empresa e Habilitar modelos personalizados para GitHub Copilot em sua organização.

Configurações locais (.github/copilot/settings.local.json)

Crie .github/copilot/settings.local.json no repositório para configurações pessoais que não devem ser confirmadas. Adicione este arquivo a .gitignore.

O arquivo de configuração local usa o mesmo esquema que o arquivo de configuração do repositório (.github/copilot/settings.json) e tem precedência sobre ele.

Configurações gerenciadas de MDM

Os administradores de TI podem implantar a política de base por meio de configurações gerenciadas por MDM (Mobile Gerenciamento de Dispositivos), em vez de exigir configuração individual por usuário. Essas configurações aplicam padrões no nível do dispositivo para chaves compatíveis e são carregadas antes das configurações do usuário.

As configurações gerenciadas se aplicam uniformemente a todos os modos de hospedagem de sessão — interativo, -p, --acp, --ahp-host e --server —, de modo que as políticas corporativas de MCP, permissões e plug-ins não possam ser contornadas ao iniciar uma sessão por um ponto de entrada diferente.

Copilot CLI também carrega configurações gerenciadas pelo servidor na inicialização, além do MDM. As configurações gerenciadas pelo dispositivo (MDM) e pelo servidor são resolvidas por chave: o valor do MDM prevalece para qualquer chave que ele defina, e o valor do servidor preenche as chaves que o MDM deixa não definidas. Isso permite que uma organização defina alguma política por meio do MDM (por exemplo, permissions) enquanto ainda recebe outros padrões gerenciados (por exemplo, model) do servidor.

Sessões de longa duração buscam e reaplicam as configurações gerenciadas a cada hora, portanto, as alterações de política — por exemplo, uma organização habilitando permissions.disableBypassPermissionsMode — entram em vigor sem reiniciar a sessão.

Fontes de configurações gerenciadas do MDM

A Copilot CLI lê as configurações gerenciadas de localizações específicas de plataforma baseadas em arquivo ou MDM.

PlatformTipo de origemLocalidade
macOSPlist de MDMcom.github.copilot
macOSArquivo/Library/Application Support/GitHubCopilot/managed-settings.json
WindowsRegistro MDMHKLM\SOFTWARE\Policies\GitHubCopilot
WindowsArquivo%ProgramFiles%\GitHubCopilot\managed-settings.json
LinuxArquivo/etc/github-copilot/managed-settings.json

Observação

Nos sistemas POSIX, a Copilot CLI rejeita as configurações gerenciadas baseadas em arquivos que sejam symlinks, que não sejam de propriedade da raiz nem universalmente graváveis.

Formato de arquivo

Escreva configurações gerenciadas baseadas em arquivo como JSON.

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

Observação

model é uma chave de nível superior. Configurações mais antigas que o aninhavam como permissions.model ainda funcionam — o runtime recorre a esse local quando a chave model de nível superior está ausente — mas grave novas configurações com model no nível superior.

Chaves com suporte

Somente as chaves a seguir têm suporte nas configurações gerenciadas do MDM.

ChaveDescrição
allowedMcpServersLista de permissões de servidores MCP que os usuários podem carregar, correspondentes a serverUrl, serverCommand ou serverName. Servidores de primeira parte confiáveis (por exemplo, o servidor MCP interno GitHub ) são sempre isentos. Deixar esta chave sem configuração permite o uso de todos os servidores não padrão; um array vazio bloqueia todos eles. Consulte a lista de permissões/negações do servidor MCP gerenciado.
autoTierDefina um nível padrão de roteamento Auto ("efficiency", "balance" ou "intelligence") para sessões com model definido como auto. Uma string simples bloqueia rigidamente o nível, substituindo as configurações do usuário e do repositório e ocultando-o de /settings. Em vez disso, use {"overridable": "TIER"} para definir um padrão de organização que os usuários e repositórios ainda podem substituir.
"fast" não é mais selecionável e retorna para "balance" com um aviso.
deniedMcpServersLista de bloqueio de servidores MCP que nunca devem ser carregados, correspondida da mesma forma que allowedMcpServers. Um servidor não padrão correspondente é bloqueado independentemente da lista de permissões — negar sempre vence. Consulte a lista de permissões/negações do servidor MCP gerenciado.
enabledPluginsHabilitar ou desabilitar plug-ins específicos
extraKnownMarketplacesAdicionar marketplaces de plug-in confiáveis
forceLoginOrgsFixar o login em um conjunto aprovado de GitHub organizações (uma matriz de logins de organização, correspondidos sem distinção entre maiúsculas e minúsculas).
Copilot só funciona para uma conta que pertença a pelo menos uma das organizações listadas; uma conta pessoal, uma conta que pertença apenas a alguma outra organização ou a autenticação por BYOK/chave de API é rejeitada com uma mensagem de erro acionável. Defina uma matriz vazia para desativar o pino sem excluir a chave. Implante esta chave por meio do canal do dispositivo (plist/registro do MDM ou managed-settings.json), pois ela deve ser capaz de redirecionar o primeiro login de um desenvolvedor — o canal gerenciado pelo servidor só alcança contas que já se autenticaram na organização. Essa chave falha ao fechar: um valor inutilizável ou uma política gerenciada que não pode ser lida em um dispositivo gerenciado conhecido, bloqueia toda a entrada até que seja corrigida.
forceRemoteSettingsRefreshExigir uma nova busca de configurações gerenciadas pelo servidor na inicialização, mesmo quando houver uma nova política armazenada em cache. A política armazenada em cache não pode atender ao requisito de atualidade. Se a busca falhar, as operações afetadas permanecerão restritas até que a política atual seja confirmada. O valor do dispositivo (MDM) tem precedência sobre um valor de servidor armazenado em cache.
modelDefina um modelo padrão para todos os usuários (substituído pelo --model sinalizador ou por um modelo de sessão retomada).
effortLevel e contextTier, quando definidos junto com model, aplicam o mesmo esforço de raciocínio gerenciado e nível de contexto que as chaves correspondentes de configurações do repositório, mas somente quando o modelo gerenciado oferece suporte a opções explícitas de esforço/contexto.
permissionsDefina permissões gerenciadas, incluindo disableBypassPermissionsModematrizesask / / deny``allow de regra e a matriz de limites de limitTo domínio. Consulte regras de permissão gerenciadas e fronteira de domínio (limitTo).
policyHelperRegistre um executável que forneça a camada de configurações gerenciadas de prioridade mais baixa. Campos: path (obrigatório), mais opcional args, timeoutMse refreshIntervalMs. Se um dispositivo (MDM) e uma política de servidor registrarem um policyHelper, o registro do dispositivo vencerá.
remoteControlControlar se as sessões neste dispositivo podem ser controladas de outros dispositivos.
mode é "enabled", "disabled"ou "requireSSO" (requer githubDotComOrganizations quando definido).
requireBase64ImageAttachmentsQuando true, exija anexos de imagem codificados em base64 em vez de URLs de anexo.
false ou não definido mantém o comportamento existente.
sandboxDefina um nível mínimo de política de sandbox que os usuários não possam afrouxar. As configurações com suporte incluem enabled, failIfUnavailable, allowBypass, addCurrentWorkingDirectory, sandboxMcpServers, sandboxLspServers, auth.git, auth.gh, allowDevToolAccess, learningMode e o sistema de arquivos userPolicy.* e as regras de rede. O valor gerenciado sempre tem precedência sobre o próprio valor de um usuário na direção mais segura. Ativar a área restrita, exigir que ele seja concluído com sucesso e isolar os servidores MCP e LSP não podem ser desativados. Não é possível reativar o bypass ou a injeção de credenciais após desativá-los. As listas de permissões do sistema de arquivos só podem ser restringidas e os caminhos negados só podem ser adicionados.
failIfUnavailable só pode ser definido por um administrador e bloqueia a sessão quando a área restrita não pode ser estabelecida. Para as configurações que os usuários podem definir, consulte As configurações do usuário ou execute copilot help sandbox.
shellShortcutForçar a ativação ou desativação do atalho interativo do shell $ para todos os usuários. Um valor gerenciado sempre substitui a shellShortcut configuração do próprio usuário.
strictKnownMarketplacesRestrinja plug-ins a uma lista de permissões de marketplaces conhecidos (uma matriz JSON de especificações do marketplace). A lista de permissões também rege os marketplaces internos uma vez definidos: uma matriz vazia ([]) oculta e bloqueia todos os marketplaces, incluindo internos, não apenas os adicionados pelo usuário ou repositório.
telemetryConfiguração de exportação openTelemetry da linha de base por push: enabled, , endpoint, protocol, headers, resourceAttributes, captureContent, lockCaptureContent, serviceNamee headersProvider. Consulte referência de comando da CLI GitHub Copilot.

Observação

* policyHelper.path aceita um caminho absoluto, um caminho relativo ao diretório inicial (~/...) ou um nome simples do programa resolvido a partir de PATH. Outras formas relacionadas são rejeitadas. O registro é aceito e validado, mas o runtime ainda não invoca o helper — a execução do helper será disponibilizada em uma versão futura.

  • Quando remoteControl.mode for "requireSSO", listar as organizações permitidas em remoteControl.githubDotComOrganizations. O cliente deve ser autorizado via SSO para pelo menos uma das organizações listadas GitHub.com — não é mais necessário que seja autorizado para todas elas.
  • Defina permissions.disableBypassPermissionsMode como "disable" nas configurações gerenciadas do MDM para bloquear as opções de permitir tudo no nível do dispositivo. A alternância de contas não pode ignorar esta política. Se um valor não reconhecido for definido, a CLI registrará o problema em log e aplicará "disable" como padrão fail-closed. Consulte referência de comando da CLI GitHub Copilot.
  • A maioria das chaves gerenciadas bloqueia toda a linha: uma edição local é silenciosamente substituída pelo valor gerenciado na próxima carga. enabledPlugins e extraKnownMarketplaces são a exceção: a camada gerenciada mescla esses mapas com as entradas definidas por você, campo a campo, em vez de substituí-los por completo. Isso significa que o bloqueio se aplica por entrada, não à chave como um todo: um plug-in ou marketplace fixado por uma política gerenciada não pode ser reativado, desativado nem ter seu apontamento alterado localmente, mas outras entradas no mesmo mapa continuam totalmente sob controle do usuário.

sandbox.learningMode é exclusivo do Windows e só pode ser definido por meio do MDM nativo (por exemplo, por meio do Intune ou do Registro) — um valor do arquivo managed-settings.json é ignorado. Em um host com captura de negação, defina-o para "allow" iniciar comandos de shell em área restrita no modo de registro e permissão em vez do modo padrão de registro e negação, gravando cada acesso ao sistema de arquivos ou ao processo e permitindo-o em vez de recusá-lo (a política de rede ainda é imposta). Isso permite que um administrador observe o que os comandos de uma coorte precisam antes de bloqueá-los; não é um modo de contenção. A linha de status mostra sandbox relaxed e as chamadas de shell mostram (sandbox relaxed) enquanto é aplicado. deny valor (o padrão), ou a remoção da chave, retorna a coorte para o sandbox padrão aplicado, e deny de qualquer canal gerenciado sempre tem precedência sobre allow. As configurações do usuário e os hosts do SDK não podem definir essa chave.

Regras de permissão gerenciada

Adicionar deny, aske allow listas de regras sob a chave gerenciada permissions para impor uma política de permissão para todos. Isso funciona se está ou não permissions.disableBypassPermissionsMode definido.

{
    "permissions": {
        "deny": ["Shell(rm -rf *)", "Domain(*.evil.example)"],
        "ask": ["Shell(git push *)"],
        "allow": ["Read(**)"]
    }
}
Família de regrasPartidas
Bash(...), Shell(...)Comandos do Shell. Use <command> * (por exemplo, git push *) para corresponder a um prefixo de comando; caso contrário, a regra corresponderá ao texto exato.
PowerShell(...)Os comandos do PowerShell corresponderam da mesma maneira que Shell(...).
Read(...)Caminhos de leitura/exibição de arquivo. Oferece suporte a padrões glob: / para a raiz do espaço de trabalho, ~/ para o diretório pessoal e ./ para o diretório de trabalho atual.
Edit(...), Write(...)Os caminhos de gravação/edição de arquivo corresponderam da mesma maneira que Read(...).
Domain(...)Nomes de host de URL correspondentes, como regras de URL.

As regras são combinadas entre as fontes gerenciadas com uma precedência fixa: negar sempre vence, depois perguntar e, por fim, permitir — a correspondência com uma regra deny bloqueia a solicitação, mesmo que uma regra allow também corresponda. deny e ask são combinados entre todas as fontes gerenciadas (servidor, MDM). allow requer que todas as fontes que declaram uma lista allow admitam a operação — uma interseção, não uma união. Quando qualquer um de deny, ask ou allow é definido, uma operação que não corresponde a nenhum deles assume ask como padrão, em vez de prosseguir silenciosamente.

As regras Edit(...) e Write(...) se aplicam a mais do que apenas as ferramentas de arquivo integradas. Eles também abrangem arquivos gravados diretamente por um comando de shell. Copilot CLI reconhece um conjunto fixo dessas operações de escrita. Ele aborda redirecionamentos de saída do Bash (>, >>, >|, &>, &>>), redirecionamentos de saída do PowerShell (>, >>, *>, *>>) e um pequeno conjunto de edições no local com sed (sed -i ou --in-place, e as formas BSD -i '' e -I ''). Quando Copilot CLI consegue determinar o arquivo de destino a partir do comando, uma regra deny correspondente bloqueia a escrita, e uma regra ask correspondente solicita sua confirmação primeiro. Isso se aplica mesmo quando uma regra ampla, como Shell(*) de outra forma, permitiria o comando. Às vezes, o arquivo de destino não pode ser trabalhado antecipadamente, por exemplo, quando o caminho vem de uma variável. Nesse caso, essas regras de caminho não se aplicam e o comando é verificado pelas regras de comando do shell normais.

Limite de domínio (limitTo)

Adicione um limitTo array junto com deny, ask e allow sob a chave gerenciada permissions para impor uma lista de permissões de domínio de mundo fechado:

{
    "permissions": {
        "limitTo": ["github.com", "*.github.com"]
    }
}

Somente entradas Domain(...) são compatíveis em limitTo. Qualquer solicitação de rede de agente para um domínio fora da lista é negada sem pedir confirmação, e as regras de usuário, aprovações salvas e modos de permitir tudo não podem ampliá-la. As URLs detectadas em solicitações de shell são tratadas como solicitações Domain e também devem atender à fronteira. limitTo não restringe as operações shell, read ou write por si só.

Uma lista vazia limitTo nega todas as solicitações de domínio. Uma lista inválida ou uma entrada inválida é imposta como uma lista vazia (e relatada como um erro de configuração) em vez de descartar o restante da política gerenciada.

deny ainda tem precedência sobre limitTo. ask e allow refinam apenas as solicitações que já estão dentro do limite. Por allowexemplo, limitTo é uma interseção entre fontes gerenciadas— todas as fontes gerenciadas que declaram uma lista limitTo devem admitir a solicitação.

Lista de permissões/negações do servidor MCP gerenciado

Os administradores podem controlar servidores MCP diretamente por meio de configurações gerenciadas de MDM, independentemente da lista de permissões do MCP corporativo.

Definir allowedMcpServers e/ou deniedMcpServers em uma fonte de configurações gerenciadas:

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

Cada entrada identifica um servidor por exatamente um dos seguintes critérios de correspondência.

ComparadorPartidasNotes
serverUrlUm servidor remoto (HTTP/SSE) via URLSuporta curingas *; a correspondência de esquema e host ignora maiúsculas e minúsculas, a correspondência de caminho diferencia maiúsculas de minúsculas. As referências ${VAR} se expandem antes da correspondência.
serverCommandUm servidor stdio por seu comando e argumentos exatos, em ordem.As referências ${VAR} se expandem antes da correspondência.
serverNameUm servidor por seu rótulo atribuído.As entradas de lista de permissões são restritas a [A-Za-z0-9_./-]+ (diferencia maiúsculas de minúsculas, sem curingas; nomes de registro como microsoft/playwright-mcp são aceitos); as entradas de lista de negação aceitam qualquer cadeia de caracteres não vazia.

Réguas:

  • Servidores de primeira parte confiáveis (por exemplo, o servidor MCP interno GitHub ) são sempre isentos de ambas as listas.
  • Unset allowedMcpServers permite todos os servidores não padrão; uma matriz vazia bloqueia todos eles (negar-tudo).
  • Não definido ou vazio deniedMcpServers não bloqueia nada.
  • A negação sempre prevalece—um servidor que corresponde a deniedMcpServers é bloqueado mesmo que também corresponda a allowedMcpServers.
  • Para servidores remotos, uma correspondência deve vir de uma entrada serverUrl; serverName só conta quando não existem entradas serverUrl. Para servidores stdio, uma correspondência deve vir de uma entrada serverCommand; serverName só conta quando não existem entradas serverCommand.

Leitura adicional