Skip to main content

Configurações gerenciadas pela empresa

Entenda o esquema de configurações gerenciadas corporativo usado pelos clientes do Copilot.

Use essa referência para entender as chaves atualmente compatíveis em managed-settings.json.

Para obter métodos de implantação e clientes com suporte, consulte Configurando configurações gerenciadas pela empresa.

Regras de precedência

Quando várias fontes de configurações estão presentes, as configurações anteriores nesta lista têm precedência sobre as configurações posteriormente na lista:

  1. Configurações gerenciadas por MDM
  2. Configurações gerenciadas pelo servidor
  3. Configurações baseadas em arquivo
  4. Configurações no nível do usuário

Como exceção, as seguintes chaves são compostas na direção mais restritiva entre diferentes métodos de entrega:

  • sandbox
  • permissions.deny, permissions.ask e permissions.allow

Chaves com suporte

KeyPurposeCopilot CLIVS CodeGitHub Copilot appCopilot cloud agentJetBrains IDEs
permissions.disableBypassPermissionsModeDesabilita o desvio ou o comportamento de permitir tudo no estilo YOLO
permissions.denyBloqueia operações específicas
permissions.askRequer uma nova aprovação humana antes que operações específicas possam continuar
permissions.allowPermite que operações específicas prossigam sem um prompt
modelDefine a seleção de modelo automático como o padrão para novas conversas
enabledPluginsHabilita ou desabilita plug-ins específicos por chave
extraKnownMarketplacesAdiciona marketplaces de plug-in que os usuários podem acessar
strictKnownMarketplacesRestringe a instalação do plug-in a marketplaces explicitamente listados
telemetryConfigura a exportação do OpenTelemetry, roteando dados de uso Copilot para um coletor de sua escolha
remoteControlRestringe se as sessões hospedadas neste dispositivo podem ser controladas remotamente, com base no status de autorização de SSO do cliente de controle para as organizações listadas. Não afeta a capacidade do usuário de controlar remotamente as sessões hospedadas em outros dispositivos
allowedMcpServersDefine uma lista de permissões de servidores MCP permitidos para execução. Qualquer servidor não correspondido é bloqueado. Deixe em branco para permitir todos os servidores; sujeito às regras de negação
deniedMcpServersDefine servidores MCP bloqueados incondicionalmente, mesmo que eles também correspondam a uma entrada em allowedMcpServers
sandboxImpõe restrições mínimas de área restrita local para execução de comando, sistema de arquivos e acesso à rede, credenciais e servidores MCP e LSP locais

Aplicando configurações diferentes às equipes corporativas

Para implantações gerenciadas pelo servidor, a organização pode aplicar diferentes políticas de governança a grupos de usuários com base em seu pertencimento à equipe da empresa. A empresa define todas as configurações— a associação de equipe determina apenas quais usuários recebem um determinado conjunto de valores.

Para tornar uma chave elegível para valores específicos da equipe, marque-a como substituível em managed-settings.json, usando a sintaxe { "overridable": <VALUE> }. Uma chave substituível usa o valor da equipe quando configurado ou recua para o padrão corporativo quando a equipe não o configura. A sintaxe { "overridable": <VALUE> } aplica-se às teclas model, permissions.disableBypassPermissionsMode, permissions.deny, permissions.ask, permissions.allow, allowedMcpServers e deniedMcpServers. As chaves que não são marcadas como substituíveis permanecem uma decisão de nível corporativo que as equipes não podem modificar.

enabledPlugins e extraKnownMarketplaces funcionam de forma aditiva. A configuração corporativa managed-settings.json define uma base, e um arquivo de equipe corporativa pode adicionar mais plug-ins e marketplaces a ela. Para obter as etapas completas de instalação, consulte Configurando configurações gerenciadas pela empresa.

Configuração de exemplo

O exemplo a seguir mostra essas chaves em um arquivo de configurações gerenciadas.

