# Balda — SSH и Seatbelt: проверка 2026-10-18 ## Статус этой заметки — 2026-10-19 Ниже сохранён датированный технический прогон 2026-10-18, включая его тогдашние открытые проверки. Текущая эксплуатационная сводка: [[personal/projects/balda/setup]], планы: [[personal/plans/balda-remote-agent]] и [[personal/plans/workspace-gateway]]. С тех пор приняты production SSH/SRT к Mac, SMB доступ/отзыв, shared Beads fixture, native approval bridge и generic SSH Manager 0.3.2 с импортом существующего доверенного доступа Mac и проверкой установленного ключа из клиента; текущая приёмка: [[personal/projects/balda/ssh-client-route-2026-10-19]]. Полный модельный Prism lifecycle и реальные project DB остаются отдельной приёмкой. ## Исторический протокол проверки Общий план: [[personal/plans/balda-remote-agent]]. Workspace Gateway: [[personal/plans/workspace-gateway]]. ## Факты установки на дату исходной проверки - Docker context: `colima`; Docker daemon сообщает `Ubuntu 24.04.4 LTS`. - На Mac `26.7.1` присутствует `/usr/bin/sandbox-exec`. - Из основного контейнера `balda-mm-mac` открывается SSH TCP/22 до `host.docker.internal`, получен banner `SSH-2.0-OpenSSH_10.3`. - Из того же контейнера доступен внешний `github.com:22`, получен SSH banner. - Эти сетевые пробы не передавали ключи и не выполняли удалённых команд: рабочая авторизация, host key pinning и права пользователя ими не приняты. - В production по-прежнему `permissions.mode: allow_all`; профиль Seatbelt для рабочего запуска из Balda этим тестом не устанавливался. ## Проверка Seatbelt На синтетических файлах выполнены чтение разрешённого пути, запрещённое чтение другого пути и запрещённая запись через дочерний `/bin/sh`. Оба запрещённых действия завершились `Operation not permitted`, исходный файл сохранился. Это проверка работы правила и наследования ограничения, а не готовая политика изоляции агента: тестовый профиль разрешал остальные операции и запрещал только контрольную папку. ```json { "macos": "26.7.1", "allowed_read": { "exit_code": 0, "stdout": "allowed", "stderr": "" }, "blocked_read": { "exit_code": 1, "stdout": "", "stderr": "cat: /private/tmp/workspace-gateway-seatbelt-nh3ciwhu/blocked/probe: Operation not permitted" }, "blocked_child_write": { "exit_code": 1, "stdout": "", "stderr": "fixture: /private/tmp/workspace-gateway-seatbelt-nh3ciwhu/blocked/probe: Operation not permitted" }, "blocked_file_unchanged": true, "scope": "Synthetic deny-rule/inheritance probe, not an approved production agent profile" } ``` ## Готовые средства [anthropics/sandbox-runtime](https://github.com/anthropics/sandbox-runtime) уже предоставляет запуск произвольного процесса с ограничениями файлов и сети, на macOS используя Seatbelt. Изучена документация; пакет не устанавливался и рабочие профили этого проекта не принимались. Сначала проверяется готовое средство и штатная sandbox конкретного агента, затем определяется, нужен ли какой-либо дополнительный launcher. [Beads](https://github.com/gastownhall/beads/blob/main/docs/architecture/index.md) рекомендует Dolt server mode для одновременных записывающих клиентов. Настройка общего серверного доступа из Balda и удалённых сред ещё не выполнена. ## Открытые проверки на дату исходного прогона - Авторизованный SSH из контейнера в реальные среды с проверкой host key и ограниченными credentials. - Запуск настоящих ACP-агентов и обычных команд на Mac внутри принятой sandbox. - Запрет обхода sandbox через альтернативную SSH-команду, дочерний процесс или доступ к секретам. - Права на файлы и сеть, совместимость native sandbox агента с внешней оболочкой. - Запросы разрешений у агента и штатный `ask` Balda. - MCP, общая БД Beads и полный цикл оригинального Prism на реальном подключении.