Дата публикации
coding

Copilot в VS Code застрял на «Sign in to GitHub.com»: как починить без переустановки редактора

Что нового

GitHub Copilot и Copilot Chat в VS Code обрели один важный «апдейт», который появился не в релиз-нотах, а в опыте пользователей: стало понятно, из‑за чего Copilot чаще всего ломается и как его чинить без тотальной переустановки VS Code.

Сообщество на GitHub разобрало типичный сценарий:

  • Copilot зависает на экране «Sign in to GitHub.com» и не уходит дальше.
  • В логах Copilot и Copilot Chat появляется ошибка:
    • Invalid copilot token: missing token: 403
    • LanguageModel/Embeddings are not available without auth
  • У части пользователей Copilot работает локально, но полностью отваливается в WSL, SSH и devcontainer.
  • Проблема воспроизводится и у платных подписчиков Copilot Pro, и у тех, кто впервые ставит расширение.

Из обсуждения родился набор конкретных рабочих рецептов:

  1. Удаление «ломающего» блока настроек в settings.json:

    "github.copilot.advanced": {
     "authProvider": "github-enterprise"
    }
    

    или

    "github.copilot.advanced": {
     "authProvider": "minimal"
    }
    
  2. Проверка и включение встроенного расширения GitHub Authentication (@builtin github authentication).

  3. Полная очистка авторизации Copilot: выход из GitHub в VS Code, удаление кеша токенов, ревок авторизации Copilot на GitHub.

  4. Исправление DNS и IPv6 в WSL/SSH, чтобы Copilot мог достучаться до api.github.com и доменов *.githubcopilot.com.

  5. У части пользователей всё решилось простым обновлением расширений GitHub Copilot и GitHub Copilot Chat до свежей версии.

Как это работает

Где ломается авторизация

Copilot в VS Code опирается сразу на несколько уровней авторизации и сети:

  1. OAuth через GitHub
    VS Code открывает браузер, вы логинитесь на GitHub и выдаёте доступ для Copilot. В ответ GitHub возвращает токен с нужными правами: read:user, repo, user:email, workflow, copilot.

  2. Встроенный провайдер GitHub Authentication
    В VS Code есть встроенное расширение GitHub Authentication (помечено как @builtin). Оно хранит и обновляет сессии GitHub. Если этот модуль отключён, Copilot не может получить токен и падает с missing token: 403.

  3. Локальный кеш токенов Copilot
    Copilot создаёт локальные файлы и папки (.github-copilot, globalStorage/github.copilot*), где хранит служебные токены. Если кеш бьётся или устаревает, расширение зацикливается на «Sign in to GitHub.com».

  4. Сетевой слой в локальной среде, WSL или SSH
    В WSL и SSH Copilot работает через удалённый сервер VS Code. Там важны:

    • корректный DNS (/etc/resolv.conf),
    • отсутствие блокировок api.github.com и api.business.githubcopilot.com,
    • отсутствие агрессивной фильтрации на уровне VPN, ad-block DNS или корпоративного прокси.

Почему ломает одна строка в settings.json

Многие пользователи случайно включали продвинутые настройки Copilot:

"github.copilot.advanced": {
 "authProvider": "github-enterprise"
}

или

"github.copilot.advanced": {
 "authProvider": "minimal"
}

Эта настройка говорит Copilot использовать другой провайдер авторизации, а не стандартный GitHub.com. В результате расширение не может получить валидный токен и постоянно возвращает Invalid copilot token: missing token: 403.

Удаление этого блока из settings.json и перезапуск VS Code возвращают Copilot к нормальной схеме авторизации.

Где хранятся настройки и кеш

  • Windows (VS Code):

    • Настройки: C:\Users\<вы>\AppData\Roaming\Code\User\settings.json
    • Глобальное хранилище Copilot:
      C:\Users\<вы>\AppData\Roaming\Code\User\globalStorage\github.copilot*
  • macOS (VS Code):

    • Настройки и состояние: ~/Library/Application Support/Code/
    • Кеш:
      • ~/Library/Application Support/Code/Cache
      • ~/Library/Application Support/Code/CachedData
      • ~/Library/Application Support/Code/User/workspaceStorage
  • Linux/WSL:

    • Настройки: ~/.config/Code/User/settings.json
    • Глобальное хранилище Copilot:
      ~/.config/Code/User/globalStorage/github.copilot*

Отдельно Copilot создаёт папку в домашнем каталоге:

  • Windows: %USERPROFILE%\.github-copilot
  • Linux/WSL: ~/.github-copilot

Удаление этих директорий сбрасывает локальные токены и состояние Copilot.

Что происходит в WSL и почему виноват DNS/IPv6