{
  "model": "auto",
  "permissions": {
    "disableBypassPermissionsMode": "disable",
    "deny": [
      "Shell(rm -rf *)",
      "Read(~/.ssh/**)",
      "Edit(//etc/**)",
      "Domain(*.unapproved.example)"
    ],
    "ask": [
      "Shell(git push *)",
      "Edit(/src/**)",
      "Domain(api.github.com)"
    ],
    "allow": [
      "Shell(npm test *)",
      "Read(/src/**)",
      "Domain(registry.npmjs.org)"
    ]
  },
  "enabledPlugins": {
    "my-plugin@agent-skills": true
  },
  "extraKnownMarketplaces": {
    "agent-skills": {
      "source": {
        "source": "github",
        "repo": "OWNER/REPO"
      },
      "autoUpdate": true
    }
  },
  "strictKnownMarketplaces": [
    {
      "source": "github",
      "repo": "OWNER/REPO"
    }
  ],
  "telemetry": {
    "enabled": true,
    "endpoint": "https://otel-collector.example.com",
    "protocol": "http/protobuf",
    "captureContent": false,
    "lockCaptureContent": true,
    "serviceName": "copilot",
    "resourceAttributes": {
      "deployment.environment": "production"
    },
    "headers": {
      "Authorization": "Bearer TOKEN"
    }
  },
  "remoteControl": {
    "mode": "requireSSO",
    "githubDotComOrganizations": ["ORG-NAME"]
  },
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverCommand": ["npx", "@playwright/mcp@latest"] },
    { "serverCommand": ["cmd", "/c", "uvx", "markitdown-mcp"] }
  ],
  "deniedMcpServers": [
    {
      "serverCommand": [
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/"
      ]
    }
  ],
  "sandbox": {
    "enabled": true,
    "allowBypass": false,
    "sandboxMcpServers": true,
    "sandboxLspServers": true
  }
}

enabledPlugins

Define plug-ins instalados ou bloqueados automaticamente para todos os usuários corporativos. Cada entrada usa o formato PLUGIN-NAME@MARKETPLACE-NAME como a chave, com um valor booliano: true para exigir que o plug-in seja habilitado ou false para exigir que ele seja desabilitado. Consulte Sobre os padrões de plug-in gerenciados pela empresa.

extraKnownMarketplaces

Define outros marketplaces de plug-in disponíveis para os usuários. Cada entrada é um objeto de marketplace nomeado que contém uma propriedade source e um booleano autoUpdate opcional.

Defina autoUpdate como true para exigir que os clientes atualizem periodicamente esse marketplace e os plugins instalados a partir dele. Defina-o para false exigir que as atualizações automáticas permaneçam desabilitadas para esse marketplace. Se você omitir autoUpdate, os clientes usarão o comportamento padrão existente ou o comportamento configurado pelo usuário.

Como as configurações gerenciadas têm precedência, os usuários não podem substituir um valor definido autoUpdate . A configuração aplica-se apenas àquele marketplace, e quaisquer restrições em strictKnownMarketplaces ainda se aplicam antes das operações de recarregamento e atualização.

Há suporte para os seguintes tipos de origem:

  • "github" — requer repo em formato OWNER/REPO; opcional ref (ramificação, marcação ou SHA) e subdiretório path
  • "git" — requer url; opcional ref e path
  • "directory" — requer path

Consulte Sobre os padrões de plug-in gerenciados pela empresa.

strictKnownMarketplaces

Restringe a instalação do plug-in somente aos marketplaces definidos explicitamente pela empresa. Uma matriz vazia significa bloqueio completo. Cada entrada é um objeto do marketplace com uma source propriedade que indica o tipo de origem. Há suporte para os seguintes tipos de origem:

  • "github" — requer repo no formato OWNER/REPO; opcional ref e path
  • "git" — requer url; opcional ref e path
  • "url"— requer url; objeto opcional headers
  • "npm" — requer package
  • "file" — requer path
  • "directory" — requer path
  • "hostPattern" — requer hostPattern (hosts do marketplace na correspondência regex)
  • "pathPattern" — requer pathPattern (caminhos do marketplace na correspondência regex)

modelo

Define a seleção de modelo automático como o padrão para novas conversas. Consulte Sobre Copilotauto model selection.

  • Quando você define model como "auto", novas sessões usam o modelo Automático, a menos que o usuário especifique um modelo diferente por conversa.
  • Essa chave é substituível pelo mapeamento de equipe empresarial. No managed-settings.json, use a sintaxe { "overridable": "auto" } para personalizar a configuração da chave para cada equipe. Em seguida, você pode definir "model": "unmanaged" em um arquivo de configurações da equipe, fornecendo uma especialização que tem precedência sobre managed-settings.json para os membros da equipe em questão.

Observação

model foi originalmente documentado como permissions.model. Os clientes ainda leem o valor permissions.model aninhado quando a chave model de nível superior está ausente, mas você deve usar a chave model de nível superior em novas configurações.

permissões

negar, perguntar, permitir

