Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions docs/bot.md
Original file line number Diff line number Diff line change
Expand Up @@ -433,11 +433,12 @@ max sales bot mcp config # запись для Claude Desktop, Cursor
(`max_bot_chats_moderate`). `max_bot_status` показывает, за какой профиль говорит сервер, откуда токен,
чей это бот и какие пишущие инструменты включены.

- `permissions.bot: readonly` у профиля бота — агент только читает;
- `allow` — только названные действия: `"allow": ["send"]` даёт отправку и комментарии, но не правку
и не удаление;
- удаление сообщения или комментария агент сначала показывает вам формой; `--allow-dangerous` при
запуске сервера убирает эту форму;
- `permissions.bot: readonly` у профиля бота — агент только читает, если нет более точных разрешений;
- чтобы разрешить только отправку и комментарии, задайте `permissions.bot: readonly`, затем
`permissions.bot.messages.send: allow`; проверьте, нет ли других более точных разрешений;
- удаление сообщения или комментария по умолчанию имеет уровень `ask`: агент показывает вам форму;
явный `allow` для `permissions.bot.messages.delete` или `--allow-dangerous` при запуске сервера
убирает её, если не включён `--confirm-send`;
- действия, которые правила чата велят подтверждать, агент показывает одной формой;
- `--confirm-send` — каждую запись вы сначала видите в форме.

Expand Down
4 changes: 3 additions & 1 deletion docs/dev/BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,9 @@ which; the plan for it starts by saying so.

## Parity tooling follow-up

- Completed 2026-10-04: release documentation describes canonical P7 defaults, resource-specific
restrictions, explicit deletion confirmation and current permission recipes. Publication is separate.

