2026: плагины OpenClaw — fail-closed и обязательный manifest на удалённом физическом Mac‑шлюзе 7×24: аудит openclaw doctor, переключатели ACP dispatch и контролируемый откат (grep + FAQ)
Платформенным и security‑инженерам, которые держат безголовый удалённый Mac как неконтролируемый шлюз, быстро становится ясно: каждый плагин — это цепочка поставок. Здесь — связка обязательного manifest (без валидного manifest — не грузим) и fail-closed (ошибка валидации запрещает исполнение вместо тихого allow). Вы получите две матрицы решений, семишаговый runbook отката, готовые grep для приёмки и FAQ. Для выравнивания резолверов на том же классе узлов см. staging и split-horizon DNS на мультирегиональном удалённом Mac; про корпоративный egress и долгие сессии на шлюзе — OpenClaw + Feishu/Lark/Teams и egress на удалённом Mac (фрагмент openclaw.json + FAQ).
Введение и границы
На безголовом Mac в удалённой стойке плагины — часть поверхности атаки. В 2026 году нормой становится обязательный manifest (нет соответствующего manifest — не загружаем) плюс fail-closed (сбой валидации запрещает исполнение вместо тихого разрешения).
Этот материал переводит эту постуру в пункты чек-листа, подкреплённые doctor, и в grep, которые можно приложить к заявке на изменение; ACP (Agent Client Protocol) dispatch трактуется как главный рубильник для вопроса кто может попасть в планировщик плагинов. Держите снимки парой «конфиг + дерево плагинов», чтобы RTO отката укладывался в окно обслуживания. Вне области: контракты к вендорским моделям; предполагается, что launchd закрепляет пользователя сервиса и WorkingDirectory. Для базовой установки агентов 7×24 см. также OpenClaw v2026.4: руководство по установке 24/7 AI‑агентов на ZoneMac.
Три класса боли
- Ограничение: неявные полномочия и «запустилось — в прод». Возможности вроде
fs,networkилиsubprocess, не попавшие в manifest, в режиме fail-open часто разрешаются молча — аудит не докажет, что именно было дозволено. - Скрытая стоимость: doctor зелёный ≠ политика реально включена.
openclaw doctorможет закрывать рантайм и порты, тогда как hot reload так и не подхватил новые флаги enforcement manifest — снаружи остаётся legacy‑поведение. - Стабильность и аудит: откат без парных снимков — фикция. Агрессивный fail-closed ломает легитимную автоматизацию ночью; без снимков конфигурации и бандла плагина вы окажетесь с правкой JSON под дежурство, нарушая SLO 7×24.
Матрицы fail-closed × manifest
Первая таблица отвечает на вопрос «насколько жёстко». Вторая — на сигналы изменений и проверки.
| Среда | Manifest | Fail-closed | ACP dispatch |
|---|---|---|---|
| Продакшен, шлюз 7×24 | Обязателен | Вкл. | Только allow list clientId / workspace |
| Staging интеграция | Обязателен | Вкл. (shadow на плагин допустим) | Ослабление по тенанту команды + полный JSONL |
| Ноутбук разработчика | Обязателен (рекоменд.), зеркало прода | По желанию выкл. для скорости | Локально all-open или loopback |
| Сигнал изменения | Рекомендуемое действие | Доп. приёмка |
|---|---|---|
| Новый плагин или крупное обновление | Канареечный узел + двойной diff manifest | doctor + grep на объявленную версию схемы |
| Больше внешних ACP / агент‑клиентов | Ужесточить allow list и rate limits | Трассировка plugin spans по requestId |
| Всплеск ошибок с denied в логах | Сначала shadow-count, затем решение об откате | Diff пятиминутных окон до/после отката |
Чек-лист аудита openclaw doctor
Считайте doctor доказательством того, что политика реально загружена — отмечайте каждый пункт в тикете (ключи сопоставляйте с openclaw.json или переменными окружения по документации вашей поставки).
- Рантайм и PATH: соответствуют пользователю launchd;
which openclawсовпадает с бинарником из plist. - Разрешение manifest: печатает эффективные корни плагинов; отклоняет каталоги без manifest при включённом enforcement.
- Флаги fail-closed: doctor печатает boolean и файл-источник; WARN для релиза — блокер.
- ACP dispatch: состояние переключателя и мощность allow list; пустой allow list при включённом dispatch должен предупреждать, что ни один клиент не войдёт.
- Внешнее здоровье: пара
curlна localhost и/ready(если есть), чтобы не получить «самопроверка зелёная, reverse proxy красный».
Переключатели ACP dispatch
ACP dispatch здесь означает, могут ли запросы от агент‑клиентов (IDE, CLI, внешние оркестраторы) попасть в планировщик плагинов. При fail-closed порядок операций: сначала валидация набора плагинов по manifest, затем dispatch как охрана входной двери, чтобы скомпрометированный клиент не прыгнул сразу в high-risk hook.
Иллюстративный JSON (замените ключи на схему вашего релиза перед продом):
{
"plugins": {
"requireManifest": true,
"failClosed": true,
"manifestSchemaVersion": "2026-05"
},
"acp": {
"dispatchEnabled": true,
"allowedClientIds": ["ci-runner-prod", "vscode-workspace-ops"],
"denyByDefault": true
}
}
Согласуйте allowedClientIds с внутренним OAuth или субъектами mTLS и логируйте декартово произведение clientId × pluginId в JSONL для криминалистики.
Фрагменты grep для приёмки
Запускайте из архива или живого workspace (пути подставьте свои):
# Явные флаги fail-closed / requireManifest
grep -RniE 'failClosed|fail_closed|requireManifest|require_manifest' \
~/.config/openclaw ./openclaw.json 2>/dev/null
# У каждого каталога плагина должен быть manifest (нет = не грузим)
find "$OPENCLAW_PLUGIN_ROOT" -maxdepth 2 -type f \( -name 'manifest.json' -o -name 'plugin.yaml' \) | wc -l
# В проде allow list ACP dispatch не должен быть пустым
grep -Rni 'dispatchEnabled|allowedClientIds|denyByDefault' ~/.config/openclaw ./openclaw.json 2>/dev/null
Если первый grep ничего не находит, вы, вероятно, всё ещё на неявном fail-open — не подписывайте прод «на память».
Семь шагов контролируемого отката
- Заморозка: объявите обслуживание; приостановите cron, расширяющий поверхность вызовов.
- Снимок: tar
openclaw.json, деревьев плагинов, plist launchd и stdout doctor. - Обязательные manifest: reload, проверка grep, счётчики «отказ в загрузке».
- Fail-closed: единые коды ошибок для необъявленных capabilities; пятиминутный базовый JSONL.
- Ужесточение ACP dispatch: сначала shadow (только лог), затем deny-by-default.
- Триггер отката: при нарушении SLO восстановите парные снимки,
launchctl kickstart, повторите doctor. - RCA: обновите grep-чек-лист и тикет; назначьте следующую канарейку.
Ориентиры для сносок
- Окно наблюдения: смотрите минимум пятиминутное скользящее окно после правок политики прежде чем решать «оставить / откатить» — пики при старте не инцидент.
- Хранение снимков: держите в проде три восстановимые ревизии конфигурации, каждая с checksum tarball плагинов.
- Аудит: полный вывод doctor и захваты grep храните с тикетом ≥30 дней под типичные внутренние выборочные проверки комплаенса.
FAQ
В manifest есть capabilities — откуда «undeclared»?
Сравните разрешённый путь, который печатает doctor, с файлом, который вы правили; проверьте версию схемы и регистр полей. При необходимости прогоните тот же бандл на staging с полными логами загрузки.
После выключения dispatch старые сессии всё ещё дергают плагины?
Зависит от очередей и реализации: сделайте reload, при необходимости сбросьте неподтверждённую работу, если SLO позволяет, затем read-only smoke по критическим путям.
Совместимы ли fail-closed и shadow mode?
Да — shadow увеличивает счётчики «отказали бы» без смены HTTP статуса; переводите в жёсткий deny, когда метрики стабилизируются.
Китайская версия: OpenClaw 插件 fail-closed 与 manifest(简体).
Итог: почему Mac mini подходит под эту нагрузку
Управление плагинами переносит доверие с «устной традиции» на машинно проверяемую политику: manifest ограничивает capabilities, fail-closed задаёт поведение при сбое, ACP dispatch сужает вход, а doctor с grep даёт цепочку доказательств, которую ждут аудиторы.
На macOS это стыкуется с launchd, Unified Logging, Gatekeeper и SIP. Apple Silicon Mac mini M4 в простое держится порядка 4 Вт — удобно для шлюзов 7×24 и побочных проб; по сравнению с универсальными mini‑ПК за те же деньги длинные сессии OpenClaw, экспортёров здоровья и лёгкого CI runner на одной удалённой физической машине обычно ведут себя ровнее.
Если нужен выделенный хостинговый узел вместо своей стойки, Mac mini M4 в 2026 году остаётся одним из лучших стартов по цене/качеству — арендуйте удалённый физический Mac и превратите enforcement manifest и откат в повторяемую процедуру.
Нужен выделенный удалённый Mac под OpenClaw и жёсткие manifest?
Облачные Mac mini для шлюзов 7×24, усиления manifest и аудируемых откатов на ZoneMac.