В WSL2 /etc/resolv.conf обычно генерируется автоматически на основе настроек Windows. На практике это часто ломает доступ к api.github.com:

  • DNS может резолвить домен с огромной задержкой.
  • IPv6-адрес GitHub может быть недоступен, и система долго пытается к нему подключиться, прежде чем переключиться на IPv4.

Пользователи видели в логах Copilot Chat ошибки:

ConnectTimeoutError: Connect Timeout Error (attempted address: api.github.com:443, timeout: 10000ms)
TypeError: fetch failed

После ручной правки DNS внутри WSL:

sudo sh -c 'echo nameserver 8.8.8.8 > /etc/resolv.conf'

или с отключением автогенерации resolv.conf через /etc/wsl.conf, запросы к api.github.com начинали отвечать мгновенно, а Copilot успешно проходил авторизацию.

Что это значит для вас

Когда это вам полезно

Если вы:

  • платите за GitHub Copilot / Copilot Pro, но в VS Code видите только бесконечный экран «Sign in to GitHub.com»;
  • получаете в логах Copilot/Chat сообщение Invalid copilot token: missing token: 403;
  • замечаете, что локально Copilot работает, а в WSL/SSH/devcontainer — нет;
  • только что установили Copilot, и он ни разу не смог авторизоваться;

— этот разбор поможет вернуть Copilot к жизни без переустановки VS Code и без форматирования среды.

Где Copilot поможет после починки

Когда авторизация работает нормально, Copilot в VS Code снова становится полезным в типичных сценариях:

  • автодополнение кода по контексту файла и проекта;
  • объяснение кода и рефакторинг через Copilot Chat;
  • генерация тестов, SQL-запросов, простых скриптов;
  • помощь в конфигурации CI/CD, Docker, Kubernetes-манифестов.

Отдельно важно: многие жалобы в обсуждении идут от пользователей WSL и SSH. Если вы активно работаете в удалённых средах, стоит сразу проверить DNS и IPv6, чтобы не ловить непонятные таймауты в Copilot.

Когда это не решит проблему

Не стоит ждать чуда, если:

  • ваш провайдер, корпоративный VPN или DNS жёстко блокирует GitHub и домены Copilot;
  • у вас нет действующей подписки на Copilot, а вы рассчитываете на полноценную работу Pro-функций;
  • вы используете форки VS Code вроде VSCodium, где поведение встроенных GitHub-компонентов может отличаться. В обсуждении есть пример, где на VSCodium Copilot Chat зависал на «working» даже после обходных манёвров.

В этих случаях придётся либо настраивать сеть (VPN, прокси, DNS), либо ждать обновлений конкретной сборки редактора.

Доступность в России

GitHub Copilot официально работает через GitHub.com и домены *.githubcopilot.com. Для пользователей из России доступ может зависеть от провайдера, DNS и VPN. Если GitHub или Copilot-домены не открываются в браузере, Copilot в VS Code тоже не сможет авторизоваться. В этом случае без VPN или корректно настроенного прокси обойтись не получится.

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

Обсуждение на GitHub касается не качества подсказок Copilot, а стабильности его работы в VS Code. Прямых сравнений с GPT-4o, Claude 3.5 или другими ассистентами в коде в источнике нет.

Зато хорошо видно, как Copilot встроен в экосистему VS Code:

  • он опирается на встроенный GitHub Authentication;
  • активно использует OAuth GitHub и сетевую инфраструктуру (DNS, VPN, прокси);
  • хранит значительную часть состояния локально в профиле пользователя.

По сравнению с ассистентами, которые работают только в браузере, Copilot выигрывает глубокой интеграцией в редактор, но и ломается чаще из‑за настроек профилей, расширений и удалённых окружений (WSL, SSH, devcontainer).

Установка / Как запустить

Ниже — собранный из обсуждения чек‑лист, который помогает починить Copilot в VS Code, если он застрял на «Sign in to GitHub.com».

1. Удалите проблемный блок в settings.json

Откройте settings.json и найдите строки вида:

"github.copilot.advanced": {
 "authProvider": "github-enterprise"
}

или

"github.copilot.advanced": {
 "authProvider": "minimal"
}

Удалите весь блок "github.copilot.advanced": { ... }, сохраните файл и перезапустите VS Code.

Как открыть settings.json в VS Code:

  1. Откройте Settings.
  2. В правом верхнем углу нажмите на иконку с документом Open Settings (JSON).
  3. Либо: Settings → Profiles → Workbench › Settings: Apply To All Profiles — VS Code откроет settings.json в профиле пользователя.

2. Включите встроенное расширение GitHub Authentication

  1. Откройте панель расширений:
    • Windows/Linux: Ctrl+Shift+X
    • macOS: Cmd+Shift+X
  2. В строке поиска введите:
    @builtin github authentication
    
  3. Найдите GitHub Authentication.
  4. Если расширение отключено — нажмите Enable.
  5. Перезапустите VS Code.