- Completed 2026-10-03: repository parity-audit skill runs the shared detailed auditor (#365; shared #470–#474). No account access.

- Completed 2026-10-03: shared sends-list factory honors configured limit and shared skill factory exposes named link-conversations instructions (#368).
Expand All @@ -199,4 +202,3 @@ which; the plan for it starts by saying so.
- Completed 2026-10-03: chats-show member counts explain possible self omission or partial lists without claiming incomplete loading (SDK0.137, CLI-62). Online and offline consumer regressions retain JSON counts and members.

- Completed 2026-10-03: MAX poll.already.voted refusal explains explicit retract before a new vote when the poll permits changing votes (CLI-61). Provider error identity and one attempted write are preserved; wire refusal regressions cover other errors and an explicit retract refusal.

12 changes: 12 additions & 0 deletions docs/dev/release-parity-readiness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Release documentation readiness

Claim: docs/release-parity-readiness, 2026-10-04. Release preparation requested by the owner;
another agent will publish MAX/TG. No version bump, live account operations or publication here.

The P7 cutover is merged. Correct stale read-only defaults and legacy configuration recipes in
remote/MCP/security/bot/agent guidance against canonical permission keys. Restrict each resource
explicitly in the scheduled-agent recipe. Preserve current generated command documentation.

Retain the fresh parity and release-check evidence privately. Draft the next changelog separately
for review, restoring the published version's historical section rather than adding new changes
to it. Check lint, types, tests, docs and parity before merging documentation corrections.
6 changes: 3 additions & 3 deletions docs/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ claude mcp add max-work -- max work mcp
**Claude Desktop, Cursor и другие** — готовую запись для их файла настроек печатает сам `max`:

```sh
max mcp config # только чтение
max mcp config # права текущего профиля
max work mcp config --confirm-send
```

Expand Down Expand Up @@ -158,9 +158,9 @@ claude mcp add max -- max mcp --confirm-send
| `max_reactions_remove` | `max reactions remove` | снять свою реакцию, так же |
| `max_polls_vote` | `max polls vote` | проголосовать или снять голос, по правам профиля |
| `max_polls_create` | `max polls create` | создать опрос, по правам профиля |
| `max_chats_mark_read` | `max chats mark-read` | отметить чат прочитанным, только с `--allow-mark-read` |
| `max_chats_mark_read` | `max chats mark-read` | отметить чат прочитанным, по правам `chats.mark-read` |
| `max_messages_delete` | `max messages delete` | удалить у владельца, по правам `messages.delete` |
| `max_chats_check` | `max chats moderate` | проверить группу по правилам и сделать, что они разрешают, только с `--allow-moderate` |
| `max_chats_check` | `max chats moderate` | проверить группу по правилам и сделать, что они разрешают, по правам `chats.moderate` и уровню каждого действия |
| `max_contacts_*`, `max_polls_close`, `max_chats_join` и другие | `max contacts …`, `max polls close`, `max chats …`, `max account update` | по правам соответствующего ресурса |

В `max_review` отбор вопросов учитывает сохранённые и новые расшифровки до фильтрации.
Expand Down
12 changes: 9 additions & 3 deletions docs/recipes.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,19 @@ claude -p "$(cat ~/max-recipes/morning.md)" --allowedTools "Bash(max inbox:*)"
**Запрет на уровне `max`** действует на любого агента:

```sh
max config set readOnly true # профиль ничего не отправит
for resource in messages reactions polls topics chats contacts account bot conversations; do
max config set "permissions.$resource" readonly
done
max config show # проверить эффективные права
max config set sendsPerHour 5 # или: не больше пяти сообщений в час
max recipients add "Иван Петров" # и писать только в эти чаты
```

`readOnly` запрещает отправку и вам тоже, пока вы его не выключите: `max config unset readOnly`.
Все попытки отправки, в том числе отклонённые, — `max sends list`.
`readonly` ограничивает каждый указанный ресурс и для вас, и для агента. Более точные ключи
вроде `permissions.messages.send: allow` имеют приоритет: удалите такие разрешения, если профиль
должен только читать. После миграции старый `readOnly` менять нельзя. Чтобы убрать своё ограничение,
используйте `max config unset permissions.<ресурс>`; тогда снова действуют унаследованные настройки
и defaults. Все попытки отправки, в том числе отклонённые, — `max sends list`.

**Чтение не выдаёт вас.** Ни одна команда в рецептах ниже не ставит отметку «прочитано»:
собеседник не видит, что агент открыл чат.
Expand Down
10 changes: 6 additions & 4 deletions docs/remote.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@ ChatGPT / Claude ──интернет──▶ Tailscale Funnel ──▶ mcp-

- **Кто прошёл пароль, тот читает ваш MAX.** Возьмите длинный пароль, который нигде больше не
используется. Не запускайте схему без пароля и никогда — через туннель без входа.
- **По умолчанию только чтение.** `max mcp` без `--allow-send` ничего не отправляет. Добавляйте
флаг, только когда приложение должно отправлять, и сначала прочитайте [mcp.md](mcp.md):
`--confirm-send` и список получателей действуют и здесь.
- **Большинство записей разрешено по умолчанию.** До подключения приложения задайте `permissions`
со значениями `readonly` или `deny` для ресурсов, которые оно не должно менять. Более точный ключ
может разрешить отдельное действие; проверьте эффективные права через `max config show`.
`--confirm-send` требует подтверждения каждой записи; список получателей действует и здесь.
Старый `--allow-send` не добавляет прав. См. [mcp.md](mcp.md) и [настройки](configuration.md).
- **Компьютер с `max` должен быть включён.** Чтобы пользоваться с телефона или с ноутбука, на
котором ничего не установлено, запустите всё это на небольшом сервере, который работает всегда,
и войдите в `max` там (`max setup --agent none`). Тогда с вашей стороны нужен только браузер.
Expand Down Expand Up @@ -59,7 +61,7 @@ read -rs PASSWORD && export PASSWORD
--external-url https://<устройство>.<сеть>.ts.net \
--no-auto-tls \
--listen 127.0.0.1:8080 \
-- max mcp
-- max mcp --confirm-send
```

`--no-auto-tls` — потому что сертификат уже даёт Tailscale; `--listen 127.0.0.1:8080` — чтобы до
Expand Down
4 changes: 2 additions & 2 deletions docs/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ Windows. На Windows режимы `0600` и `0700` не задают ACL: до

| Что | Как включить | Отказ |
|---|---|---|
| профиль только для чтения | `max agent config set permissions.messages readonly` | код `5`, соединения нет |
| только названные действия: `send`, `reaction`, `delete`… | `max agent config set permissions.messages.send allow` | код `5`, соединения нет |
| запрет записи в сообщения, кроме более точных разрешений | `max agent config set permissions.messages readonly`; другие ресурсы ограничиваются отдельно | код `5`, соединения нет |
| разрешить отправку на фоне запрета остальных записей в сообщения | сначала `max agent config set permissions.messages readonly`, затем `max agent config set permissions.messages.send allow`; другие ресурсы и более точные правила сохраняются | код `5` для запрещённых действий, соединения нет |
| список разрешённых получателей | `max <профиль> recipients add <чат>`; выключить — `recipients clear` | код `7` |
| не больше N в час: сообщения, пересылки, правки, закрепления с уведомлением, удалённые сообщения, добавленные в группы люди; реакции не считаются | `sendsPerHour`, по умолчанию `30` | код `8`, в ошибке — когда можно снова |
| журнал каждой попытки, без текста | всегда; смотреть — `max sends list` | — |
Expand Down
6 changes: 4 additions & 2 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,10 @@ max messages delete 0 100000000000000001 100000000000000002 --allow-dangerous #
max messages delete 0 100000000000000001 --for-everyone --allow-dangerous # у всех в чате
```

Удаление нельзя отменить, поэтому без `--allow-dangerous` команда отказывает и ничего не
спрашивает. По умолчанию сообщение пропадает только у вас; у собеседника оно остаётся. С
Удаление нельзя отменить, поэтому `messages.delete` по умолчанию имеет уровень `ask`: в терминале
нужно подтвердить действие, а в JSON-режиме — передать `--allow-dangerous`. Явный `allow` для
`permissions.messages.delete` разрешает удаление без этого вопроса; `readonly` и `deny` запрещают
его независимо от флага. По умолчанию сообщение пропадает только у вас; у собеседника оно остаётся. С
`--for-everyone` оно пропадает у всех — это собеседник уже не вернёт.

Удаление проходит те же проверки, что отправка. **Каждое удалённое сообщение считается в
Expand Down
4 changes: 3 additions & 1 deletion skills/max-cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,9 @@ max messages transcribe -1000 100000000000000001 --json # текст голо
`--timeout` для дедлайна команды. `--store-token <profile>` недоступен для текущих методов
MAX: все они отклоняют его до выполнения операции.
Отправляйте от имени бота только то, о чём просил владелец. Для агента есть
MCP-сервер бота: `max <имя> bot mcp`, по умолчанию только чтение. `--trace` и записи запусков
MCP-сервер бота: `max <имя> bot mcp`; права задаются через `permissions.bot.*`, большинство записей
разрешено по умолчанию. `permissions.bot: readonly` ограничивает запись, если нет более точных
разрешений; `--confirm-send` требует форму для каждой записи. `--trace` и записи запусков
(`max runs list`) работают и для бота.

Markdown `--md` обрабатывается форматтером MAX, не Telegram: `**жирный**`/`__жирный__`,
Expand Down
Loading