Você abre um contêiner remoto no VS Code, começa a digitar e não vê sugestões do GitHub Copilot. O ícone do Copilot na barra de status aparece riscado ou cinza. Isso acontece porque o Copilot não autentica nem instala automaticamente dentro do ambiente do contêiner. A causa raiz é que o Copilot funciona como uma extensão do VS Code e, ao anexar a um contêiner, a extensão precisa ser configurada explicitamente para carregar dentro dele. Este artigo explica por que o Copilot falha em contêineres e fornece as etapas exatas de configuração para fazê-lo funcionar.
Principais conclusões: Como fazer o GitHub Copilot funcionar em contêineres de desenvolvimento
- Extensão VS Code Remote > Containers: Deve estar instalada no host antes de abrir qualquer contêiner.
- Arquivo de configuração do contêiner (devcontainer.json): A propriedade
extensionsdeve incluirGitHub.copiloteGitHub.copilot-chat. - Ícone do Copilot na barra de status: Mostra um risco no ícone quando o Copilot está desabilitado no contêiner; clicar nele revela o problema de configuração.
Por que o Copilot para de funcionar dentro de contêineres
Os Contêineres Remotos do VS Code permitem desenvolver dentro de um contêiner Docker que contém todas as ferramentas e dependências que seu projeto precisa. Quando você anexa o VS Code a um contêiner, o editor é executado na máquina host, mas as extensões precisam ser instaladas dentro do contêiner para funcionar. O GitHub Copilot é uma extensão do VS Code que requer autenticação com sua conta do GitHub. Se a extensão não estiver instalada no contêiner, o Copilot não pode iniciar. Além disso, a extensão precisa receber as permissões necessárias para acessar o sistema de arquivos e a rede dentro do contêiner. Por padrão, o VS Code não copia extensões do host para o contêiner. Você deve listar explicitamente o Copilot na configuração do contêiner.
O token de autenticação do Copilot é armazenado na máquina host. Quando a extensão carrega dentro do contêiner, ela precisa conseguir ler esse token. Se o token não for encaminhado, o Copilot aparecerá como desabilitado. Isso é um design de segurança: os tokens não são compartilhados automaticamente entre ambientes.
Como funciona o sistema de extensões do contêiner
O VS Code usa um arquivo devcontainer.json para definir o ambiente do contêiner. Esse arquivo fica na pasta .devcontainer na raiz do seu projeto. Quando você reabre a pasta em um contêiner, o VS Code lê esse arquivo e constrói ou anexa a um contêiner com as configurações especificadas. As extensões são listadas na propriedade extensions como um array de IDs de extensão. Se o Copilot não estiver listado, ele não será instalado. O mesmo se aplica ao Copilot Chat.
Etapas para habilitar o GitHub Copilot em contêineres do VS Code
Siga estas etapas para configurar o Copilot dentro de um contêiner de desenvolvimento. Você precisa de um projeto com um arquivo .devcontainer/devcontainer.json existente. Se não tiver um, crie a pasta .devcontainer e o arquivo devcontainer.json manualmente.
- Abra o arquivo devcontainer.json
Navegue até a pasta.devcontainerno seu projeto e abradevcontainer.jsonno VS Code. - Adicione o ID da extensão do Copilot ao array extensions
Dentro do arrayextensions, adicioneGitHub.copilot. Se também quiser o Copilot Chat, adicioneGitHub.copilot-chat. O array deve ficar assim:"extensions": ["GitHub.copilot", "GitHub.copilot-chat"]. Salve o arquivo. - Reconstrua o contêiner
Pressione F1 para abrir a Paleta de Comandos. Digite Remote-Containers: Rebuild Container e selecione. O VS Code reconstrói o contêiner com as novas extensões instaladas. - Verifique se o Copilot está ativo
Após a reconstrução do contêiner, verifique o ícone do Copilot na barra de status na parte inferior da janela do VS Code. Deve mostrar uma marca de seleção ou o logotipo do Copilot. Se mostrar um risco, clique no ícone e selecione Sign In to GitHub para autenticar. - Autentique o Copilot dentro do contêiner
Se solicitado, conclua o fluxo de autenticação do GitHub no seu navegador. O VS Code encaminha o token para o contêiner automaticamente após o login.
Após essas etapas, o Copilot deve fornecer sugestões de código enquanto você digita dentro do contêiner. Teste escrevendo um nome de função ou declaração de variável.
Se o Copilot ainda apresentar problemas no contêiner
Ícone do Copilot aparece riscado após a reconstrução
Isso indica que a extensão está instalada, mas não autenticada. Clique no ícone do Copilot na barra de status. Selecione Sign In to GitHub. Conclua a autenticação no navegador. Se o navegador não abrir, verifique se as configurações do VS Code permitem autenticação remota. Você também pode acionar manualmente o login executando o comando GitHub Copilot: Sign In na Paleta de Comandos.
Sugestões do Copilot aparecem, mas são genéricas ou incorretas
Isso pode acontecer se o contêiner não tiver o servidor de linguagem ou SDK para a linguagem que você está usando. O Copilot depende de pistas contextuais do tipo de arquivo e da estrutura do projeto. Instale as extensões relevantes do VS Code para sua linguagem dentro do contêiner adicionando seus IDs ao array extensions no devcontainer.json. Por exemplo, adicione ms-python.python para Python ou dbaeumer.vscode-eslint para JavaScript.
Copilot funciona no host, mas não no contêiner
Verifique se o array extensions no devcontainer.json inclui GitHub.copilot. Se o array estiver vazio ou ausente, o Copilot não será instalado. Verifique também se a imagem do contêiner inclui o acesso de rede necessário para alcançar a API do Copilot. Firewalls corporativos ou configurações de proxy podem bloquear o Copilot. Configure as variáveis de ambiente HTTP_PROXY e HTTPS_PROXY no devcontainer.json se necessário.
| Item | Ambiente Host | Ambiente Contêiner |
|---|---|---|
| Descrição | Extensões executadas na máquina local com acesso direto a arquivos e rede do host | Extensões executadas dentro do contêiner com sistema de arquivos e rede isolados |
| Instalação da extensão Copilot | Automática quando instalada globalmente no VS Code | Deve ser listada no array extensions do devcontainer.json |
| Token de autenticação | Armazenado localmente e reutilizado | Deve ser encaminhado via túnel remoto do VS Code; pode exigir login manual |
| Acesso de rede à API do Copilot | Usa a rede do host diretamente | Usa a rede do contêiner; pode precisar de configurações de proxy |
| Arquivo de configuração | settings.json do VS Code | devcontainer.json na pasta .devcontainer |
Agora você pode configurar o GitHub Copilot dentro de qualquer contêiner de desenvolvimento do VS Code. Comece verificando seu arquivo devcontainer.json quanto à propriedade extensions. Se você trabalha frequentemente com contêineres, considere criar um modelo base de devcontainer.json que inclua o Copilot e suas extensões de linguagem comuns. Para configurações avançadas, você pode usar a propriedade remoteEnv no devcontainer.json para definir variáveis de proxy e garantir que o Copilot consiga acessar a API através de redes corporativas.