Security Blog

Вся отрасль только что согласилась с тем, что агент не должен видеть Ваши ключи. Прячут их не там.

#315

October 2, 2026 · By Marketing team

← All posts

За одну неделю Claude Code, Hermes и Codex выпустили исправления, не позволяющие агентам видеть необработанные учётные данные. Сходящиеся патчи — это не архитектура: ключи вообще не должны храниться в среде исполнения агента.

На этой неделе Anthropic добавила в журнал изменений Claude Code неприметную строку: "Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode" [1]. Если говорить прямо — когда Claude Code работал в headless-режиме (так он запускается в CI и автоматизированных конвейерах агентов), инструменты аутентификации, которые должны были оставаться скрытыми, оказывались доступны модели: ИИ видела названия auth-инструментов, их параметры и потенциально могла обращаться к ним. В самом используемом в мире кодовом агенте — 133k звёзд — слой учётных данных утекал туда, где Вы менее всего этого хотите: в собственный контекст модели.

Проблему устранили. Но само исправление — не главная новость. Главная — почему каждая серьёзная среда исполнения агентов внезапно ведёт одну и ту же войну.

Три среды исполнения, одна неделя, один и тот же инстинкт

Посмотрите, что вышло в пределах одного 24-часового окна:

  • Claude Code закрыла описанную выше утечку auth-stub и ужесточила проверку аутентификации MCP [1].
  • Hermes (v0.17.0) добавила «Managed Scope» — закреплённые администратором и неизменяемые пользователем секреты, зафиксированные на уровне файловой системы так, что оператор агента не может их переопределить, — а также удаление секретов из отладочных дампов и блокировку конфигураций MCP, похожих на каналы эксфильтрации, до их запуска [2].
  • Codex (v0.141.0) обернул трафик удалённого выполнения в зашифрованные каналы Noise и начал маршрутизировать плагины по режиму их аутентификации [3].

Три конкурента, три подхода, один общий вывод: секретами должна управлять среда исполнения, и агент никогда не должен видеть необработанные ключи. Когда конкуренты сходятся к одному и тому же в течение одной недели — это не мода. Это категория наконец признаёт своё назначение.

Следующая проблема — разрастание учётных данных

Вот в чём загвоздка. Каждое из этих исправлений живёт внутри среды исполнения. И ошибка Claude Code это подтверждает: когда аутентификация живёт в среде исполнения, вплотную к модели, «агент никогда её не увидит» перестаёт быть фактом и становится свойством, которое приходится постоянно поддерживать инженерными средствами — и иногда терять, в headless-режиме, где за этим никто не следит. Объявить это свойство один раз недостаточно. Его приходится защищать, релиз за релизом.

Но более глубокая проблема — не в отдельной утечке, а в том, что происходит, когда каждая среда исполнения, каждый вендор и каждый сценарий использования выпускает своё решение. В итоге у Вас хранилище внутри Claude Code, хранилище внутри Hermes, хранилище внутри Codex, пул OAuth здесь, файл секретов там — отдельное хранилище учётных данных для каждого запускаемого инструмента. Это и есть разрастание учётных данных, и это следующая проблема, а не решённая.

Разрастание — это отказ даже тогда, когда ни одно из хранилищ не утекает. Ваши секреты копируются в каждое из них, чтобы оно работало, — больше копий, больше мест, откуда их можно украсть. Ротацию приходится выполнять N раз вручную, и именно тот, о котором Вы забыли, становится причиной инцидента. И никто не может ответить на единственный действительно важный вопрос — какой агент использовал какой ключ, против чего и когда, — потому что ответ разбросан по дюжине хранилищ, которые не общаются друг с другом. Нельзя поднимать новое хранилище под каждого вендора и каждый рабочий процесс. Это не масштабируется. Именно это и ломается.

Ключи вообще не должны находиться в среде исполнения

Исправление, которое не придётся выпускать, — то, при котором агент изначально не владеет учётными данными. Разместите их в едином контуре доверия вне любой среды исполнения — не хранилище на каждого вендора, а одно под всеми ними. Агент — в Claude Code, в Codex, в Hermes, неважно — запрашивает одно именованное действие и получает ограниченный по области действия эфемерный учётный токен, выданный именно под него, полученный в реальном времени и уничтоженный после использования. В контексте модели нет auth-stub, который можно случайно раскрыть, потому что учётных данных в среде исполнения никогда не было. Нет и разрастания, потому что вместо хранилища на каждый инструмент есть одно — ротация один раз, а не N. И каждый доступ попадает в единый журнал аудита, а не рассеивается по дюжине хранилищ, неспособных ответить, кто и чем пользовался. (Не хранить секрет в том месте, где выполняется код, — почти на вершине правил, которым должен следовать инструмент для работы с учётными данными — отрасль только что потратила неделю, чтобы это обнаружить.)

И это именно та часть, которая является границей безопасности, а не удобством: учётные данные не могут находиться в одной системе с агентом. Совместите их — и они получат общую зону поражения: промпт-инъекция, отравленный MCP-сервер, общий отладочный дамп, следующая ошибка auth-stub — и всё, что достигает агента, достигает вместе с ним и ключей. Поэтому сама видимость секрета уже является инцидентом: в тот момент, когда секрет оказывается там, где агент может его увидеть, Вы считаете его уже скомпрометированным и ротируете — так, как каждая аккуратная команда поступила с тем auth-stub в Claude Code в день его выпуска. Держите учётные данные на расстоянии вытянутой руки, в системе, которую агент может только запрашивать, — никогда читать, никогда хранить, — и полностью скомпрометированный агент всё равно не сможет эксфильтрировать то, что никогда не было в его досягаемости. Он может запросить действие. Он не может унести ключ. Дистанция и есть защита; хранилище в том же процессе её не имеет ни за какую цену.

Эту границу проводит Clavitor. Вся область только что доказала принцип — агент не должен видеть ключи. Мы лишь считаем, что Вам не следует доказывать его заново внутри каждой среды исполнения, которую Вы используете, и что хранилище Ваших ключей не должно быть тем самым компонентом, который атакующий только что скомпрометировал.

Отдадим должное командам сред исполнения: закреплённые администратором секреты, зашифрованные реле, отказоустойчивые по умолчанию настройки — это настоящая, качественная инженерная работа. Но еженедельное исправление утечки, которая продолжает появляться, — это не архитектура, а симптом. Архитектура — это когда ключам нечему утекать.

Когда три конкурента зашивают одну и ту же рану в одну и ту же неделю, рана — это дизайн. Агент не должен видеть Ваши ключи — поэтому перестаньте хранить их там, где он их видит.

Clavitor (@clavitorai) — хранилище учётных данных, созданное для ИИ-агентов и против них. clavitor.ai

Источники

[1] Claude Code v2.1.183 — "Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode" — https://github.com/anthropics/claude-code/releases/tag/v2.1.183

[2] Hermes Agent v0.17.0 — Managed Scope (закреплённые администратором секреты), удаление секретов, блокировка конфигураций для эксфильтрации — https://github.com/NousResearch/hermes-agent/releases

[3] OpenAI Codex v0.141.0 — зашифрованные релейные каналы Noise, маршрутизация плагинов по режиму аутентификации — https://github.com/openai/codex/releases