Protect host-run files from the agent; trust registry; git audit
- read-only in the sandbox: .opencode-sandbox/, .cc-safety-net/, .git/hooks, .git/config, an in-project core.hooksPath, the egress rules and the safety-net home; .git is pinned by a bind onto itself so it cannot be swapped - only trusted projects are loaded (init / trust): a .opencode-sandbox/ in a worktree or a subdirectory is no longer sourced on the host - run (before and after the session) and doctor report planted .git entries, redirected worktrees and per-worktree overrides - hide Firefox, Claude, VS Code, Cursor and Codex configs
This commit is contained in:
+21
-1
@@ -69,7 +69,11 @@ opencode-sandbox run
|
||||
`~/.local/share/opencode-sandbox/<проект>/password` (выводится при первом запуске).
|
||||
|
||||
Закоммитьте `.opencode-sandbox/` (кроме `local/`) и `.cc-safety-net/` — каждый, кто
|
||||
склонирует проект, получит ту же песочницу.
|
||||
склонирует проект, получит ту же песочницу. `sandbox.conf` и хуки — это bash, который
|
||||
выполняется на вашем хосте, поэтому загружаются только доверенные проекты: `init` доверяет
|
||||
созданному проекту, а в клоне прочитайте `.opencode-sandbox/` и выполните
|
||||
`opencode-sandbox trust` (список — `~/.config/opencode-sandbox/projects`).
|
||||
`.opencode-sandbox/` в worktree или подкаталоге игнорируется.
|
||||
|
||||
## Файлы проекта
|
||||
|
||||
@@ -233,6 +237,14 @@ opencode-sandbox run
|
||||
(tmux, X11, сокеты браузеров, других программ), поэтому у агента свой `/tmp` — в
|
||||
`<состояние>/tmp` (файлы старше 7 дней удаляются при запуске). Скриншоты и логи агента ищите
|
||||
там. Docker смонтирует путь из `/tmp` из `/tmp` хоста — монтируйте пути проекта.
|
||||
- **Только чтение внутри проекта:** то, что хост выполняет вне песочницы, — `.opencode-sandbox/`,
|
||||
`.cc-safety-net/`, `.git/hooks`, `.git/config` (`core.fsmonitor` оттуда срабатывает при любом
|
||||
`git status`, хватит prompt'а оболочки), `core.hooksPath`, если он внутри проекта, — а также
|
||||
правила egress и домашний каталог safety-net в каталоге состояния. Сам `.git` — точка
|
||||
монтирования, его нельзя переименовать и подменить. git работает; не проходит только запись
|
||||
`git config` (например, `push -u` не запишет upstream). После каждой сессии `run` сообщает
|
||||
о других `.git` в проекте и worktree, о worktree, чей `.git` указывает в другое место, и о
|
||||
переопределениях для отдельных worktree; `doctor` проверяет то же.
|
||||
- **Скрыто:** `OCSB_HIDE_HOME`, `OCSB_HIDE`, приватные ключи в `~/.ssh` (`config`,
|
||||
`known_hosts` и `*.pub` видны; подписывает ssh-agent хоста).
|
||||
- **Сеть:** `HTTP(S)_PROXY` указывают на фильтр. `GIT_SSH_COMMAND` пускает ssh через него
|
||||
@@ -269,6 +281,13 @@ opencode-sandbox run
|
||||
правила.
|
||||
- **Проект доступен на запись.** Ошибки внутри него настоящие; cc-safety-net блокирует
|
||||
типичные разрушительные команды, git хранит историю — коммитьте чаще.
|
||||
- **Файлы, которые вы запускаете сами.** Хуки, конфиги и метаданные git защищены (см. выше),
|
||||
но код агент правит: изменённый `Makefile`, скрипт в `package.json` или файл в `bin/`
|
||||
выполнится с вашими правами, когда вы его запустите. Смотрите `git diff`, прежде чем
|
||||
запускать команды проекта на хосте.
|
||||
- **Подложенные репозитории обнаруживаются, а не предотвращаются.** `.git`, созданный агентом
|
||||
в новом каталоге или новом worktree, найдёт проверка после сессии; не запускайте там git,
|
||||
пока не посмотрели.
|
||||
- С `OCSB_TMP=shared` доступны `/tmp` хоста и его сокеты.
|
||||
- С `OCSB_DISPLAY=1` агент может открывать окна на вашем экране и пользоваться буфером обмена,
|
||||
пока его окно в фокусе.
|
||||
@@ -304,6 +323,7 @@ docker rmi opencode-sandbox-egress
|
||||
|
||||
```
|
||||
opencode-sandbox init добавить .opencode-sandbox/ в текущий репозиторий
|
||||
opencode-sandbox trust [каталог] доверять существующему .opencode-sandbox/ (клон)
|
||||
opencode-sandbox config итоговые настройки
|
||||
opencode-sandbox doctor зависимости и настройки хоста
|
||||
opencode-sandbox run [аргументы opencode] всё сразу, затем OpenCode
|
||||
|
||||
Reference in New Issue
Block a user