Вы открываете незнакомый репозиторий: свежий клон, чужой pull request, скачанный шаблон. Первое желание - открыть его как любой другой проект и начать работать, с агентами наготове. Но код, которого вы ещё не прочитали, - это не только текст, который вы будете смотреть; часть его способна исполниться сама, ещё до того, как вы что-либо решили.
Наивный ход - довериться репозиторию по факту его открытия: агенты включены, hooks подгружаются, задачи и рекомендации подхватываются автоматически, потому что так удобно и так всегда было со своими проектами. Со своим, доверенным кодом это и правда норма. Ошибка - перенести ту же лёгкость на код, происхождение которого вы не проверяли.
Ломается это на том, что репозиторий может нести исполняемое содержимое. Hooks, tasks, рекомендации расширений, скрипты, конфигурация MCP, submodules, неожиданные бинарники - всё это не пассивный текст, а то, что при обычном открытии проекта способно запуститься. Агент или hook, сработавший на недоверенном содержимом, - это исполнение кода, которое вы не аудировали, на вашей машине и под вашими правами.
Профессиональный механизм против этого - Restricted Mode. В stable 3.7.16 при открытии workspace в этом режиме агенты в нём недоступны: Cascade, Devin Local и все ACP-агенты отключены, а hooks не загружаются и не выполняются. Агенты снова становятся доступны, как только workspace выходит из Restricted Mode. По сути это жёсткий выключатель всего агентного слоя на время, пока доверие к коду ещё не установлено. Ничего не запускается автоматически: ни агент по вашей команде, ни hook по событию файла, пока режим включён.
Почему это сделано выключателем среды, а не правилом в промпте. Инструкцию "будь осторожен с незнакомым кодом" агент может истолковать и обойти - она остаётся текстом, который сам же интерпретирует. Restricted Mode не просит агента вести себя аккуратно; он не даёт агентному слою запуститься вообще. Безопасность здесь в том, что не исполняется ничего, а не в том, что что-то исполняется осторожно. Это тот же принцип, что sandbox и permission deny: защита средствами среды, а не доверие к тому, что текст будет истолкован правильно.
У этой защиты есть цена, и это осознанная цена. В таком workspace вы теряете автономию: пока режим включён, работать приходится руками, без делегирования агенту. Но это не дефект, а сам смысл режима - обменять удобство на гарантию, что недоверенный код не начнёт действовать за вас, пока вы его не изучили. В незнакомом репозитории эта потеря автономии временная - она снимается ровно тогда, когда снимается неизвестность.
Снимать ограничение только ради удобства не нужно. Прежде чем выйти из Restricted Mode, проверьте источник репозитория и то, что в нём способно исполниться: tasks, рекомендации расширений, скрипты, hooks, submodules и неожиданные бинарники. Смысл паузы именно в том, чтобы отделить чтение кода от его запуска - сначала вы понимаете, что перед вами, и только потом разрешаете этому работать. Особое внимание - тем местам, что исполняются без вашего явного вызова: событию hook, автозадаче, рекомендации расширения, установочному скрипту.
Проверять результат снятия ограничения нужно отдельным взглядом. Выйдя из режима, откройте Customizations и посмотрите, что реально загрузилось: какие rules, hooks, MCP и субагенты активировались вместе с доверием к проекту. Это тот же принцип, что и с профилями субагентов: разрешить и увидеть, что именно разрешилось, - разные шаги, и второй нельзя пропускать. Список загруженного и есть карта того, чему вы только что доверились, - по нему сверяют, не появилось ли лишнего.
Инженерный вывод прост и симметричен цене. Запрет по умолчанию для недоверенного кода дёшев - он стоит вам минут ручной работы и одной проверки. Разбор последствий уже сработавшего неаудированного hook дорог и не всегда обратим. Restricted Mode переносит стоимость с непредсказуемого "после" на предсказуемое "до", и в этом вся его польза. Дешевле всего входить в незнакомый код именно так: сначала запрет, потом чтение, и только потом - разрешение.
Типичные провалы предсказуемы. Первый - рефлекторно снять режим, чтобы "не мешал", и запустить агентный слой на коде, который так и не прочитали. Второй - осмотреть только видимый код и упустить ровно то, что исполняется само: hooks, tasks, рекомендации расширений. Третий - решить, что раз агенты были отключены, то и всё остальное безопасно, и не проверить, что загрузилось после выхода из режима. Признак всех трёх один: доверие выдали по факту открытия, а не по итогам проверки того, что этот репозиторий способен исполнить.