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

67 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 на реальном подключении.