SOBAAgent Docs

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

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

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


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

Каждый вызов инструмента или shell-команды получает один из трёх уровней (src/core/trust/trust-manager.ts):

УровеньПоведениеПримеры
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-команд

Полный список правил: DEFAULT_COMMAND_RULES в src/core/trust/trust-manager.ts.

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-команду, пользователь видит запрос с вариантами (src/widgets/tui/lib/trust-dialog-manager.ts, ApprovalDecision в src/core/loop/types.ts):

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

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

В TUI синтаксис !команда выполняет команду напрямую, минуя AI. Проверка безопасности применяется перед выполнением (src/core/loop/agent-loop.ts_directShellAbortController).


6. Project Trust для skills

Skills из .soba/skills/ требуют одобрения перед первым использованием в проекте (src/core/skills/project-trust-store.ts).

Хранилище: ~/.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

On this page