As chaves permissions.deny, permissions.ask e permissions.allow usam a precedência negar > solicitar > permitir. Se uma fonte gerenciada por MDM, gerenciada pelo servidor ou baseada em arquivo definir qualquer regra de permissão — ou se qualquer fonte aplicável declarar uma lista allow —, uma operação compatível não correspondente exigirá aprovação por padrão. Caso contrário, segue o fluxo normal de permissões.

  • deny bloqueia operações específicas, independentemente de também corresponderem a uma regra allow ou ask. Uma regra de negação definida por qualquer fonte de configurações gerenciadas bloqueia a operação para todos os usuários, independentemente das regras nas outras fontes.
  • ask requer aprovação única e nova antes que uma operação específica possa continuar, mesmo que a operação seja permitida de outra forma. Uma regra gerenciada ask não pode ser atendida pelo modo de bypass (também conhecido como modo allow-all ou YOLO), uma configuração de aprovação automática, um gancho ou outro atalho de aprovação ou uma concessão persistida de uma aprovação anterior. A mesma operação será solicitada novamente na próxima vez em que for necessária.
  • allow permite que uma operação específica prossiga sem um prompt. A lista de permissões efetiva é a interseção de todas as fontes que a declaram, não a união. Uma fonte que não declara uma allow lista não coloca nenhuma restrição própria nessa chave.

As regras usam os seguintes seletores:

SeletorPartidas
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.
Bash(...) é um alias de compatibilidade para Shell(...).
PowerShell(...) usa a mesma família de seletores com correspondência de comandos sem distinção entre maiúsculas e minúsculas.
Read(...)Caminhos de leitura e visualização dos arquivos. Oferece suporte a padrões glob e a estas raízes: // para a raiz do sistema de arquivos, / para a raiz do espaço de trabalho, ~/ para o diretório pessoal e ./ para o diretório de trabalho atual.
Edit(...)Os caminhos para gravar e editar arquivos seguem o mesmo critério de correspondência que Read(...).
Write(...) é um alias para Edit(...).
Domain(...)Origens de rede. Um host simples usa HTTPS por padrão, e a correspondência de hosts não diferencia maiúsculas de minúsculas. Use *. para incluir subdomínios; por exemplo, *.example.com corresponde a example.com e seus subdomínios.

Cada subchave é substituível para equipes empresariais. Defina o valor da empresa como { "overridable": <VALUE> }, substituindo <VALUE> pela matriz de regras. Em seguida, use a sintaxe padrão para definir regras de substituição no arquivo de cada equipe.

disableBypassPermissionsMode

Impede que os usuários habilitem o modo de bypass (também conhecido como "modo YOLO"). O modo de bypass permite que um agente execute comandos, acesse arquivos e busque URLs sem solicitar aprovação.

Quando você define disableBypassPermissionsMode como "disable", os usuários não podem ativar o modo de bypass:

  • Em Copilot CLI, todas as opções de linha de comando que permitem todas as permissões (--yolo, --allow-all e as opções individuais --allow-all-tools, --allow-all-paths e --allow-all-urls) são suprimidas na inicialização e não podem conceder permissões elevadas. Os comandos de barra /yolo e /allow-all também estão bloqueados.
  • Em VS Code, a configuração de aprovação automática global (chat.tools.global.autoApprove) está desativada e não pode ser habilitada novamente.
  • Em GitHub Copilot app, a configuração "Permitir tudo" de "Permissões de ferramentas" está bloqueada nas configurações da sessão.
  • Essa chave é substituível pelo mapeamento de equipe empresarial. No managed-settings.json, use a sintaxe { "overridable": "disable" } para personalizar a configuração da chave para cada equipe. Em seguida, você pode definir "disableBypassPermissionsMode": "unmanaged" em um arquivo de configurações da equipe, fornecendo uma especialização que tem precedência sobre managed-settings.json para os membros da equipe em questão.

telemetria

Configura a exportação do OpenTelemetry, encaminhando os dados de uso Copilot para um coletor à sua escolha.

Essa propriedade tem suporte para Copilot CLI e VS Code.

