Перейти к содержимому

Memory Guard — защитный слой сервера MMW, через который проходит каждая запись перед сохранением. У него две задачи: отклонять попытки «отравить» память агента и вычищать секреты.

Из этой страницы вы узнаете:

  1. какие записи отклоняются целиком и что при этом видит агент;
  2. какие секреты заменяются заглушками и как выглядит заглушка;
  3. где ещё работают те же правила.

Память читают агенты, поэтому запись может стать способом подбросить инструкцию будущим сессиям. Memory Guard отклоняет текст записи, если он похож на такую попытку:

  • просьбы игнорировать предыдущие инструкции или прежний контекст;
  • попытки переопределить системный промпт;
  • указания выгрузить данные на внешний адрес;
  • указания отправить кому-то пароли, секреты или токены.

Отклоняется и пустая запись.

Что видит агент — ошибку инструмента remember:

Memory rejected by Security Guard: Memory poisoning detected: matching pattern '…'

Запись не сохраняется. Если вам действительно нужно зафиксировать такой случай (например, «в задаче была попытка prompt injection»), опишите его своими словами, не цитируя саму вредоносную фразу.

Секрет в записи не приводит к отказу: запись сохраняется, но сам секрет заменяется заглушкой. Проверяются все сохраняемые поля: content, source, source_id, source_hash, source_revision, fact_key.

Что распознаётся (по категориям):

КатегорияПримеры
Приватные ключиБлоки PEM, ключи PuTTY, в том числе обрезанные
Строки подключенияПароль в URI базы данных и в адресах вида пользователь:пароль@хост — маскируется только пароль
Заголовки авторизацииAuthorization: Bearer …, Basic …
Ключи LLM-провайдеровOpenAI, Anthropic, Groq, xAI, Hugging Face, Replicate и похожие
Системы разработкиТокены GitHub, GitLab, Atlassian, npm, PyPI
ОблакаAWS, Google Cloud, Azure, DigitalOcean, HashiCorp Vault, Yandex Cloud
Сообщения и рассылкиSlack, Telegram-боты, SendGrid, Twilio
Платежи и SaaSStripe, Shopify, Linear, Notion
Ключи MMWКлючи формата mmw_…
Подписанные токеныJWT
Присваиванияpassword=…, API_KEY: …, «пароль: …» и похожие пары «имя секрета — значение»

Заглушка выглядит так:

[REDACTED:<правило>:<8 символов хеша>]

Пример. Агент пытается сохранить:

Тестовая база: postgres://app:<пароль>@db.internal:5432/app

В памяти окажется:

Тестовая база: postgres://app:[REDACTED:db_uri_password:5f1e9c02]@db.internal:5432/app
  • remember отвечает как обычно — агент не получает ошибку;
  • в search агент увидит текст с заглушкой;
  • хеш — первые 8 символов SHA-256 от значения: по нему можно понять, что в двух записях был один и тот же секрет, но восстановить сам секрет нельзя;
  • в журнал операций попадает только то, какие правила сработали и сколько раз, без значений и хешей.

Чтобы снизить ложные срабатывания, не маскируются значения, похожие на код и идентификаторы (например, config.api_key или имя переменной), явные заглушки в примерах адресов и уже вычищенный текст.

  • mmw-agent на вашем компьютере — та же копия правил вычищает историю сессий до отправки. Тест проверяет, что правила агента совпадают с серверными. См. История сессий.
  • Сервер при приёме истории сессий — каждый фрагмент вычищается ещё раз.
  • Telegram-бот — заметки сохраняются тем же remember.
  • Архивариус — его ответ вычищается, прежде чем попасть в fact_key.