# mmw_sync_status

> Локальный инструмент mmw-agent — состояние согласия и последнего цикла синхронизации истории сессий.

Из этой страницы вы узнаете, что показывает `mmw_sync_status`, как читать каждое состояние синхронизации и что делать, если загрузка истории сессий остановилась.

Сквозной пример: разработчик дал согласие на загрузку сессий Claude Code и спрашивает агента «загружаются ли мои сессии в MMW?».

## Назначение

`mmw_sync_status` — единственный инструмент, который отвечает **локально**, без обращения к серверу MMW. Его добавляет локальный агент [mmw-agent](/agent/overview/) (версия 0.1.4) к списку серверных инструментов. Инструмент показывает:

- дал ли человек согласие на загрузку истории локальных ИИ-сессий;
- идентификатор устройства;
- результат последнего цикла синхронизации.

Инструмент только читает. **Выдать согласие через него нельзя** — согласие даёт человек в терминале командой `mmw-agent consent`. В клиентах без агента (claude.ai, ChatGPT, прямое HTTP-подключение) этого инструмента нет.

Аннотации: `readOnlyHint: true`, `idempotentHint: true`.

## Параметры

Нет. Схема входа — пустой объект.

## Ответ

Текстовый блок с JSON:

| Поле | Описание |
| --- | --- |
| `consent` | `null`, если согласия нет. Иначе объект: `granted` (`true`), `clients` (например, `["claude-code", "codex"]`), `granted_at` (время согласия). |
| `device_id` | Идентификатор этого компьютера вида `dev-…`; `null`, если ещё не создан. |
| `last_cycle` | Результат последнего цикла синхронизации (см. ниже). |

### Состояния `last_cycle.state`

| Состояние | Что значит | Что делать |
| --- | --- | --- |
| `idle` | Агент только запустился, цикл ещё не прошёл. | Подождать: цикл идёт раз в 15 секунд по умолчанию. |
| `consent_required` | Согласия нет. В поле `discovered` — сколько сессий найдено на компьютере, в `hint` — подсказка. | Выполнить `mmw-agent consent` в терминале, если хотите загружать историю. |
| `ok` | Цикл прошёл успешно. | Ничего. |
| `quota_exceeded` | Закончилось место для истории сессий по тарифу; есть `used_bytes` и `max_bytes`. | Сменить тариф. Полная история — на Enterprise. |
| `server_busy` | Сервер временно не принимает историю (мало места). Ничего не потеряно. | Ничего: агент повторит попытку позже сам. |
| `offline` | Сервер недоступен; в `error` — причина. | Проверить сеть. Агент докачает всё после восстановления. |
| `unsupported` | На сервере нет синхронизации сессий. | Проверить `MMW_ENDPOINT`. |
| `error` | Непредвиденная ошибка цикла; в `error` — тип и текст. | Посмотреть `mmw-agent status`, написать в поддержку. |

Поля успешного цикла (`ok`): `sources` (сколько сессий обработано), `chunks` и `bytes` (сколько отправлено), `local_redactions` (сколько секретов вычищено на компьютере), `skipped_by_plan_history` (сессии старше срока хранения по тарифу), `conflicts`, `truncated`, `plan`, `history_days`, `at` (время цикла).

## Пример

Вызов без аргументов:

```json title="arguments"
{}
```

```json
{
  "consent": {
    "granted": true,
    "clients": ["claude-code"],
    "granted_at": "2026-10-05T08:30:12.004512+00:00"
  },
  "device_id": "dev-5c0e9b7f3a2d4e1f8b6a0c9d7e5f4a3b",
  "last_cycle": {
    "state": "ok",
    "sources": 4,
    "chunks": 2,
    "bytes": 183422,
    "local_redactions": 1,
    "skipped_by_plan_history": 0,
    "conflicts": [],
    "truncated": [],
    "plan": "pro",
    "history_days": 90,
    "at": "2026-10-05T09:15:44.871003+00:00"
  }
}
```

## Ошибки

Сам инструмент ошибок не возвращает: всё, что пошло не так, видно в `last_cycle`. Ошибки агента при вызове **других** инструментов:

| Текст | Причина |
| --- | --- |
| `MMW отклонил API-ключ (проверьте MMW_API_KEY в настройках MCP)` | Сервер ответил 401 или 403 на ключ. |
| `Сервер MMW недоступен: … Синхронизация сессий догонит автоматически.` | Нет связи с сервером. Пока сервер недоступен, в списке инструментов только `mmw_sync_status`. |
| `Пустой ответ сервера MMW` | Сервер вернул пустой ответ. |

Язык сообщений агента: русский для адресов mmwhub.ru, английский для остальных; переменная `MMW_LANG=ru` или `en` задаёт его явно.

## Примечания

- Загруженные сессии хранятся в сжатом виде, но поиск по ним и извлечение фактов в память пока не сделаны: в `search` они не появляются.
- Отозвать согласие: `mmw-agent revoke`, загрузка останавливается сразу.

Если `mmw_sync_status` не виден в клиенте, значит клиент подключён к серверу напрямую, без агента. Проверить агента можно из терминала: `mmw-agent status`.

## Что дальше
