Files
obsidian-vault/personal/projects/balda/ssh-seatbelt-2026-10-18.md
T

5.4 KiB
Raw Blame History

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, исходный файл сохранился. Это проверка работы правила и наследования ограничения, а не готовая политика изоляции агента: тестовый профиль разрешал остальные операции и запрещал только контрольную папку.

{
  "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 уже предоставляет запуск произвольного процесса с ограничениями файлов и сети, на macOS используя Seatbelt. Изучена документация; пакет не устанавливался и рабочие профили этого проекта не принимались. Сначала проверяется готовое средство и штатная sandbox конкретного агента, затем определяется, нужен ли какой-либо дополнительный launcher.

Beads рекомендует Dolt server mode для одновременных записывающих клиентов. Настройка общего серверного доступа из Balda и удалённых сред ещё не выполнена.

Открытые проверки на дату исходного прогона

  • Авторизованный SSH из контейнера в реальные среды с проверкой host key и ограниченными credentials.
  • Запуск настоящих ACP-агентов и обычных команд на Mac внутри принятой sandbox.
  • Запрет обхода sandbox через альтернативную SSH-команду, дочерний процесс или доступ к секретам.
  • Права на файлы и сеть, совместимость native sandbox агента с внешней оболочкой.
  • Запросы разрешений у агента и штатный ask Balda.
  • MCP, общая БД Beads и полный цикл оригинального Prism на реальном подключении.