Claude Code раздавал сайтам email аккаунта в User-Agent — что делать

Модель вписывала email пользователя в заголовки запросов к сторонним сайтам; исправление обещают на следующей неделе.

Обложка: Claude Code раздавал сайтам email аккаунта в User-Agent — что делать

Claude Code, консольный кодинг-агент Anthropic, в части сессий подставлял email аккаунта в заголовок User-Agent HTTP-запросов, которые модель сама писала через curl и скрипты, и этот адрес получали сторонние сайты. Об этом 5 ноября сообщил в issue 107757 на GitHub пользователь Taylor Edwards: по его словам, после этого он получает десятки мошеннических писем в день. Утечку подтвердила Лидия Халли (Lydia Hallie) из команды Claude Code: адрес уберут из контекста модели в следующем релизе, который ожидается в начале следующей недели.

Если вы работаете в Claude Code под своим аккаунтом и агент ходил в сеть сам, ваш email мог оказаться в логах API, сервисов и сайтов, к которым он обращался, вместе с названием проекта. Исправления в стабильной ветке пока нет, а временная защита в свежих версиях, по документации самой Anthropic, закрывает только часть сценариев. Ниже разбираем, как это устроено, что уже выпущено и как проверить свои сессии.

Ключевые выводы
  • Источник утечки: в контекст модели для вошедших пользователей добавили email аккаунта, и Claude иногда вписывал его в User-Agent как «контактный адрес».
  • Anthropic обещает убрать email из контекста в следующем релизе, ожидаемом в начале недели после 6 ноября; последняя версия на 7 ноября — 2.1.319, в её списке изменений про email ничего нет.
  • Временная мера — встроенный мод cc-plugin-privacy в версиях 2.1.317 и новее; стабильный канал обновлений на 6 ноября стоял на 2.1.311, где мода нет.
  • Мод не проверяет WebFetch, WebSearch, MCP-инструменты и скрипты, в которые адрес уже вписан; трое пользователей сообщили в issue, что на 2.1.317–2.1.319 он не срабатывает и в документированном случае.
  • Проверить прошлые сессии можно поиском своего адреса в транскриптах ~/.claude/projects: один из пользователей нашёл 53 таких запроса в 8 сессиях с 9 августа по 1 ноября 2026 года.

Как email попадал в User-Agent?

Через контекст модели. Лидия Халли объяснила в обсуждении на Hacker News: пользователи жаловались, что Claude придумывает имена для тегов вроде @author, потому что ничего не знает об аккаунте. Тогда команда добавила email вошедшего пользователя в контекст, который Claude Code передаёт модели. Когда Claude сам составлял команду, например вызов curl, он иногда ставил этот адрес в User-Agent как контактный: некоторые сайты просят агентов указывать контакт, и модель брала тот адрес, что был у неё под рукой.

Такие просьбы действительно встречаются. Участники обсуждения приводят в пример EDGAR, базу отчётности Комиссии по ценным бумагам США: её документация просит автоматические клиенты объявлять User-Agent и в примере показывает заголовок с названием компании и контактным email. Модель, которая видит такое требование в документации и знает email пользователя, выполняет его буквально, хотя пользователь об этом не просил.

Типичный запрос из транскриптов, который привёл в issue пользователь mkubenka (данные заменены им самим):

			curl -sf -A "<project-name>-site-build/1.0 (<account email>)" "https://<public geocoding API>/search?q=<address query>"
		

Второй его пример — Python-скрипт, который модель сначала записала через Edit, а потом запустила: в нём заголовок User-Agent с адресом в виде «mailto:». По наблюдению mkubenka, вместе с адресом сторонний сервис получает и описательное имя клиента, которое модель берёт из сессии: название проекта, клиента или задачи. В его случае один запрос передал геосервису название проекта, email и адрес из поискового запроса.

Сколько это продолжалось и кого задело?

Точных данных Anthropic не публиковала: ни с какой версии email попадал в контекст, ни сколько пользователей затронуто. Разработчик Anthropic под ником mpoteat, на чей комментарий сослалась Халли, написал на Hacker News, что команда узнала о проблеме «несколько дней назад», когда о ней заговорили на Reddit. Тред на Hacker News к вечеру 7 ноября набрал 1585 баллов, под issue больше 100 комментариев.

Косвенную оценку дают сами пользователи. Автор issue работал на версии 2.1.318 под macOS. Пользователь morsik попросил Claude просканировать свои транскрипты и получил 53 вызова с его адресом в User-Agent в 8 сессиях с 9 августа по 1 ноября 2026 года; почти все — из субагентов, которые сами писали curl -A, а не из встроенного WebFetch. Это самоотчёт одного пользователя, а не замер Anthropic, но он показывает, что проблема старше нескольких дней.

Задеты те, кто работает в Claude Code, войдя в аккаунт (Халли говорит о signed-in users), и даёт агенту выполнять сетевые команды. Утечка идёт на те сайты и API, к которым агент обращался, а не во все подряд: morsik отмечает, что в его случае это были сервисы, где он и так зарегистрирован.

Что Anthropic уже выпустила и что обещает?

Окончательное исправление — убрать email из контекста модели — Лидия Халли обещала в следующем релизе и пообещала сообщить о выходе в треде Hacker News. На вечер 7 ноября последняя версия Claude Code — 2.1.319 от 6 ноября, и в её списке изменений нет ни email, ни User-Agent.

Временная мера — встроенный мод cc-plugin-privacy, который есть в версиях 2.1.317 и новее и включён по умолчанию. Халли описала его так: мод спрашивает пользователя, прежде чем Claude выполнит веб-вызов или curl-подобную команду с вашим email. При этом она оговорилась, что мод закрывает не все случаи, например скрипт, который Claude пишет и запускает сам. Стабильный канал обновлений, по её словам, на 6 ноября всё ещё стоял на 2.1.311, где мода нет.

