Для командного использования выбирайте режим с поэтапным подтверждением: plan оставляйте для анализа, auto включайте только в ограниченной рабочей директории после проверок, а yolo не используйте в обычной разработке. Такой подход подходит, если вы отвечаете одновременно за код, API-ключи, SSH-доступ и воспроизводимость среды.
Кому нужно прочитать этот материал: техническим руководителям, которые устанавливают базовые правила работы команды с DAO-Code. Инженерам по безопасности, защищающим репозитории, ключи и сборочные учётные данные. Администраторам, которые готовят одинаковые среды DAO-Code для нескольких разработчиков.
Базовый выбор режима
Автоматическое выполнение DAO-Code не является синонимом небезопасной работы, но и не превращает агента в полностью контролируемый процесс. Риск зависит от того, что разрешено читать и изменять, какие команды могут запускаться, куда разрешён сетевой доступ и можно ли быстро отменить результат.
В официальной документации DAO-Code отдельно описаны пять вариантов поведения: plan, default, acceptEdits, auto и bypassPermissions. Это описание проекта, а не независимая сертификация безопасности. Названия и правила следует сверять с официальным README DAO-Code перед каждым обновлением среды.
Внутри команды удобно закрепить такую стартовую политику:
- только чтение, исследование архитектуры и подготовка плана —
plan; - обычная разработка в доверенном репозитории —
defaultс подтверждением отдельных действий; - пакетные правки в заранее ограниченной директории —
auto, но только после приёмочных тестов; - режим, который отключает или обходит разрешения, — не использовать в рабочих проектах;
- необратимые команды, производственные ключи и внешние инструменты — всегда через ручной approval gate.
Это разделяет скорость и контроль. Ускорить рутинное редактирование можно. Отказаться от проверки границ нельзя.
Операционные границы режимов
Главная ошибка при выборе режима — сравнивать только количество подтверждений. Важно проверять весь набор операций: чтение файлов, запись, запуск оболочки, доступ за пределами рабочей директории и сетевые вызовы.
В plan агент может подготовить изменения и объяснить предполагаемые команды, но человек сохраняет контроль перед выполнением. Это лучший вариант для незнакомого репозитория, кода после внешнего слияния и анализа проекта, где ещё не понятны скрипты сборки.
В default или режиме поэтапного согласования каждая чувствительная операция становится отдельной точкой решения. Такой вариант медленнее, зато позволяет увидеть фактическую команду, путь и цель до запуска.
acceptEdits может быть удобен для серии изменений в файлах, если рабочая область уже проверена. Но разрешение на редактирование не должно автоматически означать разрешение на запуск произвольных Shell-команд или чтение секретных каталогов.
auto подходит только тогда, когда границы заранее технически закреплены. Простого обещания «агент будет работать только в этом каталоге» недостаточно. Вы должны проверить правило на реальной попытке записать файл рядом с рабочей директорией, прочитать конфигурацию SSH и вызвать запрещённую команду.
Режим обхода разрешений особенно опасен тем, что его название может создать ложное ощущение «полного доверия к проекту». Доверие к исходному коду не означает доверие к установочным скриптам, зависимостям, хукам, MCP-инструментам и внешним ответам. В официальной политике безопасности DAO-Code заявлены правила, подтверждение чувствительных целей, журналы и опциональная системная изоляция. Эти функции нужно проверять в вашей конфигурации, а не считать заменой полноценного аудита.
Безопасно ли автоматическое выполнение DAO-Code? Только при ограниченном радиусе действий, отдельной среде и проверенном восстановлении. В открытом или производственном окружении ответ должен быть отрицательным для режима без подтверждений.
Правила каталогов и проверка на обход
Для ограничения DAO-Code одной рабочей директорией задайте правила в трёх слоях:
- разрешите чтение и запись только в каталоге проекта;
- явно запретите родительские директории, домашний каталог, каталоги с ключами и системные пути;
- отдельно ограничьте команды, которые могут менять права, устанавливать пакеты, открывать сеть или удалять файлы.
Проверяйте не только прямой путь. Тестируйте относительные переходы, символические ссылки, пути с пробелами, временные каталоги и команды, которые принимают путь через переменную окружения. Если политика запрещает /Users/ваш-пользователь/.ssh, это не доказывает защиту от копирования файла через вспомогательную команду.
Проверка должна быть отрицательной: вы специально создаёте безопасный тестовый файл за пределами рабочей области и просите выполнить запись. Затем проверяете, был ли запрос остановлен, создано ли подтверждение и попала ли попытка в журнал. Отдельно повторите тест в auto. Правило, работающее только в интерактивном режиме, нельзя считать достаточным.
Если вы используете macOS и полагаетесь на системную изоляцию, не смешивайте её с разрешениями самого агента. Документация Apple о macOS App Sandbox описывает модель системных ограничений, но включённая функция не доказывает, что все процессы, дочерние команды и подключённые инструменты ограничены так, как ожидает ваша команда. Проверьте фактические разрешения процесса и его потомков.
Как ограничить DAO-Code только рабочей директорией? Сначала задайте allow, ask и deny для путей, затем отключите доступ к родительским и чувствительным каталогам, после чего проведите попытки чтения и записи за пределами проекта в каждом разрешённом режиме. Результат фиксируйте в журнале приёмки.
Секреты и внешние подключения
Автоматизированный агент может получить доступ к секрету не только через прямое чтение файла. Риск появляется, если ключ передан через переменную окружения, аргумент команды, журнал оболочки, диагностический вывод, историю сообщений или дочерний процесс.
Для DAO-Code особенно важно проверить:
- ключ DeepSeek API и другие токены моделей;
SSH-конфигурацию и агент ключей;- учётные данные облака и реестров пакетов;
- ключи подписи, файлы окружения и секреты CI;
- MCP-инструменты, которые могут отправлять данные наружу.
Не храните секреты в рабочей директории только потому, что она считается «доверенной». Агент, имеющий право читать проект, потенциально может увидеть .env, локальные настройки и тестовые фикстуры с ключами.
Перед включением auto пройдите этот список:
- [ ] секреты удалены из тестовой директории или заменены временными значениями;
- [ ] чувствительные цели требуют подтверждения;
- [ ] API-ключи ограничены по правам и сроку действия;
- [ ] дочерние процессы не получают лишние переменные окружения;
- [ ] сетевые вызовы к внешним адресам проходят отдельное решение;
- [ ] журнал не сохраняет полные значения токенов;
- [ ] MCP-инструменты проверены по входам, выходам и сетевым действиям.
OWASP рекомендует рассматривать AI-агента как компонент с инструментами и внешними входами, а не как обычный текстовый помощник. В рекомендациях OWASP по безопасности AI-агентов отдельно рассматриваются чрезмерные полномочия, инъекции через внешние данные, утечки секретов и риск цепочек инструментов. Поэтому заявленная функция «защиты чувствительных целей» не равна независимому аудиту всех подключённых расширений.
Что проверить перед запуском DAO-Code auto в команде? Убедитесь, что секреты не попадают в логи и окружение дочерних процессов, опасные цели требуют подтверждения, сетевые инструменты ограничены, а попытка прочитать ключ за пределами проекта останавливается и регистрируется.
Таблица выбора по метрикам
| Критерий | plan |
default / approval gate |
auto |
Режим обхода разрешений |
|---|---|---|---|---|
| Незнакомый репозиторий | Подходит | Допустим после просмотра | Не рекомендуется | Запрещён |
| Изменение файлов | Только после решения | По отдельному подтверждению | В разрешённой области | Потенциально без достаточного контроля |
| Shell-команды | Просмотр и ручной запуск | Подтверждение каждой опасной команды | Только после явного ограничения | Риск зависит от фактического обхода |
| Доступ к секретам | Должен быть закрыт | Чувствительные цели требуют решения | Только в тестовой среде без секретов | Неприемлем для команды |
| Восстановление | Проще проверить план | Ошибка замечается до следующего шага | Требует checkpoint и теста отката | Высокая цена ошибки |
| Командный аудит | Понятна точка решения | Видно, кто подтвердил действие | Нужны подробные журналы | Ответственность размывается |
Таблица не заменяет проверку конфигурации. Например, auto в хорошо изолированном временном проекте может быть безопаснее, чем ручной режим с постоянным производственным ключом в окружении. С другой стороны, любое подтверждение бесполезно, если разработчик автоматически принимает все запросы, не читая путь и команду.
Восстановление и shadow-git
Автоматическое выполнение нужно оценивать не по тому, как оно работает в успешном сценарии, а по стоимости ошибки. Агент может корректно выполнить задачу, а затем изменить конфигурацию сборки, удалить временные файлы или внести массовую правку с неверным предположением.
Перед командным запуском создайте отдельную тестовую копию проекта. Зафиксируйте исходное состояние. Выполните безопасную задачу, затем намеренно попросите DAO-Code внести ошибочное изменение. Проверьте:
- создан ли checkpoint в
shadow-git; - можно ли увидеть список изменённых и удалённых файлов;
- восстанавливает ли команда отката содержимое и права;
- не меняется ли официальная история проекта;
- можно ли вернуть среду после неудачного запуска;
- остаются ли в журнале исходная команда и результат восстановления.
shadow-git следует считать дополнительным слоем восстановления, а не заменой обычному Git и резервному копированию. Он должен защищать рабочий эксперимент, но команда всё равно обязана использовать собственные ветки, ревью и правила слияния.
Для проверки восстановите не только текстовый файл. Добавьте изменение конфигурации, удаление тестового файла и неудачную команду сборки. Если восстановление работает только для простых правок, в регламенте укажите это ограничение.
Подход соответствует общей логике DevSecOps: безопасность должна проходить через планирование, разработку, проверку и эксплуатацию, а не добавляться после инцидента. Для структуры контрольных точек можно использовать справочную модель DevSecOps NIST.
Журналы и ответственность
Командный режим нельзя вводить без ответа на вопрос: кто отвечает за подтверждение, кто проверяет журнал и кто может изменить политику. Для каждого действия должны быть различимы пользователь, выбранный режим, запрос, фактическая команда, путь, результат и решение по подтверждению.
Не записывайте в журнал полный API-ключ, приватный ключ, cookie, содержимое секретного файла или токен из URL. Маскируйте значения до сохранения. В рекомендациях OWASP по безопасному журналированию подчёркивается необходимость разделять полезные события аудита и чувствительные данные, которые сами становятся источником утечки.
Минимальный командный регламент должен отвечать на такие вопросы:
- кто включил
autoи на какой рабочий каталог; - какой commit или checkpoint был исходным;
- какие правила allow, ask и deny действовали;
- кто одобрил доступ к внешней системе;
- кто проверил журнал после выполнения;
- как зарегистрировано изменение режима;
- кто имеет право вернуть среду в ручной режим.
Не смешивайте журнал приложения с журналом оболочки. Если Shell-команда запускает дочерний процесс, вам нужно понимать, где сохраняются его аргументы, ошибки и переменные окружения. Также проверьте срок хранения и права чтения логов.
Условия перехода к auto
Используйте эти ветвления как командный decision gate:
- Если репозиторий незнакомый, содержит внешние изменения или запускает непроверенные хуки, то выбирайте
plan; иначе переходите к ручному подтверждению. - Если в рабочем окружении есть производственные ключи, SSH-доступ или данные клиентов, то не включайте
auto; иначе продолжайте только после удаления секретов и проверки логов. - Если правила каталогов не остановили тестовую запись за пределами проекта, то возвращайтесь к
default; иначе переходите к проверке сетевых и дочерних процессов. - Если
shadow-gitи собственный Git позволяют отменить ошибочную правку без изменения официальной истории, тоautoможно рассматривать для ограниченной задачи; иначе оставляйте поэтапное подтверждение. - Если MCP-инструмент не имеет ясного владельца, документации по входам и ограничения внешних вызовов, то используйте
planи ручной запуск; иначе проводите отдельный тест инструмента. - Если среду можно уничтожить и создать заново без потери данных, то допускается автоматизация теста после очистки секретов; иначе нужен ручной контроль.
- Если действие необратимо — удаление, публикация, изменение прав, развёртывание или ротация ключа, то всегда оставляйте approval gate, даже в доверенной директории.
Подходит ли yolo для официального проекта? Нет, если под yolo понимается режим, обходящий обычные разрешения или подтверждения. Его можно рассматривать только для временного изолированного эксперимента без ключей, клиентских данных, SSH-доступа и ценных исходников. Перед использованием проверьте, как именно ваша версия DAO-Code сопоставляет термин yolo с официальным режимом bypassPermissions.
План внедрения для команды
В течение первой недели внедрения действуйте по порядку:
- Назначьте владельца политики и владельца журналов.
- Зафиксируйте режим по умолчанию:
defaultс ручным подтверждением. - Создайте отдельную тестовую копию репозитория без настоящих секретов.
- Настройте allow, ask и deny для рабочей директории и чувствительных путей.
- Проведите тесты записи, чтения, Shell-команд, сетевого вызова и дочернего процесса.
- Проверьте
shadow-git, восстановление и независимую историю Git. - Проверьте маскирование ключей в логах.
- Зафиксируйте результат приёмки и только затем рассмотрите
autoдля узкой задачи. - Повторите проверку после изменения версии DAO-Code, MCP-механизма, хуков или параметров системной изоляции.
Для администраторов, которые готовят macOS-среды, полезно отделять образ рабочего окружения от пользовательских секретов. Документацию по подготовке среды и доступам можно сопоставить с материалами центра помощи Hashvps, а правила ответственности за доступ — с условиями сервиса Hashvps. Эти ссылки не заменяют вашу внутреннюю политику DAO-Code, но помогают не смешивать подготовку среды и выдачу полномочий.
Если локальный компьютер не позволяет выделить отдельную рабочую область, сначала оцените изоляцию, сброс и повторную выдачу удалённой среды. В описании доступных вариантов Hashvps проверяйте не только вычислительные ресурсы, но и то, можно ли выдавать чистую среду для тестов без сохранённых ключей. Для команды важнее воспроизводимый сброс, чем само наличие автоматического режима.
Локальная схема остаётся предпочтительной, если проект долгосрочный, нагрузка стабильна, вам нужны физические устройства или вы контролируете весь Mac. Удалённая аренда Hashvps разумнее для временного эксперимента, параллельных тестовых рабочих областей и случаев, когда один Mac нельзя безопасно разделить между несколькими политиками доступа.
Автоматическое выполнение DAO-Code не стоит включать ради одного сокращённого подтверждения. Локальная среда без изоляции оставляет вас с конфликтом за память и каталог, а постоянный рабочий Mac часто содержит SSH-конфигурацию, ключи и личные данные. Если такие ограничения мешают выделить чистую и сбрасываемую область, аренда Mac у Hashvps может дать более понятную границу между тестовым агентом и основным рабочим окружением — при условии, что вы всё равно удаляете секреты и проводите собственные проверки перед запуском.
Выберите изолированную среду для командной работы с DAO-Code
Hashvps предоставляет настоящий удалённый Mac mini с выделенными ресурсами для разработки, тестирования и контролируемого выполнения задач.
Выделенный публичный IPv4 помогает разделять сетевую идентичность рабочих сред и снижать риск перекрёстного доступа между проектами.