Перейти к основному содержимому

Песочница и подтверждения

Две настройки, делающие разную работу. Песочница решает, что агент может делать; подтверждения решают, о чём он обязан спросить заранее.

Песочница

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" — это агент, выполняющий произвольные команды на вашей машине, ничего не показывая и ни о чём не спрашивая. Есть каталоги, где это верный ответ. Ваша домашняя папка — не из них.

Две вещи, которых песочница не делает

  • Она не мешает модели читать ваши файлы. Чтение не ограничено ни в одном режиме.
  • Она не покрывает то, что выполненная ею команда делает потом. Скрипт, который агент запустил, наследует песочницу; служба, которую он запустил и которая переживает запуск, — нет.