README мода, который Anthropic выложила в репозиторий 6 ноября, описывает его скромнее и немного иначе. Мод отклоняет без вопроса пользователю вызов Bash, PowerShell или Monitor, если в нём одновременно есть адрес аккаунта и признак User-Agent: слово User-Agent, флаги curl -A, wget -U и их аналоги. Сами разработчики называют его «любезностью, а не границей» и перечисляют, что проходит мимо:

  • адрес без явного User-Agent: в URL, теле запроса, curl -u, заголовке From;
  • вызовы WebFetch и WebSearch, а также MCP-инструменты — их мод не проверяет;
  • адрес, вычисленный при запуске (например, из git config), в переменной, в файле или в скрипте, который модель написала заранее;
  • клиенты, которых нет в списке, и кодировки сложнее однократного percent-encoding.

Есть и вопрос, работает ли мод вообще. Трое пользователей независимо выложили в issue проверку безопасной командой вида echo 'User-Agent: test АДРЕС' > /dev/null, которая по описанию мода должна отклоняться: на macOS с версиями 2.1.317 и 2.1.318, на Windows 11 с 2.1.318 и снова на macOS с 2.1.319 команда выполнялась без отказа, хотя мод значился загруженным. Ответа команды на эти отчёты в issue на вечер 7 ноября нет.

Что сделать пользователю Claude Code сейчас?

Обновиться и не полагаться на мод как на единственную защиту. Порядок действий по сведениям Anthropic и проверкам из issue:

  1. Проверьте версию командой claude --version. Если она ниже 2.1.317, обновитесь через claude update. На стабильном канале версии 2.1.317 пока может не быть: Anthropic советует перейти на 2.1.317 или новее, а канал задаётся настройкой autoUpdatesChannel в settings.json.
  2. Убедитесь, что мод не выключен: он виден в /plugins как cc-plugin-privacy@builtin. Настройки репозитория его не отключают; по README выключить его могут пользовательские, переданные через --settings или управляемые настройки, серверный переключатель Anthropic, хук установленного плагина, который переопределит отказ, и сессия, где модуль хуков не загрузился.
  3. Не давайте агенту ходить в сеть без подтверждения, пока не выйдет релиз без email в контексте: оставьте сетевые команды curl, wget и запуск скриптов в режиме вопроса, а не в списке разрешённых.
  4. Найдите в транскриптах прошлые запросы со своим адресом (команда ниже) и посмотрите, каким сайтам он ушёл. Если среди них есть незнакомые, учитывайте риск целевого фишинга со ссылками на ваши реальные проекты.
  5. После выхода обещанного релиза обновитесь ещё раз и проверьте его список изменений.

Транскрипты сессий Claude Code лежат в ~/.claude/projects в виде файлов .jsonl; именно так проверяли свои сессии пользователи в issue. Адрес аккаунта хранится в ~/.claude.json в поле oauthAccount.emailAddress. Поиск фрагментов, где адрес (ищется как буквальная строка, без регулярных выражений) соседствует с User-Agent или флагами curl -A и wget -U:

			EMAIL=$(jq -r .oauthAccount.emailAddress ~/.claude.json)
# файлы сессий, где адрес встречается
grep -rlF --include='*.jsonl' -e "$EMAIL" ~/.claude/projects | wc -l
# фрагменты, где адрес стоит рядом с User-Agent, curl -A или wget -U
grep -rlF --include='*.jsonl' -e "$EMAIL" ~/.claude/projects \
  | xargs -r -d '\n' grep -hoiE '(user-agent|curl .{0,80}-A |wget .{0,80}-U ).{0,200}' \
  | grep -F -e "$EMAIL" | sort -u | head -50
		

Упоминаний адреса в транскриптах будет много и без утечки: он лежит в самом контексте. Значение имеют только те строки, где он стоит в заголовке исходящего запроса; в выводе второй команды смотрите на домены после адреса.

Пользователь KardKuro в issue описал временную защиту: собственный хук PreToolUse с тем же правилом (адрес плюс слово User-Agent или флаги curl -A и wget -U), который проверяет ещё и Write и Edit, чтобы адрес не попал в скрипт до запуска. Это самодельное решение пользователя, а не рекомендация Anthropic.

Почему одного удаления email может не хватить?

Удаление адреса из контекста убирает личность, но не привычку модели подписывать запросы. mkubenka предложил в issue, чтобы для запросов, которые модель составляет сама, по умолчанию использовался обезличенный User-Agent вида claude-code/<версия>, а описательное имя или контакт — только по просьбе пользователя. Anthropic на это предложение пока не ответила. По нашей оценке, до такого изменения стоит считать, что название проекта в User-Agent может уходить и после патча: сайты видят его вместе с IP.

Для Anthropic это не первая тема о том, что Claude Code делает за спиной пользователя: недавно мы писали, как новый инструмент раскрывает внутреннюю кухню Claude Code и как компания удешевила сводки фоновых субагентов. Соседние агенты тоже активно выпускают обновления: свежие изменения OpenCode и других инструментов собраны в обзоре кодинг-агентов от 6 ноября.

Следующая точка проверки — релиз Claude Code после 2.1.319: в его списке изменений должно быть удаление email из контекста. Отдельно стоит следить за ответом команды на отчёты о том, что мод cc-plugin-privacy не срабатывает.

Источники: GitHub: issue 107757 «Privacy violation in User-Agent header», Hacker News: ответ Лидии Халли из команды Claude Code, Hacker News: обсуждение «Claude Code sends your email address to websites», README мода privacy в репозитории Claude Code, Релизы Claude Code на GitHub

Изображение на обложке: логотип: Anthropic