Справочник

Безопасность

Разрешения, trust-уровни, project trust и режимы безопасности SOBA Agent.

SOBA классифицирует операции агента (инструменты и shell-команды) по уровням доверия и запрашивает подтверждение пользователя для опасных действий.


1. Уровни доверия (TrustLevel)

Каждый вызов инструмента или shell-команды получает один из трёх уровней:

УровеньПоведениеПримеры
safeВыполняется автоматическиread, ls, git status, npm test
normalВыполняется без подтверждения (логируется)write, edit, git commit, bun install
dangerousТребует подтверждения пользователяrm, sudo, curl, git push

2. Режимы разрешений (PermissionMode)

Три режима, задаются в TrustManager.setPermissionMode():

РежимПоведение
ask (по умолчанию)Каждая dangerous-команда запрашивает подтверждение
repoDangerous-команды внутри текущего repo разрешены без повторного запроса; внешние, сетевые и privileged команды по-прежнему требуют подтверждения
fullВсе dangerous-операции разрешены без повторного запроса до конца текущей сессии

3. Классификация shell-команд

Встроенный список правил поддерживается runtime trust policy.

Dangerous — требуют подтверждения

Удаление: rm, rm -rf, rmdir, unlink, shred, srm
Привилегии: sudo, chown, chmod 777
Сеть: curl, wget, nc, ssh, scp
Git: git push, git reset
Dev-серверы (блокировка агента): bun run dev, npm run dev, npx vite
Скриптовые обходы: node -e, bun -e, python -c, ruby -e
Перемещение за пределы проекта: mv ... /tmp/, mv ... $HOME/
Файловые системы: mkfs.*, dd if=
Перенаправление в устройство: > /dev/sda

Normal — выполняются без спроса

Запись: write, edit, mkdir, cp, mv (внутри проекта), touch, chmod
Git: git add, git commit, git checkout
Пакетные менеджеры: bun install, npm install, yarn install, pnpm install
Сборка: make, cargo, go, docker, docker-compose

Safe — всегда разрешены

Чтение: read, ls, cat, head, tail, wc
Поиск: grep, rg, find (без -delete/-exec rm)
Git: git status, git log, git diff, git branch
Тесты/запуск: npm test, npm run, bun test, bun run
Информация: echo, pwd, which, env, date, whoami
Перенаправление: > /dev/null


4. Подтверждение опасных операций

Когда агент вызывает dangerous-команду, пользователь видит запрос с вариантами:

РешениеДействие
deny (n)Отклонить
once (y)Разрешить один раз
session (s)Разрешить на всю сессию (та же команда больше не запросит подтверждения)
repo (r)Включить repo-режим
full (f)Включить полный session-режим для всех dangerous-операций

Запрос также может показывать более безопасные alternatives. SOBA сейчас предлагает least-privilege rewrites для частых risky-паттернов: destructive cleanup, связанный с build-командой, и remote git push. Эти alternatives записываются в proof permission receipt, чтобы потом soba prove и soba verify показывали, что именно было разрешено или отклонено.


5. Прямые shell-команды (!)

В TUI синтаксис !команда выполняет команду напрямую, минуя AI. Проверка безопасности применяется перед выполнением.


6. Project Trust для skills

Skills из .soba/skills/ требуют одобрения перед первым использованием в проекте.

Хранилище: ~/.soba/project-trust.json.

Slash-команды:

КомандаДействие
/project-trust statusПоказать статус доверия текущего проекта
/project-trust approveОдобрить проект
/project-trust revokeОтозвать доверие

7. Кастомизация правил

TrustManager позволяет добавлять и удалять правила:

trustManager.addToolRule("my-tool", "dangerous");
trustManager.addCommandRule("my-cmd ", "safe");
trustManager.removeToolRule("my-tool");

8. Аудит

Все действия агента записываются в сессию (JSONL). Для просмотра shell-команд:

grep '"name":"bash"' ~/.soba/sessions/<session-id>.jsonl

Conversation items в session JSONL сохраняют user/model content для resume, поэтому этот файл следует считать чувствительными локальными данными. Flight/debug sidecars редактируют secret-bearing keys и распознаваемые credentials в persisted prompt/output strings, но credentials всё равно нельзя помещать в сессию.

Proof receipts добавляют отдельный локальный audit artifact в .soba/evidence/. Новые receipts рекурсивно редактируются, sealed SHA-256 digest и на POSIX записываются с правами только владельца. soba verify обнаруживает изменение файла и отклоняет successful evidence, связанный с denied tool call. Это не превращает workspace в sandbox и не заменяет аккуратную работу с credentials: redaction не умеет распознавать любой возможный формат секрета.

On this page