GitHub Copilot вставляет рекламу в pull-реквесты — затронуты 1,5 млн PR

Баг в Copilot Workspace добавлял спонсорские блоки прямо в diff-ревью. Microsoft отключила функцию через 6 часов после публичного скандала на Hacker News.

Обложка: GitHub Copilot вставляет рекламу в pull-реквесты — затронуты 1,5 млн PR

GitHub Copilot начал вписывать рекламные сообщения прямо в описания pull-реквестов — без ведома и согласия разработчиков. Рекламные вставки с пометкой COPILOT CODING AGENT TIPS уже обнаружены в более чем 1,5 млн PR на GitHub.

Проблему обнаружил мельбурнский разработчик Зак Мэнсон: коллега вызвал Copilot для исправления опечатки в PR, но ИИ заодно дописал в описание рекламу расширения Raycast. Тот же рекламный текст нашли более чем в 11 000 pull-реквестов на GitHub и в merge-реквестах на GitLab.

Коротко о главном

— GitHub Copilot вставляет рекламные «советы» в описания PR как обычный текст после скрытого HTML-маркера.

— Затронуты более 1,5 млн pull-реквестов на GitHub и merge-реквесты на GitLab.

— Продвигаются расширения из экосистемы Microsoft: Raycast, Slack, Teams, VS Code, JetBrains.

— Способа отключить вставки пока нет — Microsoft не комментирует.

Коллега вызвал Copilot, чтобы исправить опечатку в моём PR. Copilot исправил опечатку — и заодно отредактировал описание PR, вставив рекламу самого себя и Raycast.
Зак Мэнсонразработчик, Мельбурн

Как работает инъекция рекламы

Когда Copilot выполняет задачу в pull-реквесте, он добавляет в описание PR скрытый HTML-маркер <!-- START COPILOT CODING AGENT TIPS -->. Сам маркер не виден при просмотре — это обычный HTML-комментарий. А вот рекламный текст, который идёт сразу после него, отображается как часть описания PR и виден всем участникам.

Среди обнаруженных рекламных вставок — предложения запускать задачи агента Copilot из Slack, Teams, VS Code, Visual Studio, JetBrains IDE и Eclipse. Все продвигаемые продукты — часть экосистемы Microsoft или её партнёров.

Кто стоит за рекламой

На первый взгляд могло показаться, что рекламу вставляет Raycast — приложение для macOS и Windows с набором ИИ-инструментов, включая расширение для Copilot. Однако перечень продвигаемых сервисов (Slack, Teams, VS Code) и структура HTML-маркеров указывают на то, что «советы» встраиваются через сам механизм агента Copilot — то есть, судя по всему, за вставками стоит Microsoft.

Ни Raycast, ни Microsoft пока не прокомментировали ситуацию.

Как обнаружить и убрать рекламу из PR

Рекламные вставки можно найти по маркеру в описании PR. Откройте любой PR, отредактированный Copilot, и переключитесь в режим редактирования — вы увидите HTML-комментарий и следующий за ним промо-текст.

Для автоматического удаления можно настроить CI-проверку или pre-commit hook, который ищет строку COPILOT CODING AGENT TIPS в описаниях PR и удаляет блок от маркера до следующего раздела. На момент публикации Microsoft не предоставила штатного способа отключить «советы».

Частые вопросы
1
Какие продукты рекламирует Copilot в PR?

Расширение Raycast для агента Copilot, интеграции со Slack и Microsoft Teams, а также запуск агента из редакторов VS Code, Visual Studio, JetBrains IDE и Eclipse. Все упомянутые продукты — либо часть экосистемы Microsoft, либо её партнёры.

2
Можно ли отключить рекламные вставки?

На момент публикации штатного способа отключить «советы» нет. Можно вручную удалять текст из описаний PR, но при следующем вызове агента Copilot он может добавить рекламу снова. Как вариант — настроить CI-проверку или git hook для автоматического удаления по маркеру.

3
Затронуты ли только GitHub или другие платформы тоже?

Рекламные вставки зафиксированы как на GitHub, так и в merge-реквестах на GitLab. О масштабе проблемы на GitLab точных данных пока нет, но сам факт выхода за пределы GitHub говорит о системном характере вставок.

Выводы

Разработчики платят за Copilot подпиской ($19/мес за Individual, $39/мес за Business), но Microsoft дополнительно монетизирует их рабочий процесс, встраивая промо-тексты прямо в код-ревью. Пока компания не дала объяснений и не предложила способа отключить вставки — остаётся проверять описания PR вручную или автоматизировать удаление через CI.