Изменения
This page is in Russian.
Заметные изменения в @leemour/max-cli. Формат — по одному разделу на версию, новое сверху;
номера версий по семантике, то есть до 1.0.0 интерфейс команд
ещё может меняться.
Не выпущено
Что нового
-
max conversations build|list|showиmax messages links— разговоры внутри группы, найденные в локальной копии по ответам, упоминаниям и тому, кто написал следом; MAX не спрашивается.conversations batches status|nextиconversations links add|clear— пачки для вашего агента и его ответы. -
max server logs,max server install,max server uninstall— как в tg.installпишет службу systemd (Linux) или launchd (macOS) для профиля и ничего не запускает; дальшеmax server startиstopидут через неё. Если MAX не принял вход, служба сервер не перезапускает: каждый повтор был бы новым входом в аккаунт.max server start --idleиrestart --idleостаются. -
max skill installставит навык для агентов одной командой: в~/.claude/skills/max-cli/для Claude Code и в~/.agents/skills/max-cli/для Codex и Gemini CLI, с номером версииmax.--for claudeили--for agents— только в одну папку.max skill showпечатает то же, что раньше. -
Агент узнаёт о навыке сам. Если задана переменная
AI_AGENTилиCLAUDECODE, а навыка нет или он старшеmax, раз в сутки в stderr выходит одна строка проmax skill install. В stdout ничего не добавляется. Выключаетсяmax config set skillHint false --defaults. -
max mcpиmax bot mcpотдают навык ресурсомmax://skillи называют его в своих инструкциях для агента. -
max cache clear --leftстирает из локальной копии только чаты, из которых вы вышли, вместе с их сообщениями. Остальная копия не трогается. -
max store status— сколько сообщений каждого чата хранится и какие куски скачаны целиком.store fetch --backgroundиstore jobs list|show|cancel— скачивание в фоне.store info|check|migrate|backup|restore|reindex— уход за файлом общей копии.store clear --left --allow-dangerousудаляет из неё чаты, из которых вы вышли, с их сообщениями. -
max messages search --regex— одно регулярное выражение по всему сохранённому тексту.messages show|context msg:…— сообщение по ссылке изsearch, без id отдельно. -
max polls show <чат> <сообщение>— опрос с id вариантов и числом голосов, ничего не меняя. -
max polls create --send-id— повторить создание опроса, ответ на которое не пришёл, без второго опроса.--revote— в опросе можно переголосовать. -
max messages edit --md— разметка в правке, как вsend. -
max messages send --voiceи--as-fileснова есть, теперь в общей команде tg и max. -
max messages forward --send-id— повторить пересылку, ответ на которую не пришёл, без второй копии. Если пересылка ответилаoutcome_unknown, ошибка называет команду повтора с этим номером. -
max messages send --photo <путь>— отправить.jpg .png .webpфотографией, как в tg.--no-previewуsendтоже есть, но MAX его не поддерживает, и команда откажет. -
max messages deleteотвечает сoperationId— номером этого удаления; тот же номер стоит в журнале отправок (max sends list). Инструмент MCPmax_messages_deleteотвечает так же. Сама команда и её опции не меняются: это теперь общая команда tg и max. -
Установка легче примерно на 16 МБ (cli-messaging 0.61.0): слой базы данных теперь встроен в пакет, а не ставится отдельно. Команды
maxне меняются. -
У каждой записи в журнале отправок есть
operationId— номер одного действия. Все строки об одной отправке, правке, удалении или изменении чата несут один и тот же номер, так что по нему видно, чем действие кончилось. У отправки сообщения это еёsendId.
Изменено — может сломать скрипты
-
max serve --detachиmax serve --stopубраны: этоmax server startиmax server stop. -
max server status --jsonотвечает теми же полями, что tg:byHandсталby(hand— руками,command— его запустила команда,server—max server start,unit— служба); добавленыlog,unitиstale(сервер упал и оставил метку).max server start,stopиrestartотвечают как в tg:{ started, by, pid, startedAt, log }и{ stopped, by, pid }; поляsocketбольше нет. -
max messages send --atтеперь--at-time— как во всех командах tg и max, где опция принимает время. Скрипт с--atполучит ошибку «неизвестный параметр» — замените на--at-time. Параметрatуmax_messages_sendв MCP не меняется. -
--markdownбольше нет, только--md— вmessages send,messages editи везде, где разметка читается. Так названо во всех командах tg и max; скрипт с--markdownполучит ошибку «неизвестный параметр» — замените на--md. -
max store— общая группа команд tg и max.store fetchпишет в общую локальную копию, ту же, что у tg, и листает MAX как раньше: по 30 сообщений, 5–10 с между страницами, до 40 страниц за запуск. Копия, которую max вёл раньше, не переносится — историю скачайте заново. Что ещё изменилось:store fetch --estimateдля MAX отказывает: id сообщений MAX не позволяют сосчитать, сколько не хватает;store fetch|export --sinceтеперь--since-time, и только время, не id сообщения;store fetch --max-pages <n>теперь--limit <сообщений>(по умолчанию 1200, то есть 40 страниц по 30); размер страницы —--page-size;store export --format mdтеперь--format markdown;jsonlкак был. Выгрузка больше не перечисляет в stderr куски, которых нет в копии, — их показываетstore status; существующий файл она не перезаписывает;store fetchв конце не печатает готовую команду выгрузки.
-
max messages list|show|context|search— общие команды tg и max.--offlineиsearchотвечают из общей локальной копии, той же, что у tg; она заполняется с первого запуска без--offlineпосле обновления, прежняя копия max в неё не переносится — и с ней расшифровки голосовых, услышанных до обновления. Что ещё изменилось:- голосовое — вложение
"kind": "voice", а не"audio"(вinboxиreviewпока"audio"); messages list --beforeи--afterразделились на--before-id,--before-time,--after-id,--after-time, а уmessages context—--before-nи--after-n, как в tg. Скрипт со старым именем получит ошибку «неизвестный параметр»;messages list --before-idне включает само это сообщение; с--offlineгодится только--before-id, и только с id сообщения из локальной копии;messages list --transcribe --jsonбольше не отвечает полемtranscribeProblem: причина — в stderr; с--offlineunheardпуст. Голосовое скачивается на отдельном соединении — с--no-serveэто второй вход в MAX;- модели речи
maxищет в~/.cache/cli-common/models/audio, одной папке с tg; скачанную в~/.cache/max-cli/models/audioнужно скачать заново или перенести; messages searchищет слова и их начала (квартирнайдёт «квартира»), а не любые три буквы подряд;--chatпринимает и имя сохранённого чата.
- голосовое — вложение
-
max chats list|showиmax contacts list|show— общие команды tg и max. Их--offlineотвечает из общей локальной копии, той же, что у tg. Она заполняется с первого запуска без--offlineпосле обновления; прежняя копия max в неё не переносится, и до того--offlineответитnot_found. Что ещё изменилось:chats list --search|--kind|--unreadбез--offlineищет в 200 самых свежих чатах и пишет в stderr, если были старше; с--offline— во всех сохранённых;chats show --offlineотвечает безdescription,accessиsettings: их знает только MAX;- неверный
--kindотвергается другими словами:--kind is one of dialog, group, channel, saved. cache clearзабывает и то, что этот аккаунт хранит в общей копии, аcontacts syncзабирает всё и туда.
-
max polls— общие команды tg и max.polls vote|close --jsonотвечают{operationId, poll}, гдеpoll—{chatId, messageId, question, answers: [{id, text, voters, chosen}], closed, multiple, anonymous, voters};polls create—{sendId, operationId, message}. Так же отвечают инструменты MCPmax_polls_vote,max_polls_close,max_polls_create; уmax_polls_createвместоrevoteтеперьsilent. -
max messages send|edit|forward— теперь общие команды tg и max. Пока общие команды не получат того, что было только у max, этого нет:- у
send— несколько--fileв одном сообщении: теперь одно вложение из--fileи одно из--photo;
- у
-
Ответы
--json:send—{sendId, operationId, message}(сscheduledFor, если с--at),editиforward—{operationId, message}, вместо сообщения без обёртки. Так же отвечают инструменты MCPmax_messages_send,max_messages_editиmax_messages_forward; уmax_messages_editбольше нетmarkdown, уmax_messages_forward—send_id. -
Если отправка с
--atне получила ответа, ошибка советуетmessages scheduled, не называя чат. -
max messages unpin <чат> <сообщение>— теперь нужен номер сообщения, как уpinи в tg. В чате MAX закреплено одно сообщение, и открепляется оно, какой бы номер ни был указан. Инструмент MCPmax_messages_unpinтоже проситmessage. -
Ответы
--jsonу реакций, закрепления и отметки прочитанным — общие с tg, и в каждом естьoperationId, номер этого действия, как в журнале отправок:reactions add|remove:{operationId, chatId, messageId, reaction}— ваша реакция илиnull, без счётчиков реакций на сообщении (их показываетmessages list);messages pin|unpin:{operationId, chatId, messageId, pinned}, гдеpinned—trueилиfalse;chats mark-read:{operationId, chatId, until}— до какого сообщения, илиnull, если до последнего.
Так же отвечают инструменты MCP
max_reactions_add,max_reactions_remove,max_messages_pin,max_messages_unpin,max_chats_mark_read. -
max sends list --json: полеcid→sendId, и это строка, а не число — то же имя, что в ошибкеoutcome_unknownи у--send-id. Строки, записанные раньше, показываются так же. -
Записи запусков (
--trace,--record,max runs show) — в общем формате tg и max. Номер отправки в событии называетсяsend, а неcid; ключ отказа MAX —providerError, а неmaxError, в событиях, вrun.jsonи вdetailsошибки--json. -
max botотвечаетoutcome_unknown(код14), если на отправку или другое изменение пришёл ответ 502, 503 или 504. Раньше это был отказprovider_unavailable(код12). Почему: такой ответ даёт шлюз перед MAX, и он не говорит, выполнил ли MAX запрос. Сообщение могло уйти. Что учесть: скрипт, который повторял изменение после кода12, мог отправить его дважды. После кода14сначала проверьте, выполнилось ли оно. Чтение по-прежнему повторяется само и отвечаетprovider_unavailable.
Исправлено
-
max messages send --voiceснова уходит черезmax serve. Через сервер MAX отказывал (proto.payload): полоска громкости голосового терялась по дороге. -
max chats listиmax chats showбольше не показывают чаты, из которых вы вышли. Раньше такой чат оставался в списке навсегда, с устаревшим числом участников. Теперь он исчезает при следующем входе, если max получил от MAX полный список ваших чатов; сообщения остаются в копии доmax cache clear --left.max serveузнаёт о выходе только при следующем полном входе. -
Пустая локальная копия max снова заполняется целиком. После обновления копии или удалённого файла вход спрашивал у MAX только изменения, и чаты и люди, которые не менялись, в неё не возвращались:
--offline, участники вchats showиcontacts showотвечали неполно. Теперь вход в таком случае забирает всё. -
max serveбольше не путает ответы после долгой работы. Номер запроса занимает два байта и после 65 536 запросов начинается заново. Если запрос с тем же номером ещё ждал ответа, новый запрос мог получить чужой ответ. Теперь такой номер пропускается.
0.21.0 — 30.09.2026
Изменено — может сломать скрипты
Команды названы по одному правилу: сначала предмет, потом действие. Старые имена больше не
работают — max отвечает «unknown command» или «unknown option» с кодом 1 и ничего не делает.
max backup messages→max store fetch. Теперь команда скачивает сразу; только посчитать —--estimate(раньше наоборот: без--runтолько считала). Каждый запуск по-прежнему не больше--max-pagesстраниц (40) с той же паузой.--pauseпринимает длительность:5s,500ms— число без единицы теперь отказ.--sinceи--lastнеобязательны: без них запуски идут до начала чата, каждый — с места, где остановился прошлый.max export messages→max store export.--cid→--send-idуmessages sendиmessages forward. В ошибкеoutcome_unknownномер теперь в полеsendId; у инструментов MCPmax_messages_sendиmax_messages_forwardаргументcid→send_id.max chats read→max chats mark-read; инструмент MCPmax_chats_read→max_chats_mark_read.max chats settingsбольше нет. Настройки группы показываетmax chats show(поляsettings,description,access; ссылку-приглашение — по-прежнемуmax chats link show), меняетmax chats update <чат> --all-can-pin on|offи остальные флаги настроек.max update→max upgrade, и строка о новой версии называетmax upgrade.max recipients off→max recipients clear, в ответеoff→cleared;max bot recipients off→max bot recipients clear.max account sessions end-others→max account sessions end --others; без--others— отказ.
Что нового
max completeвиден вmax --help— чтобы найти, как включить дополнение по Tab.- Страница docs/remote.md: ChatGPT или Claude в браузере — через прокси со входом по паролю и публичный адрес Tailscale без своего домена. Схема собрана по документации этих инструментов и целиком не проверена.
0.20.0 — 30.09.2026
Изменено — может сломать скрипты
- Общее хранилище сообщений переходит на версию 6 (cli-messaging 0.49.0). Первый запуск
maxобновляетmessages.db; после этогоtgстарше выпущенного в тот же день отказывается открывать файл и просит обновиться —npm install -g @leemour/tg-cli@latest. Командыmaxне меняются. --all-botsработает, только если боту разрешено читать других ботов. НастройкаreadOtherBotsв разделеbot:max <имя> config set --bot readOtherBots true— всех, или список профилей. Без неё команда отказывает с кодом5и называет, как разрешить.- Когда имя подходит нескольким людям, кандидаты перечислены по имени, люди без имени — первыми; раньше — в том порядке, в каком лежали в кэше. Текст ошибки тот же.
Что нового
--bots news,supportуbot messages search,bot people showиbot messages between— прочитать копии только этих ботов, еслиreadOtherBotsих разрешает.bot messages searchтеперь понимает и--all-bots.- Агент через
bot mcpполучаетall_botsиbotsу тех же трёх инструментов — только когда бот может читать других. - Люди — у каждого бота свои. Человек, которого видел один бот, не находится у другого без
--all-botsили--bots. - Поиск по тексту сообщений бота находит любые три буквы внутри слова (
вартирнаходит «квартиру»), как поиск личного аккаунта.
0.19.0 — 28.09.2026
Изменено — может сломать скрипты
- Агент через
max mcpзакрывает опрос, только если профилю разрешеноedit. Раньше хваталоreaction. Почему: закрытие правит сообщение с опросом, и командаmax polls closeвсегда требовалаedit— агент и человек получали на одно действие разные права. Что учесть: если вallowпрофиля естьreaction, но нетedit, агент больше не видит инструментmax_polls_close; чтобы он мог закрывать опросы, добавьтеedit. Еслиallowне задан, ничего не меняется. Подробнее — docs/mcp.md.
Исправлено
max mcp --confirm-sendзапускается, когда изменения аккаунта включены только настройкойmcpTools. Раньше флаг требовал ещё одного из--allow-*, иначе сервер не запускался. Почему это важно: из-за этого сервер с однойmcpToolsработал без формы подтверждения — агент мог добавлять и удалять контакты, создавать группы и менять профиль, не спрашивая вас. Что учесть: без--confirm-sendвсё как раньше. Чтобы видеть форму перед каждым изменением, добавьте флаг в команду запуска сервера.max <бот> bot messages search --limit Nговорит, что найдено больше. Раньше в ответе всегда былоhasMore: false, а вlimit— значение из настроек, а не вашеN. Что учесть: скрипт или агент, который поhasMoreрешал, искать ли дальше, останавливался на первой странице и пропускал совпадения. Теперь он получитhasMore: true, когда совпадений большеN.
0.18.1 — 28.09.2026
Исправлено
- После
max contacts renameновое имя видно сразу — вcontacts showи в названии личного чата с этим человеком. Раньше там оставалось прежнее имя, пока фоновыйmax serveне входил в MAX заново: MAX присылает переименованный контакт в ответе, а сервер его не применял. Что учесть: если после переименования имя всё ещё старое, у вас работает сервер прежней версии — его заменит первая же команда 0.18.1.
0.18.0 — 28.09.2026
Что нового
- Агенту можно разрешить менять аккаунт через
max mcp. Появились инструменты для контактов (добавить, удалить, переименовать, заблокировать), для закрытия своего опроса, для групп (вступить, выйти, создать, назначить и снять админа) и для имени и описания профиля. Раньше агент через MCP мог только читать и писать сообщения. Почему только в настройках: эти действия видят другие люди, и включить их должен владелец, а не сам агент — дописав флаг в свою же команду запуска. Что учесть: всё выключено, пока группа не названа в настройкеmcpTools, напримерmax config set mcpTools contacts,polls. Флагом это не включается. Каждое действие проходит те же проверкиreadOnly,allowи журнал, что и команда. Подробнее — docs/mcp.md. - Загрузка файла ботом видна в
--traceи в записи запуска.bot messages send --fileиbot uploads putпоказывают загрузку двумя строками: вид файла, размер, HTTP-код и время. Раньше загрузка в запись не попадала. Что учесть: адрес загрузки и имя файла не пишутся — ни на экран, ни в запись.
Исправлено
max contacts renameпереименовывает. Раньше MAX отвечал «успешно», а имя оставалось прежним. Почему: без поляlastNameMAX молча ничего не меняет. ТеперьlastNameуходит всегда (null, если фамилии нет) — так делает и веб-клиент. Что учесть: имена, «изменённые» через 0.17.x, на самом деле не изменились — переименуйте ещё раз.
0.17.1 — 28.09.2026
Исправлено
- Ошибка в
--limit,--lastи--max-pagesповторяет то, что вы набрали. Это касаетсяmessages list,inbox,backup,sends listи команд бота. Раньше на--limit abcони называли введённоеNaN; в 0.17.0 это исправили только у списков со страницами. runs listиsends list, обрезанные по--limit, говорятhasMore: true. Раньше в ответе былоhasMore: false, а вlimit— не то число, что вы просили. Что учесть: скрипт, который поhasMoreрешал, читать ли дальше, раньше останавливался на первой странице.- Контакт, которого вы переименовали, показывается под вашим именем, как в приложении MAX. Раньше
maxпоказывал имя, которое человек дал себе сам, даже если вы переименовали его вcontacts renameили в приложении.
0.17.0 — 28.09.2026
Изменено — может сломать скрипты
- Любой список в
--json— объект{items, page, limit, hasMore}, а не массив. Так теперь отвечаютaccount sessions list,chats members list,chats folders list,messages scheduled,messages download,messages context,models audio list,recipients list,sends list,runs list,chats check,chats eventsи все списки бота. Раньше часть из них отдавала массив, аchats events—{events, more}. Почему: списки приходили в трёх разных формах, и скрипту или агенту приходилось помнить форму каждой команды. Что учесть: скрипт, который читал массив, теперь должен брать.items. У списка без страницpageравен 1, аlimit— числу пришедших строк.bot members listиbot admins listкладут рядомmarker, аuser_idу них теперь строка.bot messages getотвечает самим сообщением, а не массивом из одного.--jsonlи таблица для человека не изменились. В MCP — то же самое.
Что нового
max doctorиmax config showвидят ботов. Список профилей — все профили на этом компьютере, с пометкой: личный аккаунт, бот или оба. Раньше профили ботов в нём не появлялись.doctorпоказывает, откуда взят токен бота (без самого токена), сколько чатов бот видел и где лежат файлы профиля;doctor --onlineспрашивает у Bot API, чей это токен. Что учесть: для профиля ботаdoctorи личные команды больше не советуютsession start, а называют нужную командуmax <имя> bot ….- Инструменты
max_statusиmax_bot_statusв MCP. Агент видит, за какой профиль говорит сервер, есть ли токен и какие пишущие инструменты включены. Они ничего не отправляют, аmax_statusдаже не входит в MAX. - Дополнение по Tab знает о ботах. Для команд бота оно предлагает чаты, которые видел бот, а не чаты личного аккаунта; в первом слове — все профили, в том числе профили ботов.
- Команды бота записываются, как личные.
max <имя> bot … --traceпоказывает в stderr каждый запрос к Bot API: операцию, чат или сообщение, HTTP-код и время.--recordсохраняет запуск, а упавший запуск бота сохраняется сам, вместе с запросами. Смотреть —max runs listиmax runs show. Что учесть: загрузка файлов (--file) в эту версию записи ещё не попадала — это добавлено в 0.18.0. - Настройки отдельно для личных аккаунтов и для ботов. В файле настроек появились разделы
personalиbot, у каждого своиdefaultsиprofiles.max config set --personal|--botпишет в раздел,max config show --botпоказывает настройки бота и называет ключ, из которого прочитано значение, напримерconfig file: bot.profiles.test. Почему: у одного человека бывают и личный аккаунт, и боты, и одни и те же правила им не подходят. Что учесть: побеждает самая точная запись — профиль в разделе, затем профиль, затем раздел, затем общиеdefaults. Прежний файл читается как раньше. Подробнее — docs/configuration.md. - У бота может быть лимит отправок в час.
max <имя> config set --bot sendsPerHour 200задаёт его. По умолчанию лимита у бота по-прежнему нет. max config set defaultProfile <имя>— какой профиль берётся, если первое слово не профиль. Раньше это всегда былdefault.- Фото профиля, своё имя для контакта, блокировка.
max account update --photo <файл>ставит новое фото профиля.max contacts rename <кто> <имя> [фамилия]даёт человеку имя, которое видите только вы.max contacts block <кто>иunblockблокируют и разблокируют — даже того, кого нет в контактах. Что учесть: всё проходит те же проверки, чтоaccount updateиcontacts add. В этой версииcontacts renameна деле не менял имя — исправлено в 0.18.0. - Каналы.
max chats create <название> --channelсоздаёт закрытый канал. Что учесть: людей в канал зовут ссылкой-приглашением (max chats link show) — добавить человека напрямую MAX может не дать. - Права админа на чтение и на ссылку.
max chats admins add <чат> <кто> --can read,linkдаёт читать все сообщения группы и менять ссылку-приглашение. Что учесть: бот-админ без праваreadсообщений группы не видит. - Время можно задать как «столько назад».
--since,--beforeи--afterпонимают30m,2h,1d:max review --since 1d. Раньше нужно было писать точное время.
Исправлено
- Ваше же изменение чата видно сразу. После
max chats update,chats settingsиchats link resetкомандыchats showиchats listнесколько минут показывали старое название. Почему: MAX не присылает ваше изменение обратно, а фоновыйmax serveне применял чат из ответа MAX. Теперь применяет — как уже делал с отправленными сообщениями. max export messagesне предупреждает о пропуске «до 1970-01-01» после полногоbackup. Раньше выгрузка чата, прочитанного до самого начала, всё равно говорила, что начало не прочитано.- Ошибка в
--limitи--pageповторяет то, что вы набрали. Раньше на--limit abcона называла введённоеNaN. - Сброшенная ссылка-приглашение в
chats inspectиchats join— ошибка «ссылка никуда не ведёт» (not_found, код 6). Раньше это был непонятный отказ MAX с номером операции. Что учесть: скрипт, который ждал другой код выхода, теперь получит 6. max config showиmax doctorне показывают лишний профиль<имя>.moderation. Раньше они принимали файл правил модерации группы за профиль.- Ошибка в подкоманде называет неизвестное слово, а не профиль. Раньше
max work bot auth statusговорил, чтоworkпрочитано как имя профиля, хотя неизвестным было словоstatus. max config showпоказываетtranscribeModel— модель распознавания речи. Раньше эта настройка не выводилась.
Удалено
- Заявки на вступление:
max chats requests list|accept|decline, правилоrequestsи уровниconsent.acceptиconsent.declineв правилах группы. Почему: в MAX группа либо открытая, либо в неё входят по ссылке-приглашению; одобрять новых участников негде, поэтому заявок не бывает. Команды обещали то, чего MAX не делает. Что учесть: файл правил, где эти ключи остались, читается как прежде; при следующей записи они из него уходят. Скрипт, который вызывалchats requests, получит ошибку «нет такой команды».
0.16.0 — 27.09.2026
Что нового
- Люди и переписка бота.
max <имя> bot people show <кто>показывает, где человек писал, и его личный чат с ботом.bot messages search --from <кто>— что писал один или несколько человек.bot messages between <кто> <кто>— их переписка в чатах, где писал каждый. Что учесть: всё берётся из копии на этом компьютере, то есть только из того, что бот уже видел.--all-botsсмотрит копии всех ботов. - Бот проверяет группу по её правилам.
max <имя> bot chats check <чат>сверяет новое в группе с правилами (bot chats rules show|set|unset) и действует от имени бота: удаляет сообщения и удаляет людей. Вступления берёт изbot updates watch. Что учесть: удалённый человек не сможет вернуться по ссылке-приглашению, если не указан--no-ban; снять этот запрет через Bot API нельзя. Возраст аккаунта через Bot API не виден, и правила о нём здесь не срабатывают. - Опросы.
max messages listпоказывает опрос словами: вопрос, варианты с id в[скобках], голоса и ✓ у вашего варианта.max polls vote <чат> <сообщение> <вариант>…голосует,--retractснимает голос,max polls closeзакрывает свой опрос,max polls createсоздаёт новый. В MCP —max_polls_voteиmax_polls_create, только с--allow-send. Что учесть: что отказал бы веб-клиент — закрытый опрос, лишние варианты, второй голос без права переголосовать, —maxотказывает сам, ничего не отправляя. web.max.ru опросы не показывает, иpolls createоб этом напоминает. max <имя> bot mcp— MCP-сервер бота для агента. По умолчанию только чтение; запись — по флагам--allow-send,--allow-delete,--allow-moderate,--confirm-send. Что учесть: каждая запись идёт через ту же команду, что набрали бы вы, — со списком получателей и журналом. Действия проверки по правилам, которые нужно подтвердить, агент показывает вам одной формой. Подробнее — docs/bot.md.
Изменено — может сломать скрипты
- Параметр
timeoutуmax bot api get-updatesтеперь задаётся флагом--poll-timeout. Раньше флаг--timeoutэтой операции до MAX не доходил:--timeout— это общий срок самой команды. Что учесть: скрипт, который передавал--timeoutдля долгого опроса, должен перейти на--poll-timeout.
Исправлено
- Фоновый
max serveпрежней версии заменяется при первой же команде новой версии. Раньше, пока старый сервер отвечал, он оставался работать и отказывал в новых операциях — например, в голосе в опросе, — пока его не останавливали черезmax server stop. - Сервер из другой сборки с тем же номером версии тоже заменяется. Раньше он оставался работать.
Что учесть: сервер, запущенный вручную, на незнакомую операцию отвечает отказом с подсказкой
max server stop. max bot api get-updates --limit …работает. Раньше--limitоперации принимался за настройку самогоmax, и команда отказывала.
0.15.0 — 27.09.2026
Что нового
max chats check <чат>— модерация группы по её правилам. Команда читает, что пришло с прошлой проверки (сообщения и новых участников), сверяет с правилами группы (max chats rules) и делает то, что они разрешают: сообщает, удаляет сообщение, удаляет человека из группы. Что учесть: по умолчанию команда только сообщает;--dry-runтолько планирует; за раз — не больше 10 действий. Удаление и исключение проходят те же проверки, что любое другое изменение. Заявки на вступление в этой версии только планировались — в 0.17.0 их убрали совсем, потому что в MAX их нет. Подробнее — docs/groups.md.- Модерация через агента.
max mcp --allow-moderateдаёт инструментmax_chats_check— ту же проверку. Всегда доступны три инструмента только для чтения:max_chats_events,max_chats_members,max_chats_rules. Что учесть: без флага инструмента проверки нет. Действия, которые правила велят подтвердить, агент показывает вам одной формой. - Роли и ссылка.
max chats members listпомечает каждого участникаowner,adminилиmember.max chats link show <чат>печатает ссылку-приглашение. - Видео и голосовые с личного аккаунта.
max messages send <чат> --file ролик.mp4отправляет видео, которое смотрят прямо в чате (.mp4 .mov .webm .mkv).max messages send <чат> --voice заметка.oggотправляет голосовое с полоской громкости и длительностью. Что учесть: раньше видео уходило файлом; чтобы отправить его файлом и теперь, добавьте--as-file. Голосовое — только Ogg Opus; для другого звука команда подскажет строкуffmpeg. Подробнее — docs/usage.md. - Голосовые текстом прямо в списке.
max messages list <чат> --transcribeиmax inbox --transcribeрасшифровывают показанные голосовые на этом компьютере; текст стоит под сообщением со значком 🎤, в--json— в полеtranscript. В MCP —transcribe: trueуmax_messages_listиmax_inbox. Что учесть: уже расшифрованные голосовые показывают текст и без флага. Для расшифровки нужна скачанная модель. - Остальные команды бота.
max <имя> bot messages send --file <путь>прикладывает картинку, видео, звук или файл, аbot uploads putтолько загружает его.bot members list|add|removeиbot admins list|add|remove— участники и админы чата;bot comments list|get|send|edit|delete— комментарии под постом канала;bot callbacks answer— ответ на нажатую кнопку;bot commands list|set|clear— меню команд бота;bot webhooks list|set|delete— вебхуки. Всё — в docs/bot.md. Что учесть:webhooks setотказывает, пока задан другой адрес: MAX не заменяет старый вебхук, а шлёт события на оба. - Локальная копия переписки бота. Всё, что бот прочитал, отправил или получил, сохраняется на
этом компьютере.
max <имя> bot messages list <чат> --offlineиmessages get --offlineчитают её без сети,bot messages search <текст>ищет по ней. Что учесть: сообщение, удалённое ботом или удаление которого заметилupdates watch, из копии пропадает. Копия содержит тексты сообщений. max <имя> bot updates watchпечатает события бота по мере прихода, до Ctrl-C, и сохраняет их сообщения в копию. Следующий запуск продолжает с того места, где остановился прошлый. Что учесть: пока у бота настроен вебхук, команда не работает. Она забирает события у других читателей бота — запускайте её, только если бот больше никому не нужен.- Люди в копии бота.
max <имя> bot people show <кто>— чаты, где человек писал, и последние сообщения из его личного чата с ботом;--refreshперечитывает этот чат у MAX.bot messages search --from <кто>— всё, что он написал.bot messages between <кто> <кто> …— переписка нескольких людей в чатах, где писал каждый.--all-botsсмотрит копии всех ботов. Кто — номер,@usernameили часть имени.
Изменено — может сломать скрипты
max bot messages listпечатает старые сообщения сверху, какmax messages list. Раньше сверху были новые. Отправленное ботом сообщение теперь помечено как своё. Что учесть: скрипт, который брал первую строку как самое новое сообщение, теперь получит самое старое.
Исправлено
max review --transcribeне держит соединение с MAX открытым, пока работает модель. Записи скачиваются заранее, соединение закрывается, и только потом идёт распознавание.max bot api edit-my-commands,subscribe,unsubscribeиget-upload-urlработают. Раньше они падали с «an account change without a known action» и ничего не отправляли.- Отправка ботом на положительный номер без
user:подсказывает, что это, скорее всего, человек, и что писать ему надо какuser:<номер>. - Примеры в docs/bot.md не содержат выдуманного номера чата, и там же сказано, как узнать настоящий.
0.14.0 — 27.09.2026
Что нового
max bot— работа с ботом через официальный Bot API.max bot auth setпроверяет токен бота у MAX и сохраняет его в ключнице, отдельно от личного аккаунта. Профиль — первое слово, как везде:max рабочий bot me.max bot meпоказывает бота, аmax bot api <операция>вызывает любую из 33 операций API с флагами для параметров и JSON-телом. Команды сгенерированы из официальной схемы (список). Что учесть: идентификатор больше 2^53 печатается строкой, чтобы не потерять цифры, — скрипт должен читать его как строку.- Удобные команды бота.
max <имя> bot messages send <чат> <текст>пишет в чат по номеру, человеку — какuser:<номер>, или по названию чата, который бот уже видел; есть иedit,delete,list,get.max <имя> bot chats list— чаты, которые бот видел, иchats get|pin|unpin|leave|action.max bot list— все имена с токеном бота. Почему «которые видел»: у MAX нет списка чатов бота, поэтомуmaxзапоминает чаты сам. - Список получателей и журнал отправок бота.
max <имя> bot recipients add|list|remove|offиmax <имя> bot sends list. Список проходит любая запись бота, в том числе черезbot api. Что учесть: лимита отправок в час у бота в этой версии нет (появился в 0.17.0). Всё о боте — docs/bot.md. - Модерация групп: что происходит.
max review --unanswered [часы]— вопросы в группах, на которые ни вы, ни админы ещё не ответили;max review --chat <чат>— обзор одного чата.max chats events <чат>— кто вступил, вышел, кого добавили и удалили.max chats members list <чат>— все участники группы или канала, с датой регистрации и последним появлением.max chats rules show|set|unset <чат>— правила модерации группы, в одном файле, какconfig set.
Исправлено
- Когда MAX закрывает соединение, ошибка называет код и причину закрытия.
0.13.0 — 26.09.2026
Что нового
max review— кто кому что должен. Одним вызовом — все сообщения, ваши тоже, во всех чатах, где что-то было с прошлого обзора (без--since— за 3 дня).--transcribeрасшифровывает голосовые. В конце ответа — с какого момента начинать следующий обзор. Что учесть: если что-то не прочитано, ответ прямо говорит «неполный» — не принимайте такой обзор за полный (usage.md).- Инструмент
max_reviewи команда/reviewв MCP. Агент раскладывает переписку на «я должен», «жду от других» и «нужно уточнить», проверяет рабочие группы, прежде чем назвать что-то просроченным, и готовит напоминания. Что учесть: напоминания уходят только после вашего «да» (mcp.md). max mcp configпечатает готовую запись для Claude Desktop, Cursor и других клиентов. Почему: запись содержит полные пути, поэтому работает и на Windows, и в приложениях, которые не видятPATHтерминала (mcp.md).max doctorпроверяет установку: чем запущенmax, куда поставлен, найдёт ли его новый терминал, загружаются ли ключница и SQLite, скачана ли модель речи. Что учесть: если каталог команды не наPATH,doctorпечатает команду, которая это исправит, — для PowerShell на Windows иexportна Linux и macOS. Если самаmaxне находится, запуститеnpx @leemour/max-cli doctor(troubleshooting.md).max doctor --onlineпроверяет связь с MAX: один вход, один чат и запуск MCP-сервера. Ничего не отправляет.max models audio downloadпосле скачивания проверяет, что модель работает. Если модель не скачана, сообщение называет её язык и другие модели с размерами.
Изменено — может сломать скрипты
- MCP-инструмент
max_messages_attachmentпереименован вmax_messages_photo. Что учесть: если в клиенте MCP было сохранено разрешение на старое имя, дайте его заново. - Профиль больше нельзя назвать
review, потому что это теперь команда. Что учесть: профиль с таким именем придётся переименовать.
Безопасность
- Отчёт о проблеме на Windows скрывает домашний каталог в любом написании. Раньше имя пользователя оставалось в части путей.
0.12.0 — 26.09.2026
Что нового
- MCP-сервер умеет больше:
max_inbox— всё новое одним вызовом; ответ на сообщение и оформление текста при отправке; реакции; фото — как картинка, которую агент видит (mcp.md). - Команды
/catch-up,/reply,/findи чаты по@в Claude Code (mcp.md).
Исправлено
max serveработает на Windows. Там сервер теперь слушает именованный канал, а не файл.- Слишком длинный путь к сокету на macOS и Linux даёт понятную ошибку, а не
EINVAL. Путь становится длинным из-за длинного имени профиля илиMAX_STATE_DIR.
0.11.0 — 26.09.2026
Что нового
max watch --eventsпоказывает не только новые сообщения, но и правки, удаления и реакции; у каждой строки есть полеevent. Без флага вывод прежний (usage.md).- Отчёт о проблеме уходит в задачу на GitHub, а не письмом.
max doctor report createпечатает ссылку на новую задачу с заполненным заголовком и заготовкой текста; файл отчёта прикладывается к задаче. Что учесть: задача на GitHub и приложенный файл видны всем (troubleshooting.md). - Любая ошибка любой команды сохраняется в запись запуска — и неверный флаг, и проверка до начала
работы, и команды, которые в MAX не ходят (
models,server,watch). Раньше сохранялись только ошибки команд, дошедших до MAX. Что учесть: сохраняются только слова команды, без того, что написано после них, — текст сообщения в запись не попадает (diagnostics.md). max backup messages --runговорит, где сохранённое и что дальше. Сообщения лежат в локальной копии, а файл делаетmax export messages: готовая команда стоит в конце вывода и в полеexport.- Фоновый сервер
max serveсам проверяет ограничения на отправку и ведёт журнал отправок: профиль только для чтения, разрешённые действия, список получателей, лимит в час. Изменение черезconfig setдействует без перезапуска сервера. Что учесть: с переменнойMAX_TOKENсервер не запускается. max serveпосле входа запрашивает то же, что вкладка web.max.ru: папки, баннеры, историю звонков, наборы стикеров и реакций. И входит повторно так же: передаёт MAX время прошлого входа и спрашивает только изменившиеся чаты, а не весь список. Почему: чем меньшеmaxотличается от веб-клиента, тем меньше у MAX поводов его заметить. Что учесть: всё это только чтение; ответы не показываются и не сохраняются. Одноразовые команды это не делают (security.md).- Фоновый сервер переживает повреждённое входящее сообщение от MAX: пропускает его, пишет об этом одну строку и работает дальше. Раньше такое сообщение могло остановить сервер.
Изменено — может сломать скрипты
-
Защиты для агентов строже.
max mcp --confirm-sendспрашивает перед любой записью — правкой, пересылкой, закреплением, отметкой о прочтении, удалением, — а не только перед отправкой. «Да» действует один раз и 5 минут.- В часовой лимит
sendsPerHourтеперь идут правки, закрепления с уведомлением и каждый добавленный человек. Отложенное сообщение считается в час, когда уйдёт. Две одновременные отправки у предела больше не проходят обе. - Если включён список получателей, группа создаётся и люди добавляются, только если личный чат с каждым из них есть в списке.
chats members addне показывает новичку старые сообщения без--history; флаг--hide-historyубран.MAX_PROFILE_LOCKзапирает процесс на одном профиле.--fileне берёт скрытые файлы и папки и папки самогоmaxбез--allow-any-file.
Что учесть: лимит в час теперь исчерпывается быстрее, чем раньше. Скрипт с
--hide-historyполучит ошибку — уберите флаг. Скрипт, который отправлял скрытый файл, должен добавить--allow-any-file.
Исправлено
max watchне выдаёт правку или удаление за новое сообщение. MAX присылает их тем же сообщением с пометкой, и раньше такое могло появиться в выводе как новое.- Точное название чата больше не выигрывает молча. Если оно входит и в название другого чата, команда покажет оба и попросит выбрать по id. Почему: отправку в не тот чат нельзя отменить.
Безопасность
- Токен из
MAX_TOKENостаётся только там. Если MAX выдаёт сессии новый токен,maxне пишет его ни в ключницу, ни в файл, а говорит об этом в stderr.max doctorназывает файлcredentials.json, если токен хранится в нём, а не в ключнице. max session startпоказывает номер телефона скрытым, какmax account show. Ctrl-C на вопросе о токене завершает команду с кодом130.- Фоновый сервер не отдаёт токен командам, которые спрашивают у него вход: им он не нужен, они сверяются с ключницей.
- Пределы для сети. Кадр MAX распаковывается не больше чем в 32 МиБ. Подключение к MAX и
скачивание файла не висят бесконечно, если сеть замолчала.
max messages downloadскачивает только по https, не ходит по ссылкам на этот компьютер и в локальную сеть — в том числе после перенаправления — и не качает больше 4 ГиБ; голосовое для расшифровки — не больше 32 МиБ. Почему: ссылка в сообщении приходит от чужого человека и может вести куда угодно. - Права на локальную копию. База и её журналы
-walи-shmсоздаются с правами0600, каталог —0700; права старых файлов выставляются так же при следующем открытии. В отчёте о проблеме номера чатов и сообщений заменены метками. - Чужой текст печатается в одну строку, а управляющие символы — видимыми — в ленте, таблицах,
списке кандидатов, выгрузке Markdown и путях
messages download. Из имени скачанного файла убираются управляющие символы и символы смены направления текста. В Markdown ссылками становятся только адресаhttpиhttps. - Автодополнение на месте чата или человека подставляет только номер, а название или имя
показывает рядом. Почему: название и
@имязадаёт кто-то другой, и оболочка не должна получать от него ничего, кроме цифр. max cache clearбез имени профиля очищает профиль по умолчанию и учитываетMAX_PROFILE.- Выпуск строже. Версии зависимостей закреплены точно; пакет собирается с нуля перед каждой упаковкой, без тестовых помощников; публикует отдельный шаг, который не ставит и не запускает зависимости.
0.10.0 — 25.09.2026
Что нового
max doctor reportиmax doctor report create— отчёт о проблеме для автора. Первая команда объясняет, что попадёт в отчёт; вторая пишет файл без текстов сообщений и печатает, что сделать по шагам. В этой версии отчёт отправлялся письмом; с 0.11.0 — задачей на GitHub (troubleshooting.md).max backup messages <чат> --since <дата> | --last <n>дочитывает историю чата в локальную копию. Что учесть: без--runкоманда только показывает расчёт и ничего не отправляет. С--runона листает назад по 30 сообщений с паузами, не больше 40 страниц за запуск, и при повторе продолжает с места (usage.md).max doctorпоказывает, какой версией веб-клиента MAX представляетсяmax, и предупреждает, если её прочитали больше 60 дней назад. Почему: MAX может перестать принимать старую версию клиента (troubleshooting.md).max server start|stop|status|restart— фоновый сервер как отдельная вещь, какmax session.statusпоказывает, работает ли сервер, с какого времени, какой версии и подключён ли к MAX, и подсказываетrestart, если версия сервера отстала отmax.max serve --detachи--stopпо-прежнему работают (usage.md).- Чтение истории шлёт те же пять полей, что веб-версия, и вход просит у MAX 15 чатов, как вкладка
web.max.ru, а остальные дочитывает одним запросом. Раньше
maxдобавлял к запросу поле, которого веб-версия не шлёт, и просил 40 чатов за раз. Почему: чем меньшеmaxотличается от веб-клиента, тем меньше у MAX поводов его заметить. Что учесть: список чатов тот же. Проверено на канале с непрочитанными: чтение по-прежнему ничего не отмечает прочитанным. - Описание устройства берётся с вашего компьютера: часовой пояс, язык системы и операционная
система — свои у каждой установки, как у браузера. Раньше каждая установка
maxназывала себя одним и тем же Chrome на Linux в часовом поясе Мадрида. max serveшлёт MAX одно служебное событие, как скрытая вкладка веб-версии: «показан список чатов», через 20 секунд после входа. Что учесть: в событии номер аккаунта и время — ни сообщений, ни названий. Одноразовые команды его не шлют (security.md).- Слишком длинное название папки
maxотклоняет сам — не длиннее 20 знаков, сколько принимает MAX. Раньше запрос уходил в MAX и возвращался с его отказом.
Изменено — может сломать скрипты
- Отказ MAX во входе из-за частых попыток больше не ведёт к новым попыткам. Команда выходит с
кодом
8, а профиль сам не входит какое-то время: 1 минуту после первого отказа, дальше 5 минут, 30 минут, час, 6 часов, сутки. Фоновый сервер на любом отказе во входе останавливается; раньше он пробовал снова раз в минуту без конца. Что учесть: скрипт, который повторял команду сразу после отказа, теперь получит тот же код8до конца паузы — ждите время из ошибки (troubleshooting.md).
Исправлено
- Недоступная ключница больше не выдаётся за отсутствие входа. Если профиль уже входил на этом
компьютере, а токена не видно — например, из cron, —
maxиmax doctorговорят, что дело, вероятно, в ключнице. Раньше они советовали войти заново. Почему это важно: новый вход в этом случае — лишнее новое устройство в аккаунте (recipes.md). - Запуск, который кончился ошибкой, сохраняется и без
--record. В записи теперь есть ключ ошибки MAX (напримерlogin.token), предупреждения кодом, место падения, версия среды и система. Тексты по-прежнему не пишутся. Лог фонового сервера — строками JSON со временем (diagnostics.md). max chats read --untilотмечает прочитанным только до указанного сообщения. Раньше отметка уходила с текущим временем, и MAX считал прочитанным всё до «сейчас», включая более новые сообщения. То же исправлено уmessages list --mark-read. Что учесть: собеседники могли видеть «прочитано» у сообщений, которых вы не читали.
0.9.0 — 25.09.2026
Что нового
maxговорит с MAX так же, как веб-версия: тот же адрес, двоичные кадры и сжатие, что у web.max.ru, и то же описание устройства с обновлёнными версиями приложения и браузера. Раньшеmaxслал текстовые кадры в старом формате. Почему: по старому форматуmaxотличить от веб-клиента было проще всего. Кроме того, голосовым и кружкам нужно поле с байтами, которое старый формат передать не мог. Что учесть: команды и их вывод не изменились. Отправка голосовых — в следующих версиях. Пока при каждом входе MAX присылает список чатов целиком, а не только изменения: это работает, но даёт лишний трафик.- Фоновый
max serve, запущенный командой, после обновленияmaxперезапускается сам. Что учесть: сервер, запущенный вами вручную, продолжает работать по-старому, пока вы его не остановите:max serve --stop, затем запустите снова.
0.8.0 — 25.09.2026
Что нового
max messages transcribe <чат> <id>— голосовое в текст прямо на вашем компьютере. Запись никуда не уходит, её распознаёт локальная модель.max models audio listпокажет, какая модель подходит для каких языков,max models audio download <id>скачает её и сверит контрольную сумму. Для MCP —max_messages_transcribe(usage.md). Что учесть: модель скачивается один раз и только по вашей команде. Текст сохраняется в локальной копии, так что повторно ни MAX, ни модель не нужны.- Одно подключение к MAX на профиль. Все команды,
max mcpиmax watchодного профиля ходят в MAX через один фоновыйmax serve, а не каждая своим подключением. Почему: меньше входов с одним токеном — меньше поводов для MAX завершить ваши сеансы. Что учесть:max session startостанавливает сервер, входит и запускает его снова (usage.md). max serve --detachзапускает сервер в фоне и отвечает, когда он подключился;max serve --stopего останавливает. Что учесть: сервер, запущенный вами вручную, останавливается только Ctrl-C или--stop—max session endего не трогает.- Настройка
allow— что профилю можно.max work config set allow send,reactionразрешает профилю только писать и ставить реакции. Имён двенадцать, отsendдоsessions. Что учесть: без списка разрешено всё, как раньше. Запрещённое отказывает с кодом5ещё до подключения, и ошибка называет команду, которая это разрешит. Вmax mcpагент не видит инструментов, которых профиль не разрешает (usage.md). max messages send … --at <время>— отправить позже. Сообщение ждёт на сервере MAX и уйдёт, даже если компьютер выключен. Время —2026-09-25T09:00(местное) или30m,2h,1d.max messages scheduled <чат>— что ждёт отправки. Для MCP —atуmax_messages_sendиmax_messages_scheduled. Что учесть: отменить отложенное можно только в приложении MAX (usage.md).max chats read <чат>иmax messages list … --mark-readотмечают чат прочитанным — только когда вы это попросили. Для MCP —max mcp --allow-mark-read. Что учесть: собеседник видит отметку. Без этих команд чтение по-прежнему ничего не отмечает (usage.md).max export messages <чат> --format jsonl|mdвыгружает переписку из локальной копии в JSONL или Markdown, с--sinceи--output. В MAX не ходит. Что учесть: чего в копии нет, команда называет в stderr. Файл из--outputдоступен только вам (usage.md).max messages delete <чат> <id…> --allow-dangerousудаляет сообщения, до 10 за раз. По умолчанию только у вас; с--for-everyone— у всех в чате. Для MCP —max mcp --allow-delete, только «у меня». Что учесть: без--allow-dangerousкоманда отказывает. Каждое удалённое сообщение считается вsendsPerHour(usage.md).
Исправлено
- Обновление
maxбольше не стирает прочитанную историю. Раньше каждая новая версия с другим устройством локальной копии выбрасывала все сохранённые сообщения. Теперь сообщения переносятся в новую копию. Что учесть: этот выпуск сам меняет устройство копии, и история сохранится. Чаты и люди, как и раньше, приходят заново при следующем входе. - Если MAX отказал фоновому серверу во входе, команды 10 минут не запускают новый сервер. Раньше
каждая команда поднимала сервер, который снова пытался войти и снова получал отказ.
max session startснимает это ожидание сразу. max watchвидит сообщения, которые отправил самmax. Раньше они проходили мимо: MAX не присылает сообщение обратно тому подключению, которое его отправило.- Несколько команд
maxразом больше не теряют вход в локальной копии. Раньше из трёх одновременных команд две писали «the local record did not take this login» и не сохраняли чаты, участников и отметку синхронизации. Теперь вторая ждёт, пока допишет первая.
Безопасность
- Текст ошибки тоже не управляет терминалом. В 0.7.0 это сделали для сообщений, имён и таблиц;
теперь управляющие символы показываются как
\x1bи в тексте ошибки. Почему: ошибка часто повторяет то, что вы ввели или что ответил MAX.
0.7.0 — 24.09.2026
Что нового
max reactions remove <чат> <id>снимает вашу реакцию.- Группы и каналы под
max chats: посмотреть ссылку, вступить, выйти, создать группу, добавить и удалить людей, назначить и снять админа, переименовать, поменять настройки, перевыпустить ссылку. Здесь же были заявки на вступление — их убрали в 0.17.0, потому что в MAX их нет. Что учесть: всё это видят другие люди, и каждое действие проходит те же проверки, что отправка (usage.md). max updateобновляетmaxтем же менеджером пакетов, которым он поставлен;--checkтолько говорит, есть ли версия новее. Что учесть: раз в сутки человек в терминале видит строку о новой версии; агент и скрипт — никогда. ВыключаетсяupdateCheck: falseвdefaults(installation.md).- Дополнение по Tab в zsh, bash, fish и PowerShell:
source <(max complete zsh). Предлагает команды, флаги, их значения, а также чаты и людей из локальной копии — без подключения к MAX (installation.md). max mcp— тот же профиль для агентов по MCP, для клиентов без терминала (Claude Desktop, Cursor). Подключение — docs/mcp.md. Что учесть: сервер только читает, пока не запущен с--allow-send; отправка проходит те же проверки, чтоmax messages send.max mcp --allow-send --confirm-sendпоказывает форму перед каждой отправкой: в какой чат (название и id) и что. Что учесть: без вашего «да» ничего не уходит; клиент, который не умеет показывать формы, получает ошибку (docs/mcp.md).max messages send … --file <путь>отправляет фото и файлы; несколько фото уходят одним сообщением.
Безопасность
- Чужой текст больше не управляет терминалом. Сообщение, имя отправителя, название чата, имя
файла или реакция с управляющими символами могли стереть строку и напечатать поверх того, что
maxуже вывел. Теперь такие символы показываются как\x1b— в ленте, в таблицах, в сообщениях об ошибках и в подсказках по Tab. Что учесть: JSON не меняется — он и раньше их экранировал.
0.6.0 — 24.09.2026
Что нового
max commands --jsonописывает все команды, аргументы, флаги и коды выхода одним ответом. Команды, которые что-то меняют в MAX, помеченыmutates: true. Почему: агенту не нужно звать--helpдля каждой команды. Что учесть: работает без входа в MAX и даже со сломанным файлом настроек.max messages send … --reply-to <id>— ответ на сообщение.max messages send … --markdown(или--md) оформляет текст:**жирный**,_курсив_,~~зачёркнутый~~и`код`. Без флага текст уходит как набран.max reactions add <чат> <id> <эмодзи>ставит реакцию; прежняя ваша заменяется.- Реакции видны при чтении:
messages list,showиcontextпечатают под сообщением👍 3 🔥 1 (you: 🔥), в JSON — полеreactions. Что учесть: это один дополнительный запрос на страницу, только чтение. С--offlineреакций нет (null), потому что они не хранятся. - Журнал отправок и список разрешённых получателей. Каждая попытка отправки пишется в журнал без
текста —
max sends list. Необязательный список получателей —max recipients add|remove|list|off; отправка в чат не из списка отказывает с кодом7. Профиль только для чтения (readOnly) отказывает с кодом5. Что это защищает и что нет — security.md. max session start qr | qr-chrome | sms | token— вход без копирования токена из браузера.qrрисует QR-код в терминале (в узком терминале откроет его в браузере);qr-chromeиsmsоткрывают настоящий web.max.ru в отдельном окне Chrome, Chromium, Edge или Brave. Без способа — как раньше: токен вручную или из трубы.
Изменено — может сломать скрипты
- Отправка ограничена лимитом в час: по умолчанию 30 сообщений (
sendsPerHour). Сверх лимитаmax messages sendотказывает с кодом8. Раньше лимита не было. Что учесть: скрипту, который шлёт больше, нужно поднятьsendsPerHourв настройках.
0.5.0 — 24.09.2026
Что нового
max messages download <чат> <id> [--output <каталог>]сохраняет фото, файлы, видео и аудио из сообщения. Существующий файл не перезаписывается.max config set <настройка> <значение>иmax config unset <настройка>меняют файл настроек без редактора; с--defaults— для всех профилей сразу. Новый разделdefaultsв файле действует на каждый профиль, у которого нет своей настройки.max chats list --unread— только чаты с непрочитанным.max messages list <чат> --after <id|время>читает вперёд — то, что пришло после сообщения или момента. Подсказка следующей страницы —--after <id самого нового>.max chats show <чат>— один чат с участниками;max contacts show <человек>— один человек по id, @username или части имени, с общими чатами. Что учесть: неоднозначное имя не угадывается — команда перечисляет подходящих.- Всё новое в этой версии только читает: ничего не отправляет и не отмечает прочитанным.
Исправлено
--offlineработает. Раньше флаг не доходил ни до одной команды: чтение всё равно шло в MAX, аmax --offline messages sendотправлял сообщение. Теперь чтение отвечает из записанного, а отправка и скачивание с--offlineотказываются. Что учесть: если вы запускали--offline messages sendна 0.4.0 или раньше, сообщение ушло.- Ошибка в файле настроек объясняется словами: какая настройка неизвестна и какие есть, что допускает значение. Раньше это было сообщение библиотеки проверки.
- Сломавшийся посреди команды журнал запуска (
--record) больше не роняет команду. Вместо этого — одна строка предупреждения в stderr, а ответ и код выхода прежние. Предупреждение видно и с--quiet.
Безопасность
- Версии публикуются из GitHub Actions, и npm прикладывает к ним подтверждение происхождения. По нему можно проверить, что пакет собран из этого репозитория.
0.4.0 — 23.09.2026
Что нового
max messages show <чат> <id>— одно сообщение по id;max messages context <чат> <id>с--beforeи--after— окно вокруг него. Искомое помечено◀в ленте и"anchor": trueв JSON. Что учесть: если сообщения нет, команда говорит «не найдено», а не показывает соседнее.max skill showпечатает инструкцию для агента из установленного пакета:max skill show > ~/.claude/skills/max-cli/SKILL.md.max config showпоказывает, какой профиль действует и что его выбрало, файл настроек и есть ли он, все профили — включая те, что есть только в состоянии и в файл настроек не записаны, — и каждую настройку с тем, откуда она взялась: флаг, переменная, файл или встроенное значение. Что учесть: если заданMAX_CONFIG_DIRили соседние переменные, команда предупреждает, что используется не та запись в ключнице, что обычно.- Текст сообщения можно передать через pipe:
echo "текст" | max messages send <чат>— без аргумента с текстом он читается из stdin. Почему: так текст не видятpsи история оболочки, и в нём могут быть переводы строк. --timeout <срок>ограничивает всю команду целиком — подключение, вход и сам запрос, а не ожидание одного ответа.max doctorпоказывает, от чего зависит каждая команда, без обращения к MAX: откуда берётся токен (сам токен не печатается), сколько было входов и когда последний, какие профили входили, схему локальной копии против той, что знает эта версия, и какая запись ключницы используется. Что учесть: команда отвечает и тогда, когда всё сломано: «сессии нет» — это поле ответа, а не ошибка.
Изменено — может сломать скрипты
- Флаг
--queryу списков переименован в--search. Изменение вошло ещё в 0.3.0, но в его описании его не было. Что учесть: скрипт с--queryполучит ошибку — замените на--search.
Исправлено
messages list --before <id>больше не требует, чтобы сообщение было прочитано раньше: время отправки берётся из самого id.- Участники групп показываются по имени, а не числом. Раньше имя было только у тех, кто есть в контактах, и в групповом чате почти все были номерами. Имена берутся одним запросом и сохраняются, так что следующее чтение их уже не спрашивает. То же — для авторов ответов и пересылок.
- Выпуск версии больше не останавливается сразу после публикации, не поставив тег. Так было дважды; теперь версия проверяется в обход кэша npm, с ожиданием до трёх минут.
0.3.0 — 22.09.2026
Что нового
- Переписка читается лентой: разделитель при смене дня, строка
время автори текст под ней, выровненный по колонке, с переносами по ширине терминала.вы— ваши сообщения; автор без имени показан номером.↳— на что ответ,↪— чья пересылка: MAX присылает их целиком, и они сохраняются в локальной копии. -vи-vv— подробнее: id сообщения, отправителя, чата и адреса вложений; затем всё, что известно о сообщении.--jsonl— по объекту JSON на строку, для потока иjq.- Вложения показываются ссылками:
📎 photo,📎 photo ×3 1 2 3,📎 файл.pdf · 24 MB. В JSON —url,width,height,title. Что учесть: ссылка на фото открывается без входа — кому её переслали, тот и увидит фото. senderColors: trueв настройках профиля — свой цвет у каждого автора. По умолчанию выключено.
Изменено — может сломать скрипты
-vтеперь означает подробность вывода, а версия —max -V. Строки о запросах на stderr включает--trace— это бывший--verbose. Что учесть: скрипт, который звалmax -vза версией или--verboseза трассировкой, должен перейти на-Vи--trace.- Флаг
--queryу списков переименован в--search(в описании этой версии изначально не был указан). - Локальная копия переходит на схему 4 и при первом запуске собирается заново. Что учесть: прочитанная история в этой версии не сохраняется — её придётся прочитать снова.
Исправлено
- Имя, подходящее к нескольким чатам, выводит их списком с id, а в JSON — полем
candidates. - Предупреждение о локальной копии называет схему и что делать. Раньше причина называлась словом
Error. - Подсказка о следующей странице у
messages listсоветует--before <id>. Раньше она советовала несуществующий--page.
0.2.0 — 22.09.2026
Что нового
max messages send --silent— отправить без уведомления у получателя. Что учесть: что именно MAX делает с этим флагом, пока не наблюдали — для этого пришлось бы написать живому человеку.- Токен обменивается при первом входе. MAX отвечает на вход своим токеном, и
maxсохраняет его в ключницу вместо вставленного из браузера. Это происходит один раз.
Исправлено
max session startбольше не портит рабочий токен. Раньше новый токен записывался до проверки, и опечатка заменяла рабочий токен мёртвым. Теперь сначала вход, потом запись.- Профиль привязан к своему аккаунту. Токен чужого аккаунта в профиле — отказ с объяснением. Почему: иначе команды профиля пошли бы от чужого имени.
- Подсказка после неясного исхода отправки называет существующую команду. Раньше она называла
несуществующую
max send. - Сообщения из ответа на вход больше не выбрасываются из-за неверно описанной формы ответа.
0.1.0 — 21.09.2026
Первая версия, которой можно поделиться.
Что нового
- Семь команд против настоящего MAX:
session start|end,account show,chats list,contacts list,messages list,messages send. - Профиль — первое слово:
max personal chats list. Несколько аккаунтов живут рядом, у каждого свой токен, своё состояние и своя локальная копия. То же задаётMAX_PROFILE. - Токен хранится в ключнице операционной системы, а не в файле и не в аргументе команды.
Что учесть: своего входа по номеру телефона пока нет —
max session startберёт токен из официального клиента. - Машинный режим:
--jsonкладёт на stdout ровно одно значение JSON и ничего больше; то же включается само, когда stdout не терминал. Ошибка уходит на stderr, stdout остаётся пустым. Ветвиться можно по коду выхода — таблица вdocs/commands.md. - Диагностика без содержимого:
--verboseпоказывает по строке на запрос,--recordкладёт их в каталог запуска на 30 дней,max runs list|show|pathчитает обратно. По умолчанию не записывается ничего. - Локальная копия: прочитанное сохраняется рядом;
--offlineотвечает из неё, не подключаясь, аmax cache clearеё забывает. - Настройки в
~/.config/max-cli/config.json, с порядком «флаг → переменная окружения → файл → встроенное значение». Опечатка в имени поля — ошибка с именем поля, а не молчаливое умолчание. - Два рантайма: Node 22+ и Bun 1.3+; собранная команда выполняется под обоими в CI.
- Чтение ничего не помечает прочитанным. «Получить историю» и «отметить прочитанным» — разные операции протокола; вторая не отправляется никогда, и это проверяется тестом.
- Отправка не врёт об исходе. Если ответ не пришёл —
outcome_unknown(код14), а не «ошибка» и не «отправлено». Что учесть: повторять такую отправку можно только с тем же--cid, иначе сообщение может уйти дважды. - Протокол MAX неофициальный и разобран обратной инженерией: это не Bot API. Что учесть: он может измениться без предупреждения; тогда команда скажет об этом одной строкой в stderr, а не сломается молча.
- Пока не умеет: входить по номеру телефона, работать с вложениями, реакциями, правками, группами, историями и звонками — только текст. Массовой рассылки не будет: это инструмент для личного аккаунта.