Quando você define a propriedade telemetry, a telemetria de Copilot é enviada para o endpoint que você especificar. Há suporte para as seguintes sub-propriedades:

  • enabled: Defina como true para ativar a exportação de telemetria ou como false para desativá-la.
  • endpoint: a URL do coletor OTLP (por exemplo, https://otel-collector.example.com).
  • protocol: o protocolo de transporte para exportação de telemetria. Os valores aceitos são "http/json" e "http/protobuf".
  • captureContent: defina como true para incluir o conteúdo do prompt e da resposta na carga de telemetria, ou false para excluí-lo.
  • lockCaptureContent: definido como true para impedir que os usuários alterem a configuração captureContent.
  • serviceName: um rótulo para o nome do serviço de telemetria (por exemplo, "copilot").
  • resourceAttributes: um objeto de atributos de recurso OpenTelemetry a ser anexado a toda a telemetria exportada (por exemplo, {"deployment.environment": "production"}).
  • headers: um objeto de cabeçalhos HTTP para incluir com cada solicitação de telemetria (por exemplo, um cabeçalho Authorization para o coletor).

remoteControl

Restringe se as Copilot sessões hospedadas em um dispositivo podem ser controladas remotamente. Isso não afeta a capacidade de um usuário de controlar remotamente suas sessões hospedadas em outros dispositivos.

  • mode: Defina como "disabled" para impedir o controle remoto de sessões no dispositivo, "requireSSO" para permitir o controle remoto apenas a partir de um cliente autorizado por SSO para as organizações listadas em githubDotComOrganizations, ou "enabled" para permiti-lo sem restrições.
  • githubDotComOrganizations: uma matriz de logons da organização. Necessário quando mode é "requireSSO".

allowedMcpServers

Define uma lista de permissões de servidores MCP permitidos para execução. Quando definido, somente servidores correspondentes a pelo menos uma entrada são permitidos. Qualquer servidor que não seja correspondido é bloqueado.

Omita completamente essa chave para permitir todos os servidores, desde que respeitadas as entradas em deniedMcpServers. Defina-a como uma matriz vazia para bloquear todos os servidores, exceto servidores padrão internos.

Quando várias fontes de configurações definem allowedMcpServers, a lista de permissões efetiva é a interseção de todas as fontes. Um servidor deve ser autorizado por cada origem para ser executado.

Cada entrada deve conter exatamente uma propriedade correspondente.

PropertyComportamento correspondenteServidores aplicáveis
serverNameCorresponde exatamente ao rótulo do servidor atribuído pelo usuário. Não há suporte para caracteres curinga. Como os usuários escolhem nomes de servidor, usem serverUrl ou serverCommand quando você precisar impor a identidade de um servidor.Qualquer servidor. Os servidores na memória só podem usar serverName.
serverUrlCorresponde a uma URL do servidor remoto.
* Dá suporte a curingas para subdomínios ou prefixos de caminho, por exemplo, https://mcp.example.com/* ou https://*.internal.example.com/*.Servidores remotos que se conectam via HTTP ou SSE (eventos enviados pelo servidor). Essa propriedade não se aplica aos servidores locais, mesmo que eles tenham uma URL.
serverCommandCorresponde ao comando exato e a cada argumento de um servidor local, por exemplo, ["npx", "-y", "my-mcp-server"]. Não há suporte para curingas e expansão de linha de comando.Servidores locais que usam entrada e saída padrão (stdio). Essa propriedade não se aplica a servidores remotos, mesmo que eles tenham um comando.

Essa chave é substituível para as equipes corporativas. Empacote os objetos correspondentes em overridable no nível corporativo e, em seguida, use a sintaxe regular para definir listas de permissões e listas de bloqueio no arquivo de cada equipe.

Canonização de URL

Antes de comparar um serverUrl padrão com uma URL do servidor, o cliente normaliza os dois valores:

  • Converte o esquema e o host em letras minúsculas.
  • Converte nomes de host internacionalizados ou Unicode em Punycode.
  • Remove a porta padrão, :80 para HTTP ou :443 para HTTPS.
  • Decodifica octetos de host codificados por porcentagem. Por exemplo, %65vil se tornará evil.
  • Remove os fragmentos de URL e os pontos à direita de nomes DNS.
  • Impede que curingas no componente de autoridade correspondam ao limite / no caminho.

deniedMcpServers

Define servidores MCP bloqueados incondicionalmente. Um servidor que corresponde a qualquer entrada é bloqueado mesmo que ele também corresponda a uma entrada em allowedMcpServers. As regras de negação sempre têm precedência sobre as regras de permissão.

Servidores de primeira parte Copilot , como o servidor MCP interno GitHub , são isentos de regras de negação e não podem ser bloqueados.

Quando várias fontes de configuração definem deniedMcpServers, a lista de bloqueio efetiva é a união de todas as fontes. Um servidor bloqueado por qualquer origem é bloqueado para todos.

Cada entrada usa a mesma serverName, serverUrlou serverCommand propriedades descritas em allowedMcpServers.

sandbox

Impõe restrições mínimas de sandbox local para Copilot CLI. As configurações de área restrita gerenciada impõem restrições em vez de padrões:

  • Para configurações de ativação forçada, um valor gerenciado de true aplica a configuração. false ou a omissão deixa a configuração do usuário inalterada.
  • Para configurações de funcionalidade, um valor gerenciado de false proíbe a funcionalidade. true ou a omissão deixa a configuração do usuário inalterada.
  • As listas de caminhos de leitura/gravação e somente leitura gerenciadas restringem as concessões configuradas pelo usuário, enquanto os caminhos bloqueados gerenciados adicionam bloqueios configurados pelo usuário.

Há suporte para as seguintes sub-propriedades:

  • enabled: true requer o isolamento em área restrita e impede que os usuários o desativem.
  • allowBypass: false impede que o modelo solicite que um comando individual seja executado fora da área restrita.
  • addCurrentWorkingDirectory: false impede que Copilot CLI adicione automaticamente o diretório de trabalho atual aos caminhos de leitura e gravação da sandbox.
  • sandboxMcpServers: true exige que os servidores MCP locais iniciados por Copilot CLI sejam executados na área restrita. Os servidores MCP remotos não são executados na área restrita local.
  • sandboxLspServers: true exige que os servidores de linguagem iniciados por Copilot CLI sejam executados no sandbox.
  • gitAuth: false impede que Copilot CLI injete um token GitHub para operações Git HTTPS autenticadas no ambiente restrito.
  • ghAuth: false impede Copilot CLI de injetar um token GitHub para GitHub CLI no sandbox.
  • allowDevToolAccess: false impede o acesso automático à configuração da ferramenta de desenvolvimento, caches, registros e carrinhos de ferramentas. Esses locais podem conter credenciais ou tokens de registro de pacotes. Desabilitar o acesso pode fazer com que a restauração de pacotes, as operações autenticadas no registro ou as compilações que usam caches compartilhados falhem, a menos que você conceda explicitamente acesso aos caminhos necessários.
  • userPolicy: um objeto que configura restrições do sistema de arquivos, de rede e específicas do Seatbelt no macOS. As propriedades compatíveis são descritas nas seções a seguir.

sandbox.userPolicy.filesystem

Configura o acesso ao sistema de arquivos para processos em sandbox. Os caminhos devem ser absolutos. As listas de concessões gerenciadas são comparadas com as listas configuradas pelo usuário pela cadeia de caracteres do caminho exata, e não pela cobertura de caminhos pai ou filho.

  • readwritePaths: uma matriz de caminhos que os processos em área restrita podem ler e gravar. Um caminho configurado pelo usuário permanecerá disponível somente se sua cadeia de caracteres exata também aparecer em todas as fontes gerenciadas que especificam essa propriedade. Uma matriz gerenciada vazia remove todas as concessões de caminho de leitura/gravação configuradas pelo usuário, mas não remove o acesso montado separadamente, como diretórios temporários ou o diretório de trabalho atual.
  • readonlyPaths: uma matriz de caminhos que os processos em área restrita podem ler, mas não gravar. Um caminho configurado pelo usuário permanecerá disponível somente se sua cadeia de caracteres exata também aparecer em todas as fontes gerenciadas que especificam essa propriedade. Uma matriz gerenciada vazia remove todas as concessões de caminho somente leitura configuradas pelo usuário, mas não remove o acesso montado separadamente.
  • deniedPaths: uma matriz de caminhos que os processos em área restrita não podem acessar. Um valor gerenciado é adicionado aos caminhos bloqueados de um usuário, em vez de substituí-los.

sandbox.userPolicy.network

Configura o acesso à rede para processos em área restrita.

  • allowOutbound: false bloqueia o acesso à rede de saída.
  • allowLocalNetwork: false impede o acesso à rede local.

O comportamento da rede varia de acordo com o sistema operacional. Em particular, um proxy não é um limite de controle de saída completo porque alguns aplicativos podem ignorar as configurações de proxy.

sandbox.userPolicy.seatbelt

Configura opções de Cinto de Segurança específicas do macOS.

  • keychainAccess: false impede que processos em área restrita acessem o conjunto de chaves do macOS.