3. Полностью сбросьте логин Copilot

Выполните команды из командной палитры:

  1. Откройте палитру:

    • Windows/Linux: Ctrl+Shift+P
    • macOS: Cmd+Shift+P
  2. По очереди выполните:

    GitHub: Sign Out
    GitHub Copilot: Sign Out
    GitHub: Clear all sessions
    
  3. Закройте VS Code целиком.

  4. Очистите локальный кеш Copilot:

    • Windows:

      • Удалите папку:
        %USERPROFILE%\.github-copilot
        
      • И глобальное хранилище (если есть):
        %APPDATA%\Code\User\globalStorage\github.copilot*
        
    • WSL/Linux:

      rm -rf ~/.github-copilot
      rm -rf ~/.config/Code/User/globalStorage/github.copilot*
      
  5. Зайдите на GitHub в браузере:
    https://github.com/settings/applications

    • В разделе Authorized OAuth Apps найдите GitHub Copilot и удалите доступ.
    • В разделе Authorized GitHub Apps удалите всё, что связано с GitHub Copilot и GitHub Copilot Chat.
  6. Снова откройте VS Code.

  7. Установите или переустановите расширения:

    • GitHub Copilot
    • GitHub Copilot Chat
  8. Нажмите Set up GitHub Copilot и пройдите авторизацию в браузере. Убедитесь, что запрошены права:

    • read:user
    • repo
    • user:email
    • workflow
    • copilot

4. Исправьте DNS и IPv6 в WSL

Если Copilot работает локально, но не работает в WSL, попробуйте следующее.

Вариант 1: быстрый фикс DNS

В терминале WSL:

sudo sh -c 'echo nameserver 8.8.8.8 > /etc/resolv.conf'

Проверьте, что запросы к GitHub проходят:

curl -4 https://api.github.com

Вариант 2: постоянная правка DNS в WSL2

  1. Отключите автогенерацию resolv.conf:

    sudo nano /etc/wsl.conf
    

    Добавьте строки:

    [network]
    generateResolvConf = false
    
  2. Удалите старый resolv.conf и создайте новый:

    sudo rm /etc/resolv.conf
    echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
    

    или с Cloudflare DNS:

    echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
    
  3. На хосте Windows перезапустите WSL:

    wsl --shutdown
    
  4. Снова откройте дистрибутив WSL и VS Code через code ..

Пользователи также делились точечным решением: прописать IP GitHub в /etc/hosts, если DNS не даёт стабильный ответ:

sudo nano /etc/hosts
# добавить строки вида
<ip> api.github.com
<ip> api.business.githubcopilot.com

IP можно взять из ping на хосте Windows.

5. Отключите агрессивный VPN / DNS-фильтрацию

Если у вас настроен ad-blocking DNS или фильтрующий VPN, он может блокировать запросы Copilot. В обсуждении один из пользователей решил проблему, просто отключив агрессивный DNS-блокировщик — Copilot Chat сразу перестал падать с ошибкой «remote host extension terminated unexpectedly».

Минимум, что стоит сделать:

  • временно отключить такой DNS/VPN и проверить Copilot;
  • добавить в белый список:
    • api.github.com
    • api.business.githubcopilot.com
    • прочие домены *.githubcopilot.com.

6. Обновите расширения и, в крайнем случае, VS Code

У нескольких пользователей проблема исчезла после простого обновления:

  • GitHub Copilot до актуальной версии;
  • GitHub Copilot Chat до актуальной версии.

Если ничего не помогает, один из вариантов — переустановить VS Code с чистым профилем. Перед этим лучше:

  • включить Settings Sync или сохранить settings.json вручную;
  • убедиться, что вы удалили кэш и глобальные хранилища (~/Library/Application Support/Code на macOS, %APPDATA%\Code на Windows).

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

Если кнопка «Sign in to GitHub.com» в интерфейсе Copilot Chat не реагирует, один из пользователей смог залогиниться так:

  1. Откройте командную палитру:
    Copilot: Sign in
    
  2. Пройдите авторизацию через открывшийся браузер.

После этого кнопка в чате перестала быть «мертвой».


Если после всех шагов Copilot всё равно не оживает, разработчики VS Code просят отправлять баг‑репорты с логами:

  • для проблем в VS Code и Copilot:
    https://github.com/microsoft/vscode-copilot-release/issues

  • для проблем в WSL/SSH/devcontainer:
    https://github.com/microsoft/vscode-remote-release/issues

К отчёту стоит приложить:

  • версию VS Code;
  • версии расширений GitHub Copilot и GitHub Copilot Chat;
  • тип среды (локально, WSL, SSH, devcontainer);
  • логи из панели Output для Copilot и Copilot Chat.

Читайте также