Перейти к содержанию

claude-code

Шлюз узнает, какой агент Claude Code прислал запрос

Claude News

Счётчик контекста в Claude Code оценивал ходы инструментов-советников примерно вдвое дороже, чем они весят на самом деле, и авто-сжатие срабатывало примерно на половине реального окна. В релизе v2.1.273 на Github счёт поправили, а заодно добавили пять служебных заголовков запроса для LLM-шлюзов.

Коротко

  • Anthropic добавила в Claude Code пять заголовков запроса, среди них x-claude-code-request-class и x-claude-code-agent-type; шлюз увидит их, только если выставить переменную CLAUDE_CODE_GATEWAY_HINT_HEADERS=1.
  • Закрыли две дыры в проверке прав: Bash-команды, которые анализатор не разбирает до конца, пропускали запрос под permissions.blockReadsOutsideWorkingDirectories, а сабшелл прятал опасный rm в режиме bypass.
  • Правку из 2.1.268 откатили, так что deny-правила Read и Edit снова не проверяются на неразбираемых строках вроде eval и env -C, зато time -p make build опять спрашивает разрешение вместо отказа.

Если вы не следили, зачем Claude Code вообще знать про шлюз: по описанию Amazon Web Services, Claude apps gateway запускается из того же бинаря claude командой claude gateway --config gateway.yaml, работает в серверном режиме и стоит между локальными клиентами и Amazon Bedrock, беря на себя доступ и учёт. По данным Gradually AI, предыдущий релиз v2.1.271 от 14 сентября добавил в ценовой блок шлюза множитель до 10 для внутреннего чарджбэка. Заголовки ложатся в эту же конструкцию.

Пять заголовков уходят в шлюз только с CLAUDE_CODE_GATEWAY_HINT_HEADERS=1

Список такой: x-claude-code-request-class, x-claude-code-agent-type, x-claude-code-prev-tool-durations, x-claude-code-compaction и x-claude-code-context-compacted. По умолчанию их нет вовсе. Выставляете переменную окружения, и каждый запрос уносит с собой класс запроса, тип агента, длительности предыдущих вызовов инструментов и признаки того, что контекст сжимался.

Шлюзу виден только HTTP-запрос: тело с промптом и заголовки. Примерно как наклейка на посылке, по которой курьер сортирует груз, не вскрывая коробку. По описанию Google Cloud Blog, идентичности клиента шлюз при этом не верит: почта и группы в метриках claude_code.token.usage берутся из подписанного токена сессии, а не из подставляемого клиентом OTEL_RESOURCE_ATTRIBUTES, а правила доступа из gateway.yaml перепроверяются на каждом вызове /v1/messages.

Рядом поменялась телеметрия: OTEL_LOG_TOOL_DETAILS=1 добавляет настоящие имена агентов, скиллов, плагинов и MCP-серверов в метрики стоимости и токенов. Ошибки 401 и 403 на Bedrock, Vertex и Foundry, а также 403 от шлюза приложений Claude, раньше советовали выполнить /login; сообщение стало называть конкретный ключ для обновления или отправлять к администратору шлюза.

Сабшелл прятал опасный rm в режиме bypass

Две правки по правам. Bash-команды, которые проверка разрешений не может разобрать целиком, под permissions.blockReadsOutsideWorkingDirectories проскакивали без запроса. Отдельно чинили случай, когда опасный rm внутри сабшелла не замечался в режиме bypass. И откатили изменение из 2.1.268, которое проверяло deny-правила Read и Edit на неразбираемых строках вроде eval и env -C.

Та же настройка blockReadsOutsideWorkingDirectories теперь честно работает с памятью: каталог памяти, выбранный настройками репозитория, не грузится в промпт, не вспоминается, не индексируется и не используется извлечением памяти. Скиллы, синхронизированные из claude.ai, после отключения Skills в организации оставались доступными, а уезжают в восстановимую корзину. И параметры allowManagedMcpServersOnly, deniedMcpServers, disableClaudeAiConnectors из MDM или managed-settings.json игнорировались, если рядом лежали серверные настройки.

/login стирал прежние размышления и заставлял переписывать весь кэш промпта

Команды /login, /upgrade и /extra-usage выбрасывали из разговора ранее накопленные размышления, и следующий запрос переписывал кэш промпта целиком. В длинных сессиях поправили и отзывчивость: прогресс хуков и активность субагентов перестали переобрабатывать весь разговор на каждое обновление.

Мелочи из того же списка: /tui отказывался перезапускаться из-за участника команды агентов, который уже закончил работу и не показывался в панели; сохранённые задачи из .claude/scheduled_tasks.json запускались в чужой сессии после копирования файла в другую папку, например в новый worktree; долгая сессия пересоздавала заглушку .git/info/exclude после удаления каталога .git; Read на macOS отказывался читать перетащенный скриншот с жалобой на изменившееся разрешение симлинка; символ «!» в начале строки терялся в shell-режиме, так что команды вида ! grep … теперь набираются.

Форк сессии из приложения Claude идёт фоновой задачей на вашем компьютере

Сессию, запущенную с claude --remote-control или через /remote-control, можно форкнуть прямо из приложения Claude, и форк пойдёт фоновой сессией на вашей машине. Клиентам Remote Control, подключённым к сессии в Claude Desktop, VS Code или JetBrains, отказывали в запросе занятости контекстного окна; это починили. Когда MCP-сервер отваливается посреди сессии и автопереподключение сдаётся, приходит уведомление со ссылкой на /mcp, и туда же отправляет сообщение об истёкшем входе в MCP-сервер.

Субагентов и фоновых агентов считали упавшими, а результат не доставляли, если в финальном потоковом ответе не было данных о токенах или id модели. Вывод SDK и --output-format stream-json терял остаток сообщений субагента и его финальный отчёт после перевода в фон, например через CLAUDE_AUTO_BACKGROUND_TASKS. Авто-режим останавливался ради подтверждения, когда инструмент Artifact загружал приложенный вами к чату файл в облачной или Remote Control сессии.

Чего в заметках нет: как именно шлюз должен реагировать на подсказки и в каком формате приходит x-claude-code-prev-tool-durations. Раз заголовки выключены по умолчанию, строить на них жёсткую логику шлюз не сможет, пока их не включит каждый клиент; на наш взгляд, флаг здесь выбран правильно, потому что служебные данные о сессии в чужой сервис лучше отправлять осознанно. Откат правки из 2.1.268 стоит держать в голове отдельно: удобство вернулось, а вместе с ним вернулась и дыра в проверке deny-правил на неразбираемых Bash-строках.

Когда вернётся серверный классификатор

Авто-режим на Bedrock, Vertex и Foundry переведён на локальный классификатор по умолчанию, и в заметках сказано, что так сделано пока. Срока, когда серверный классификатор платформы снова станет умолчанием, Anthropic не называет. Вернуть его можно переменной CLAUDE_CODE_AUTO_MODE_SERVER=1 и сравнить поведение на своих задачах. Заодно имеет смысл посмотреть на счётчик контекста: если авто-сжатие у вас срабатывало подозрительно рано, после правки оно должно дотягивать до полного окна.

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

  1. Плагины Claude Code теперь можно прогнать через тесты
  2. Claude Code 2.1.274 предупреждает, пока память не кончилась
  3. Claude Code выдаёт домены отдельно каждой команде
  4. В проекте без CLAUDE.md Claude Code 2.1.277 читает AGENTS.md
  5. Claude Code 2.1.268 синхронизирует тарифы шлюза
  6. Панель Claude Code выносится в отдельное окно

Комментарии

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.

Из Google мы используем только имя и аватар. Почту не сохраняем.