# История сессий

> Как mmw-agent с вашего согласия загружает историю Claude Code и Codex, что никогда не покидает компьютер и как всё остановить.

mmw-agent умеет сохранять в MMW историю ваших сессий Claude Code и Codex. Это выключено, пока вы сами не разрешите в терминале.

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

1. как устроено согласие и почему его не может выдать модель;
2. что загружается, а что никогда не уходит с компьютера;
3. как агент докачивает данные после обрыва, какие квоты у тарифов и как всё остановить.

Загруженные сессии хранятся на сервере (в сжатом виде), но **поиск по ним и извлечение из них фактов пока не сделаны**. В результаты `search` сессии не попадают. Сегодня это архив вашей работы, а не источник ответов для агента.

## Согласие

1. Откройте терминал и выполните (с тем же колесом, что в конфигурации клиента):

   ```bash
   uvx --from https://app.mmwhub.ru/downloads/mmw-agent/mmw_agent-0.1.4-py3-none-any.whl mmw-agent consent
   ```

2. Агент покажет, что нашёл, и объяснит, что будет загружаться:

   ```text
   MMW нашёл на этом компьютере историю ИИ-сессий:
     claude-code     42 сессий,     18.3 МБ на диске
     codex            7 сессий,      2.1 МБ на диске

   Если вы разрешите, MMW загрузит эти сессии и все новые в вашу память MMW:
     - сообщения пользователя и ассистента, вызовы инструментов, результаты инструментов до 4 000 символов;
     - рассуждения модели, счётчики токенов и снимки файлов НЕ загружаются;
     - секреты (API-ключи, токены, пароли) заменяются на этом компьютере до отправки;
     - пути к файлам не передаются; остановить можно в любой момент командой `mmw-agent revoke`.

   Загрузить историю сессий в MMW? Введите «да», чтобы разрешить:
   ```

3. Введите `да` (или `yes`). Любой другой ответ означает отказ — ничего загружаться не будет.

4. Агент ответит «Согласие записано для: claude-code, codex. Синхронизация начнётся в течение минуты».

Что важно знать о согласии:

- **Его даёт только человек.** Команда работает лишь в интерактивном терминале. Если её запустить из скрипта или из-под модели, агент откажется. Инструмент `mmw_sync_status`, который видит модель, только читает состояние.
- **Оно касается найденных клиентов.** В квитанцию записываются клиенты, чьи сессии были на диске в момент согласия. Если вы позже начнёте пользоваться Codex, выполните `mmw-agent consent` ещё раз.
- **Оно хранится локально** в `~/.mmw/agent.json` (или в каталоге из `MMW_AGENT_HOME`) с правами 0600, а на сервере регистрируется устройство с квитанцией согласия. Без зарегистрированного устройства сервер не принимает данные.
- **Синхронизация идёт, пока работает агент**, то есть пока открыт клиент, который его запускает. Разово можно выполнить `mmw-agent sync`.

## Что загружается и что нет

Агент не отправляет файлы сессий как есть. Каждая строка разбирается и превращается в короткие события.

| Загружается | Не загружается никогда |
| --- | --- |
| Ваши сообщения и ответы ассистента (очень длинные сообщения обрезаются) | Рассуждения модели (thinking, reasoning) |
| Вызовы инструментов с аргументами | Системные и developer-промпты |
| Результаты инструментов — до 4 000 символов | Счётчики токенов, состояние интерфейса |
| Время событий | Снимки файлов |
| | Пути к файлам: источник обозначается хешем пути |

Где агент ищет сессии: `~/.claude/projects/*/*.jsonl` (Claude Code) и `~/.codex/sessions/**/*.jsonl` (Codex). Для поиска он читает только список файлов; содержимое читается лишь после согласия.

## Секреты вычищаются дважды

```text
  ваш компьютер                                   сервер MMW
  ─────────────                                   ──────────
  строка сессии → событие → вычистка секретов  →  повторная вычистка → сжатие → хранение
                            (те же правила)        (Memory Guard)
```

1. **На компьютере.** До отправки агент заменяет ключи API, токены, пароли, приватные ключи и пароли в строках подключения на заглушки вида `[REDACTED:тип:хеш]`. Правила те же, что у сервера: копия файла правил в агенте проверяется тестом на совпадение с серверной.
2. **На сервере.** Каждый принятый фрагмент ещё раз проходит через [Memory Guard](/memory/memory-guard/) перед сохранением.

Сам секрет нигде не хранится — только тип правила и короткий хеш, по которому можно понять, что в двух местах был один и тот же секрет.

## Надёжность: докачка после обрыва

Файлы сессий на вашем диске и есть очередь — агент ничего не буферизует отдельно. Сервер помнит, до какого байта он принял каждый файл (watermark). На каждом цикле агент спрашивает эту отметку и досылает недостающее.

- Пропала сеть или сервер перезапускался — следующий цикл увидит отметку и продолжит с неё. При ошибках пауза между попытками растёт до 5 минут.
- Сервер восстановили из резервной копии — отметка стала меньше, агент дошлёт разницу сам.
- На сервере временно мало места — сервер ничего не принимает, агент ждёт (до 5 минут между попытками) и продолжает позже. Ничего не теряется.
- Сессия ещё пишется — агент отправляет только законченные строки, остаток дошлёт в следующем цикле.

## Объём по тарифу

| Тариф | Объём истории | Глубина |
| --- | --- | --- |
| Free | 25 МБ | 7 дней |
| Starter | 100 МБ | 30 дней |
| Pro | 500 МБ | 90 дней |
| Enterprise и организации | 20 ГБ | вся история |

- Сначала загружаются самые свежие сессии: на ограниченном тарифе в архив попадает недавняя работа.
- Сессии старше глубины тарифа (по времени изменения файла) пропускаются; их число видно в `mmw_sync_status` как `skipped_by_plan_history`.
- Объём считается по очищенному тексту; на сервере он хранится сжатым.
- Когда объём закончился, агент останавливает загрузку и показывает подсказку: «Место для истории сессий по вашему тарифу закончилось. Полная история доступна на тарифе Enterprise.»

## Как проверить, что идёт загрузка

Спросите ассистента «покажи статус синхронизации MMW» — он вызовет `mmw_sync_status`:

```json
{
  "consent": { "granted": true, "clients": ["claude-code", "codex"], "granted_at": "2026-10-05T09:00:00+00:00" },
  "device_id": "dev-…",
  "last_cycle": {
    "state": "ok",
    "sources": 49,
    "chunks": 12,
    "bytes": 3145728,
    "local_redactions": 3,
    "skipped_by_plan_history": 0,
    "history_days": 90
  }
}
```

`local_redactions` — сколько секретов агент заменил на компьютере в этом цикле. Все состояния (`consent_required`, `offline`, `quota_exceeded`, `server_busy` и другие) описаны в [справочнике mmw_sync_status](/reference/mmw-sync-status/).

## Отозвать согласие

```bash
uvx --from https://app.mmwhub.ru/downloads/mmw-agent/mmw_agent-0.1.4-py3-none-any.whl mmw-agent revoke
```

- Локальная квитанция удаляется сразу — со следующего цикла агент ничего не загружает.
- Агент сообщает серверу, что устройство больше не зарегистрировано. Если сервер недоступен, вы увидите «Локальное согласие удалено; сервер не уведомлён» — загрузка всё равно остановлена; повторите команду позже, чтобы уведомить сервер.
- Отзыв останавливает загрузку, но не удаляет то, что уже загружено. Про удаление данных — в разделе [Данные и удаление](/account/data-and-deletion/).

## Что дальше
