Claude Code 2.1.317: запрос про email и отчёт о расходах

В Claude Code 2.1.317, вышедшем 3 ноября, вызов веб-инструмента или шелла сначала спрашивает подтверждение, если собирается отправить в сеть email вашего аккаунта. Если вас беспокоит, что агент подставляет адрес в исходящие запросы, обновитесь: запрос появится прямо перед таким вызовом. Пункт стоит в заметках к релизу на GitHub.
В октябре пользователь обвинил Claude Code в том, что агент вставлял его адрес в исходящие HTTP-запросы. Опирался он на ответ самого Claude: по словам автора, модель сообщила, что за месяц поделилась его email больше 10 раз, в том числе с SEC. Новая проверка, судя по формулировке в заметках, относится именно к вызовам веб-инструментов и шелла, которые отправляют адрес аккаунта в сеть.
Откуда агент вообще знает адрес, разобрано в issue на GitHub. Его автор, изучив бандл версии 2.1.220, утверждает, что Claude Code в каждой сессии добавляет в системный промпт блок «# userEmail The user's email address is…» и берёт адрес из ~/.claude.json, из поля oauthAccount.emailAddress. Поддерживаемого способа это выключить, по его словам, нет: IS_DEMO=1 прячет email только из шапки и вывода /status, а у соседнего поля claudeMd выключатель claudemd_disabled есть, у email его нет. Автор issue добавляет, что ещё четверо пользователей независимо друг от друга декомпилировали бандл, чтобы найти это поведение.
Хуки, которые не пропускают при сбое
В Agent SDK у колбэков хуков появился режим onFailure: "block": если колбэк падает, действие блокируется, а не выполняется. Тем, кто строит на хуках проверки перед вызовами инструментов, его стоит включить, иначе ошибка в самом колбэке по-прежнему пропускает действие.
Рядом ещё несколько правок того же рода. /schedule предупреждает, когда новая облачная задача по расписанию получает коннекторы, о которых вы не просили, и подсказывает, как их убрать. Хосты Remote Control и SDK перестали предлагать «don't ask again» для вызовов инструментов из модов. А если проверка авто-режима не дала ответа по вызову инструмента у сабагента, в главном окне появится уведомление: раньше там не показывалось ничего.
Расходы и телеметрия для админов
В admin API шлюза Claude apps появился отчёт о расходах, GET /v1/organizations/analytics/cost: он отдаёт прошлые траты за выбранный диапазон дат целиком, по разработчику, по дню или по группе IdP. Для группировки по IdP шлюзы с заданным admin: ежедневно записывают группы каждого разработчика и хранят записи столько, сколько указано в admin.identity_retention_days.
В метрики, события и спаны OTel добавлены атрибуты anthropic.plan, anthropic.seat_type, anthropic.provider и anthropic.custom_base_url. Экспорт OpenTelemetry через прокси, который не отвечает, теперь обрывается через 10 секунд, а через OTEL_EXPORTER_OTLP_TIMEOUT срок можно поднять до 30. В самом шлюзе исправлены две ошибки: строка статуса и /usage показывали личный лимит разработчика израсходованным на 100%, когда кончался общий бюджет его группы, а ошибка Bedrock «Input is too long.» пряталась за «upstream rejected the request», и сессия падала на каждом ходу вместо того, чтобы сжать контекст.
Что поменялось в claude -p
Скрипты, которые смотрят на код выхода, получат другой результат при сбоях записи. Если из-за полного диска или квоты терялась запись транскрипта или ~/.claude.json, claude -p раньше завершался с 0, а теперь печатает ошибку и в выводе text и json выходит с 1. Переполненные NFS-экспорты при этом могут остаться незамеченными.
Два изменения поведения стоит учесть тем, кто полагался на старое. Read при повторном чтении неизменённого файла отдаёт его содержимое целиком вместо заглушки «file unchanged since your last Read». Сабагенты и участники команды на другой модели, чем основной разговор, берут сохранённый уровень effort этой модели или её значение по умолчанию, а не уровень сессии. Заодно исправлено, что Claude считал полными результаты Grep и Glob, когда поиск упирался в лимит времени.
Внутри облачной сессии или сессии на self-hosted runner запущенный claude -p раньше делил с ней ID: писал в её транскрипт, а после перезапуска мог подняться не тот разговор. В 2.1.317 это исправлено, как и то, что такой запуск генерировал собственный заголовок и отправлял его в эту сессию. Если ваша схема на runner держалась на общем транскрипте, выставьте CLAUDE_CODE_DISABLE_NESTED_SESSION_ID=1, и claude -p снова будет работать с ID и транскриптом родительской сессии, как в прежних версиях.
Дальше
Anthropicразбор
API Claude перестал гонять всю переписку на каждом ходу, Видео
Медианный запрос в длинном разговоре похудел примерно с 800 КБ до 1,8 КБ, когда Anthropic подключила к Messages API треды сообщений. Токенов Claude читает столько же, выигрыш только во времени до начала ответа. Время до первого ответа вам в агентах мешает больше или расход токенов?
Читайте также
- Claude Code 2.1.316: fast mode для Opus 4.8 уйдёт 30 ноября
- Пользователь: Claude Code отправлял его email наружу
- Claude Code 2.1.314: запрет записи, группы IdP и сжатие
- Claude Code 2.1.311 разрешил агенту rm -rf ~ по переменной
- Claude Code 2.1.309 запер стартовые файлы шелла в песочнице
- Claude Code 2.1.282 не даст репозиторию включить телеметрию
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

