Песочница и подтверждения
Две настройки, делающие разную работу. Песочница решает, что агент может делать; подтверждения решают, о чём он обязан спросить заранее.
Песочница
sandbox_mode = "workspace-write"
| Агенту можно | |
|---|---|
read-only | смотреть файлы, не менять их |
workspace-write | писать внутри своего рабочего каталога |
danger-full-access | всё, что может ваша учётная запись |
Чтение не ограничивается никогда. Ограничиваются только запись и доступ к
сети, так что read-only означает: агент видит весь ваш диск и не меняет в нём
ничего.
Записываемый корень — это рабочий каталог
При workspace-write «рабочее пространство» означает тот каталог, в котором
открыт разговор или запуск. Не проект, не репозиторий — именно этот каталог.
Это самая важная фраза на странице. Запуск, открытый в вашей домашней папке,
может писать в .ssh, Documents и Library.
И это не гипотеза. Запланированная задача, созданная до появления отделов, несла в себе домашний каталог и отработала так сорок два раза; каждый запуск дотягивался до всего этого, никого не спросив и ничего не сказав. Смена значения по умолчанию для новых разговоров её не тронула, потому что умолчание не действует задним числом.
Поэтому есть вторая проверка — в момент, когда запуск стартует.
Где фоновому запуску позволено начаться
Запуску позволено начаться, когда его каталог — из тех, что продукт уже знает:
- внутри рабочего пространства
- внутри каталога какого-нибудь отдела
- там, где вы разрешили поимённо
Всё остальное придерживается и появляется в разделе Ждёт вас панели Dispatch с кнопкой Разрешить этот каталог. Разрешение одного места отпускает все запуски, которые его ждали.
Сам вопрос и есть смысл: запуск в необычном месте часто ровно то, чего и хотели, и ответом служит вопрос, а не отказ.
Подтверждения
approval_policy = "on-failure"
untrusted | каждая команда, не признанная безопасной, показывается заранее |
on-failure | команды выполняются без присмотра; вас спрашивают, когда какой-то нужен более широкий доступ |
never | перед запуском ничего не показывается |
never означает ещё и то, что ничего не придерживается. Тот, кто отключил
подтверждения, прямым текстом сказал, что не хочет, чтобы его останавливали, и
решить, будто он имел в виду что-то поуже, значило бы, что продукт отменяет
собственную настройку.
Используйте её для каталога, в котором вы дали бы волю скрипту.
Сочетание, на котором люди попадаются
sandbox_mode = "danger-full-access" вместе с approval_policy = "never" — это
агент, выполняющий произвольные команды на вашей машине, ничего не показывая и
ни о чём не спрашивая. Есть каталоги, где это верный ответ. Ваша домашняя
папка — не из них.
Две вещи, которых песочница не делает
- Она не мешает модели читать ваши файлы. Чтение не ограничено ни в одном режиме.
- Она не покрывает то, что выполненная ею команда делает потом. Скрипт, который агент запустил, наследует песочницу; служба, которую он запустил и которая переживает запуск, — нет.