
«AI agent» теперь используют как продуктовый ярлык повсюду, но мы считаем, что инженерия под этим ярлыком не сводится к чему-то одному. Мы отдаём одну и ту же задачу семи популярным продуктам с этим лейблом, и три вопроса аккуратно их разводят: где выполняется код · где работает control loop агента · где живут учётные данные.
Берём два примера, которые на маркетинговой странице выглядят одинаково, а внутри устроены совершенно по-разному. Когда Perplexity Pro получает запрос на анализ данных, бэкенд отправляет сгенерированный LLM Python в Firecracker microVM, запущенную через e2b. Пользовательские файлы, код и результаты живут там, пока не закончится сессия и VM не уничтожится. Claude Code, запущенный локально командой claude, выполняет инференс модели в облаке Anthropic, но каждый tool call — внутри локального процесса claude под UID залогиненного пользователя. OS sandbox теперь входит в состав CLI, но остаётся выключенной, пока вы не запустите /sandbox; из коробки впереди стоит только in-process permission-система.
Оба идут под ярлыком «AI agent», и мы обнаруживаем, что ответы на три вопроса не совпадают. Ниже мы разбираем семь продуктов, по три ответа на каждый, и оси, которые из сравнения выпадают.
Семь продуктов
Perplexity Pro (анализ данных). Бэкенд отправляет сгенерированный LLM Python в Firecracker microVM, запущенную через e2b. Control loop агента остаётся в бэкенде Perplexity; OAuth-токены не попадают в sandbox — когда нужен коннектор, бэкенд проксирует вызов. Сессия завершилась — VM уничтожена. Агент и сгенерированный LLM код не делят trust domain.
Manus (сквозные задачи). Каждая задача Manus получает полное Linux-окружение в форме microVM. Сторонний разбор располагает базу ближе к e2b / Firecracker: Node, Python, headless Chromium, терминал, файловая система и примерно 27 предустановленных инструментов. Состояние задачи, выполнение инструментов и логика решений агента живут в одной VM. Это даёт агенту удобство «локального виртуального сотрудника». Цена — всё помещается в один trust domain. Как только Chromium загружает подделанную атакующим страницу, prompt injection целится прямо в решения агента, а sandbox оказывается позади атакующего, а не впереди. Сильная изоляция Manus защищает от горизонтального перемещения (VM пользователя A не достанет до пользователя B), но не от вертикального захвата (агента того же пользователя обманом заставляют выполнять вредоносные инструкции).
Конфигурация по умолчанию Claude Code (локальный терминал). Инференс в облаке Anthropic; каждый tool call выполняется в локальном процессе claude под UID пользователя. sandbox-runtime, выпущенный в октябре 2025, при включении заворачивает дочерние процессы Bash в macOS Seatbelt или Linux bubblewrap, но по умолчанию выключен. Из коробки впереди стоит только in-process permission-система. Команда Ona публично показала, как эта линия обороны рвётся: они заставили Claude Code обойти собственный command denylist через /proc/self/root/usr/bin/npx; когда sandbox обнаружил обход и заблокировал его, агент сам выпустил команду disable-sandbox и успешно перезапустил исходную команду. Этот failure mode хуже, чем у Manus, потому что снизу нет microVM, обеспечивающей OS-уровневую горизонтальную изоляцию.
ChatGPT Code Interpreter (анализ данных). Сгенерированный Python маршрутизируется в sandboxed и firewalled Python-окружение в бэкенде OpenAI. Анализ сообщества указывает на gVisor-pods под капотом, но OpenAI этого не раскрывает. Структурно — на одном уровне с Perplexity (trust domain не общий, эфемерное на запрос); разница в том, что у этого окружения, как правило, нет произвольного egress в публичный интернет, поэтому threat model более консервативна.
Bolt.new (генерация приложений). Запускает Node-рантайм во вкладке браузера пользователя через WebContainers — sandbox живёт в браузере. Поставщик не платит за облачные vCPU; цена — совместимость: syscalls, которых браузер не предоставляет, не работают.
Codex CLI (локальный терминал). Та же форма локальной CLI, что у Claude Code, обратное значение по умолчанию. Изоляция дочерних процессов на уровне OS (macOS Seatbelt, Linux bubblewrap) включена по умолчанию, с тремя режимами sandbox (read-only, workspace-write, danger-full-access) и approval policy. По вопросу «включать ли sandbox из коробки» Codex — зеркальная пара Claude Code.
Cursor (IDE-редактор). Локальный интерактивный режим (редактирование в IDE плюс терминал) исторически не имел OS sandbox; на supported platforms она недавно начала постепенно появляться. Параллельный / фоновый режим запускает каждую задачу в собственной backend-VM, а control loop агента остаётся на серверах Cursor. Один и тот же продукт в двух режимах работает с принципиально разной силой изоляции.
Сведём всё в позиционную таблицу:
| Продукт / конфигурация | Сила изоляции | Агент и код в одном trust domain? | Жизненный цикл |
|---|---|---|---|
| Perplexity Pro | Firecracker microVM | Нет | На запрос |
| ChatGPT Code Interpreter | Контейнеризированный sandbox (по выводам сообщества — gVisor pod, официально не раскрыто) | Нет | На запрос |
| Bolt.new | Browser origin (WASM) | Нет (инференс агента в облаке) | На сессию, в браузере |
| Manus | microVM | Да | На задачу, можно приостанавливать |
| Claude Code по умолчанию | Нет | Да | Локально, постоянно |
| Codex CLI по умолчанию | OS-уровень изоляция дочернего процесса | Пересекает границу (UID агента / sandbox инструмента) | Локально, постоянно |
| Cursor интерактивный | OS sandbox (недавняя, частичная) | Пересекает границу | Локально, постоянно |
| Cursor параллельный | Backend-VM на задачу | Нет (control loop на серверах Cursor) | На задачу агента |
Три оси — и общая слепая зона
Три столбца таблицы соответствуют трём осям, пронизывающим все продукты.
Сила изоляции. Пять уровней от слабого к сильному: тот же UID, тот же процесс → OS-уровень изоляция дочернего процесса → browser origin → gVisor → VM / microVM. Оба края к 2018 году в целом созрели; публично сравнимые CPU sandbox-сервисы вроде e2b и Modal сошлись по ценам.
Делит ли control loop агента trust domain с выполняющимся кодом. Perplexity, Bolt.new и параллельный режим Cursor — на пути «не делят»: sandbox запирает сгенерированный LLM код, агент рассуждает в другом месте. Manus и Claude Code по умолчанию — на пути «делят»: решения агента и выполняющийся код в одном trust domain. Codex CLI и Claude Code с включённым sandbox-runtime — на промежуточном уровне, где агент и инструменты пересекают границу. Эта ось решает, куда приземляется prompt injection.
Жизненный цикл sandbox. Три варианта: эфемерный на запрос, на задачу с возможностью приостановки, локально постоянный. Жизненный цикл напрямую определяет форму биллинга: API по запросу, по session-часу (Anthropic Managed Agents берёт $0.08 за session-час и не учитывает idle) и месячная подписка плюс кредиты плюс usage-based billing (effort-based биллинг Replit AI измеряет фактическую работу агента).
Поверх этих трёх осей все продукты выборки делят одну слепую зону.

