Безопасность · OpenClaw

Отравление памяти в OpenClaw: что закрыто, а что осталось на владельце

Проверим, как OpenClaw различает доверенные и внешние данные, и настроим исключения сессий и удаление памяти.

· 3 мин чтения

Коротко

  • Трекер #7707 закрыт как not_planned: настраиваемые уровни доверия, сроки хранения и вес записи не добавлены.
  • Memory Core уже различает owner, agent, untrusted и system, но происхождение каждой записи покрыто не везде.
  • Политика допуска и memory forget не закрывают прямые записи в файлы памяти.

Сверено с документацией OpenClaw 2026.10.7, 25 октября 2026.

Внешний контент может попасть в память агента через сессию или ответ инструмента. Запрос на теги доверия закрыли без реализации. В OpenClaw 2026.10.7 есть происхождение памяти, политика допуска и удаление по сессии.

Что именно агент запоминает

Memory Core разделяет память на уровни. AGENTS.md пишет человек. MEMORY.md и USER.md заполняет консолидация в фазе dreaming или прямой запрос владельца. Дневные заметки и транскрипты агент записывает во время работы.

Каждый элемент индекса получает класс происхождения: owner, agent, untrusted или system. Внешние данные, ответы инструментов и сообщения участников групповых чатов относятся к untrusted. Неопределённое происхождение не превращается в owner.

Результат инструмента из сети помечает весь текущий ход как заражённый. Последующие ответы агента получают класс untrusted, даже внутри хода владельца. Следующее сообщение пользователя снимает эту метку.

Защита держится на объявлении источника инструментом. Локальное чтение файла не заражает ход. Покрытие зависит от инструментов, которые объявляют сетевой результат.

Разделяем память по источникам

Политика допуска исключает подходящие сессии до чтения транскрипта. Правило действует на автоматическое добавление данных в фазе dreaming и session-backfill, но не на сырое индексирование, прямые записи и перехваты сессий.

{
  plugins: {
    entries: {
      "memory-core": {
        config: {
          memoryPolicy: {
            excludeSessions: {
              hookExternalContentSources: ["gmail"],
            },
          },
        },
      },
    },
  },
}

IMAP использует точный источник email, перехваты Gmail используют gmail. Универсальные вебхуки используют webhook. Чтобы исключить IMAP и Gmail, добавьте оба значения.

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

Исключённая сессия всё ещё может изменить MEMORY.md, USER.md или другой файл рабочей области. Ограничьте соответствующие права на файлы, команды и внешние интеграции. Политика допуска не заменяет права доступа.

Удаление по происхождению

Для сессий Memory Core хранит происхождение из исходной сессии. Оно связывает записанные элементы с этой сессией. При консолидации, слиянии и замене записей происхождение переносится к сохранившейся записи.

openclaw memory forget удаляет отслеживаемые записи и связанные артефакты выбранных сессий. Команда сразу удаляет данные без дополнительного подтверждения. Сначала запустите её с --dry-run.

openclaw sessions --agent <agent-id> --limit all --json
openclaw memory forget --agent <agent-id> --session <id-or-key> --dry-run --json
openclaw memory forget --agent <agent-id> --session <id-or-key> --json

В отчёте проверьте sessionResolutions, entryKeys, mixedLineageEntryKeys и artifacts. Отдельно изучите curatedWrites и untargetableEntryKeys. Полный перечень оставшихся данных они не дают.

Рукописные заметки, прямые правки агента и записи, созданные до включения происхождения, могут не иметь источника. untargetableEntryKeys перечисляет маркеры продвижения без источников, но не всю непрослеживаемую прозу. Копии вне хранилищ памяти команда также не удаляет.

Что проверить у себя

  1. Проверьте настройку plugins.entries для memory-core и настройки агентов.
  2. Добавьте точные источники внешних сессий в hookExternalContentSources. Для IMAP нужен email, для Gmail gmail, для вебхуков webhook.
  3. Проверьте права на файлы, команды и внешние интеграции у агентов, которым не нужна запись в MEMORY.md и USER.md.
  4. Изучите сторонние плагины и инструменты, а также доступные им файлы памяти.
  5. Выполните openclaw sessions --agent <agent-id> --limit all --json, затем openclaw memory forget --agent <agent-id> --session <id-or-key> --dry-run --json.
  6. Изучите entryKeys, mixedLineageEntryKeys, curatedWrites, untargetableEntryKeys и artifacts. Удалите сессию командой без --dry-run только после проверки отчёта.
  7. Повторите openclaw memory forget --agent <agent-id> --session <id-or-key> --dry-run --json, чтобы проверить оставшиеся артефакты.