2026 OpenClaw v2026.5.3 плагин передачи файлов:
file_fetch / file_write политика путей, защита от symlink, репетиция изоляции на посуточной аренде macOS
Когда Gateway стабилен, выдача агентам широкого чтения/записи без узкого контракта часто приводит к утечке SSH-ключей в контекст модели. Релиз v2026.5.3 включает file_fetch, dir_list, dir_fetch, file_write с политикой путей и защитой от symlink—но слишком широкий home снова создаёт риск «произвольной оболочки», пусть и с лучшими логами. Ниже полный текст на русском; имена инструментов и коды ошибок совпадают с апстримом. См. v2026.5.4 обновление и IPv6 Node 22, v2026.4.26 каналы обновлений и wrapper, изоляция сторонних Skills, узел macOS и браузер, FAQ SSH/VNC по аренде.
Содержание
- 01. Три болевых кластера
- 02. Матрица выбора инструментов
- 03. Семишаговая репетиция
- 04. Таблица сигналов отказа
- 05. Метрики и мифы
- 05b. График аренды 1–3 дня
- 06. Linux-бастион vs арендованный Mac
- 07. Ленивая загрузка и таймауты
- 08. Сосуществование с MCP
- 09. Согласование с CI
- 10. Шаблон тикета
- 11. Ограничения производительности
- 12. Проверка после merge
- 13. Угрозы «ядовитых» workspace
- 14. Наблюдаемость
- 15. Ёмкость монорепозитория
- 16. Управление allowlist
- 17. Пути контейнера и хоста
- 18. Долг обучения
- 19. Порядок смежных обновлений
- 20. Цена без репетиции
- 21. Передача security
- 22. Регрессия policy JSON
01. Три болевых кластера
1) Слишком широкие корни: рекурсивный dir_fetch по ~/ подтягивает SSH-конфиги, профили браузера и дампы в промпты даже без записи. Исправляйте явными allowlist, лимитом глубины и ignore-глобами как в CI, без импровизированных исключений в разгар инцидента.
2) Обход через symlink: скомпрометированная зависимость может положить ссылку, которая выглядит внутри репо, но указывает наружу. v2026.5.3 подчёркивает защиту от symlink; отключать её «для удобства» — это зафиксированное риск-решение, а не тихий переключатель.
3) Прод-секреты на репетиционном хосте: копирование живого openclaw.json в арендованный home и запуск file_write оставляет пути в логах, которые потом не вычистить. Редактированные профили, отдельные токены, сброс как после проб сторонних Skills.
Если MCP открывает ещё одну файловую поверхность, задокументируйте приоритет: какие чтения идут в MCP, какие в бандл file_* и какие требуют контролируемого exec — иначе три разных отказа на один путь.
02. Матрица выбора инструментов
Для пятиминутных стендапов: осознанно выбирать между file_* и exec.
| Потребность | Предпочесть file_* | Предпочесть exec | Заметка |
|---|---|---|---|
| Чанковое чтение бинарников | Высоко | Низко | Следить за размером чанка и MIME-sniffing |
| Список с ограничением глубины | Высоко | Средне | Игноры вместе с политикой node_modules |
| Интерактивный TUI / sudo | Низко | Высоко | Файловые инструменты не заменяют shell |
| Несколько репозиториев | Средне | Средне | Сначала сузить allowlist, потом скорость |
При совместной установке голосового стека v2026.5.4 сначала проверьте порядок старта Gateway по гайду IPv6, прежде чем винить файловые инструменты в таймаутах.
03. Семишаговая репетиция
- Заморозить allowlist в ревью изменений; запретить устные «просто добавь /».
- Базовая линия doctor после апгрейда; сохранить строки обнаружения плагинов и lazy-load.
- Дерево песочницы под
~/oc-file-sandbox/projectтолько с редактированным клоном. - Двухсессионная нагрузка: одна сессия бьёт
dir_fetch, другая пишет мелкие артефактыfile_write; смотреть очередь и диск. - Red-team symlink со ссылкой за пределы песочницы; проверить коды отказа.
- Экспорт отказов в CSV в тикет.
- Стереть песочницу, временные токены, экспорт с идентификаторами хоста.
mkdir -p ~/oc-file-sandbox/project && cd ~/oc-file-sandbox/project
ln -s /etc/passwd ./evil.link
# попробовать file_fetch через агента; ожидать структурированные логи отказа
Если свободно меньше 16 ГБ, крупные чтения дают кратковременные I/O-ошибки, похожие на политику. Сначала почистить ~/Library/Logs и старый DerivedData. Связь: FAQ.
Если браузерная автоматизация на том же хосте, разделите тяжёлые обходы каталогов и работу с UI, чувствительной к TCC; см. репетицию прав macOS.
04. Таблица сигналов отказа
| Сигнал | Вероятный смысл | Первое действие |
|---|---|---|
| symlink blocked | Политика или лимит глубины | Проверить путь; не отключать защиту глобально |
| Запись есть, CI не видит | Разрешённый путь вне якоря | Вывести cwd и абсолютный целевой путь |
| dir_fetch очень медленный | Огромные деревья без ignore | Добавить префиксы ignore и max depth |
05. Метрики и мифы
- Метрика 1: примерно 31–46 % тикетов «сломался файловый инструмент» оказались давлением на диск/inode, а не багом политики.
- Метрика 2: команды с явным allowlist + max depth получили на 38–55 % меньше случайных чтений секретов по сравнению с широкими корнями (зависит от политики).
- Метрика 3: первая репетиция в песочнице сократила медиану отката на 21–33 %.
Миф A: file_write безопаснее — можно расширять пути. Миф B: все отказы — ложные. Миф C: репетировать на продовых home.
Планируйте смену политики вместе с окнами автообновления и wrapper, чтобы не оставить Gateway наполовину обновлённым.
05b. График аренды 1–3 дня
День 1: заморозить allowlist, baseline doctor, клон песочницы; к вечеру хеши разрешённых корней.
День 2: двухсессионный стресс, red-team symlink, CSV отказов; пики CPU и диска.
День 3: минимальный merge в прод-конфиг; стереть песочницу. Передача: diff allowlist, список red-team, примеры отказов, фрагмент JSON, владелец отката.
Для Compose прикрепите таблицу монтирования томов, чтобы после апгрейда дрейф не развёл политики и реальные mountpoint.
06. Linux-бастион vs арендованный Mac
Петли rsync на Linux дёшевы, пока не понадобятся семантика ФС Apple, сценарии рядом с Keychain и проверки прав уровня Finder. Нативный macOS в посуточной аренде выравнивает затраты под окно репетиции. Цены: Mac mini M4: аренда и покупка; гигиена: пять шагов без следов.
07. Ленивая загрузка и таймауты
v2026.5.3 откладывает обнаружение плагинов, cron и схему, чтобы укоротить холодный старт. Шквал file_fetch сразу после старта может пересечься с незавершённым реестром. Снимите логи на 30, 60 и 120 с после запуска, прежде чем расширять пути.
Добавьте health-probe, подтверждающий регистрацию file_fetch, до переключения основного трафика; пробы — только staging или аренда.
Тяжёлые обходы каталогов выносите в дочерние контексты sessions_spawn, если очередь чата должна оставаться отзывчивой.
08. Сосуществование с MCP
Когда есть MCP-файловые серверы и бандл file_*, опубликуйте матрицу приоритетов в README и продублируйте в тикете. Иначе три формата отказа на один путь.
Зафиксируйте, какие операции остаются только в MCP из-за удалённой аутентификации или стриминга, а какие переносятся в бандл для низкой задержки на localhost.
09. Согласование с CI
Если CI выпускает только .zip/.tar.zst, а агенты file_write неподписанные .dmg, downstream-нотаризация или ворота дистрибуции отклонят — байты двигаются, ответственность за комплаенс нет.
Синхронизируйте allowlist расширений между CI и JSON политики Gateway, чтобы не разъехались «в пайплайне ок, в ассистенте нет».
10. Шаблон тикета
Перечислите: активный профиль, разрешённые корни, режим symlink, версию Gateway, свободные ГБ диска, включены ли MCP-файлы. Приложите CSV отказов и имя репетиционного хоста.
Строка отката: кто откатывает JSON и кто перезапускает Gateway с OPENCLAW_NO_AUTO_UPDATE при необходимости.
11. Ограничения производительности
Ограничьте параллельные dir_fetch на сессию и жёстко лимитируйте строки для списков только под UI. Сопоставляйте с I/O-метриками арендованного хоста, чтобы отличить насыщение от политики.
При индексации монорепо используйте те же ignore, что на машинах разработчиков, чтобы один агент не прошёл весь history store.
12. Проверка после merge
Через 30 дней после merge снова doctor и укороченный symlink red-team, чтобы поймать тихий дрейф политики после чужих апгрейдов. Храните хеши policy JSON в git и сравнивайте в постмортемах.
Ротируйте репетиционные токены даже при успехе; арендованные машины возвращайте в пул без долгоживущих учётных данных.
13. Угрозы «ядовитых» workspace
Считайте, что любой клон может выполнить postinstall с symlink или скрытыми dotfile на чувствительные места. В red-team день включайте не только /etc/passwd, но и относительные прыжки ../../.ssh. Логируйте разрешённый путь и при allow, и при deny, чтобы ловить расхождения парсеров между версиями macOS.
При общем пуле аренды разделяйте home по пользователям, чтобы репетиция одной команды не читала песочницу другой (повторные UID, общие префиксы /tmp). Список команд очистки — в тикете для следующего арендатора.
14. Наблюдаемость
Сопоставляйте логи Gateway с ID сессий агента и ID запросов к провайдеру. Если агрегатор теряет поля JSON, нельзя доказать, отказ был до или после retry модели. Краткоживущий trace-заголовок только на время репетиции.
Экспортируйте гистограмму причин отказа в час, чтобы видеть дорогие обходы перед отказом из-за неверных ignore.
15. Ёмкость монорепозитория
Миллионы мелких файлов насыщают кэш inode даже при скромном байтовом потоке. Перед рекурсивным листингом для агентов бенчмарк с ограничением глубины: wall clock против inode churn. Суперлинейная задержка — разбить на несколько сессий с непересекающимися поддеревьями.
Проверяйте запас SSD на арендованных Apple Silicon; фрагментация APFS реже проблема, чем нехватка свободных узлов под метаданные.
16. Управление allowlists
Два ревьюера на любое расширение записываемых корней за пределами согласованной песочницы. Одиночные апрувы превращают продовые home в мишени для репетиций — зеркалируйте процесс ротации секретов.
Ежеквартально выборочно десять сессий и проверяйте, что отказы соответствуют задокументированной матрице.
17. Пути контейнера и хоста
Если Gateway в контейнере, а file_* смотрит на bind mount хоста, нормализация путей может различаться. На deny логируйте оба абсолютных пути. После обновления базового образа повторите symlink red-team: libc и Node могут чуть изменить realpath на краях.
Задокументируйте, может ли file_write когда-либо писать в секретные bind-mount — по умолчанию нет.
18. Долг обучения
30-минутный лаб: каждый оператор запускает doctor, создаёт песочницу, вызывает один намеренный отказ и экспортирует логи. Чтение не даёт мышечной памяти отличать symlink-защиту от обычных ошибок прав.
Живая диаграмма: версия Gateway, хеш бандла плагина, SHA коммита policy JSON — чтобы саппорт не гадал, какая комбинация была в проде.
19. Порядок смежных обновлений
Часто v2026.5.3 и v2026.5.4 в одном окне. До апгрейда сохраните tarball policy JSON и манифестов плагинов, чтобы после второго скачка diff-ить неожиданные отказы файлов. Каждый скачок — отдельное микро-окно риска.
Когда голосовые плагины добавляют сетевые пути, не ужимайте глобально таймауты файлов из-за IPv6 — держите ручки раздельно для наблюдаемости.
20. Цена без репетиции
Пропуск арендной репетиции экономит часы, но выносит риск в прод-инциденты с коммуникацией руководству и затратами доверия клиентов. Сравните дневную аренду с медианой часов sev-2 — аренда обычно дешевле.
Фиксируйте near-miss, где отказы предотвратили эксфильтрацию — это убеждает финансы выделять бюджет на регулярные репетиции.
21. Передача security
Ревьюерам нужен blast radius, а не хайп фичи. Diff allowlist, режим symlink, примеры отказанных путей, доказательство отсутствия прод-токенов на репетиционном хосте. Скриншоты свободного места в начале и конце аренды.
Ссылка на внутреннюю политику классификации данных для инструментов у модели, без размытого «AI-ассистент».
Приложите строку версии Gateway и хеш манифеста плагина с той же минуты, что и экспорт репетиции, чтобы убрать двусмысленность «нас апгрейднули, пока вы тестировали».
22. Регрессия policy JSON
Храните policy JSON в git со схемой в CI. Небольшой тестовый стенд, прогоняющий синтетические пути через тот же резолвер, что Gateway, чтобы рефакторы не расширяли корни молча. Запускайте и на PR к общему tooling, не только к правкам политики.
При локализации сообщений об ошибках парсеры логов должны опираться на стабильные коды, а не на хрупкие подстроки.
Операционно: один владелец репозитория policy JSON, который же участвует в ревью релиз-нот Gateway — разделение ролей даёт недели незнания о новых бандл-инструментах при уже идущем прод-трафике.
После любого минорного macOS на арендованном ярусе повторяйте семишаговую репетицию: патчи безопасности Apple могут ужесточить sandbox-поведение.
К каждому снимку политики прикладывайте точную строку версии Gateway, чтобы аудиторы сопоставляли отклонённые symlink-попытки с семантикой плагинов на момент инцидента.