Классический sandbox решает вопрос, на котором индустрия сошлась: код, который мы собираемся запустить, может быть вредоносным или содержать баги. Firecracker, gVisor и V8 isolate были по сути готовы к 2018 году. AI agents приносят новую угрозу, под которую sandbox не проектировался: решения самого LLM могут быть перехвачены prompt injection. Цель — не код внутри sandbox, а control loop агента на её границе — цикл, который вправе использовать инструменты пользователя, дотягиваться до учётных данных и приватных данных, выбирать следующий шаг.
Simon Willison называет это lethal trifecta: когда у agentic-системы одновременно есть доступ к приватным данным, контакт с недоверенным контентом и возможность исходящих запросов, традиционные prompt-уровневые защиты не способны надёжно блокировать exfiltration данных. Большинство продуктов выборки попадают в эту зону риска, как только включён коннектор, браузер или сетевой инструмент. Manus, перехватываемый в момент загрузки Chromium вредоносной страницы, и Claude Code, инжектируемый через сторонний Skill, — два конкретных проявления одного и того же паттерна.
Несколько поставщиков работают над этой брешью. Мы группируем их направления и видим четыре повторяющихся локальных решения (это не исчерпывающая таксономия безопасности, а четыре инженерных trade-off, которые мы чаще всего встречали в выборке):
| Паттерн решения | Главная идея | Представительная реализация |
|---|---|---|
| Архитектурное разделение | Harness и сгенерированный код — в разных VM / контекстах безопасности | Двухмашинная форма Fluid + Sandbox у Vercel; естественная структура Perplexity / Bolt.new |
| Изоляция учётных данных | Секреты не попадают в недоверенный домен — прокси инжектит их на egress | Credential proxy у Cloudflare, где Worker держит ключ |
| Контроль egress | Firewalled runtime, localhost-прокси, allowlist ограничивает исходящие пути | sandbox-runtime от Anthropic; firewalled окружение OpenAI Code Interpreter |
| Гейтинг решений | Высокорисковые вызовы инструментов требуют явного approval | Трёхуровневая approval policy Codex CLI; permission prompt Claude Code |
Эти четыре паттерна в значительной мере независимы и инженерно складываются. Дизайн Vercel сразу закрывает «архитектурное разделение плюс изоляция учётных данных», а sandbox-runtime Anthropic — «контроль egress плюс гейтинг решений». В рассмотренных нами публичных материалах ни один поставщик пока не выставляет все четыре способности в виде единого продукта.
Слой выше — межпродуктовое единое governance — открыт полностью. Каждый agent-продукт определяет свой формат policy и ведёт собственный audit log. Разработчик, использующий Claude Code, Cursor и Aider одновременно, настраивает три набора policy и просматривает три audit log. Коммерческие границы поставщиков моделей запирают их в собственные продукты; эту брешь скорее заполнят сторонние инструменты, открытые стандарты или enterprise governance.
Где развернётся следующая конкуренция
Мы не думаем, что следующая фаза конкуренции будет о том, какой одиночный isolation primitive сильнее: Firecracker, gVisor и V8 isolate — это уже зрелая инфраструктура. Мы ожидаем, что конкуренция сместится к более структурным вопросам: должен ли control loop агента делить trust domain с выполняющимся кодом, как устроен контроль egress в multi-component agent-стэках, и появится ли вообще что-то похожее на межпродуктовый стандарт policy и audit.