Дата публикации
ai_products

Как безопасно кормить Cursor Cloud Agents секретами: разбор подхода Infisical

Что появилось / что изменилось

Инженерные команды всё активнее используют Cursor Cloud Agents как внешних исполнителей задач: агент поднимает свежую Ubuntu‑виртуалку, клонирует репозиторий, запускает install и start‑скрипты и работает с вашим кодом из Slack, GitHub, Linear или прямо из IDE.

Проблема в том, что как только агенту нужно подключиться к базе данных, внутреннему API или приватному пакету из реестра, ему требуются секреты. Cursor уже даёт встроенный Secrets UI (Settings → Background Agents → Secrets), который подсовывает агенту зашифрованные переменные окружения.

Infisical предлагает поверх этого собрать полноценный контур управления секретами:

  • хранить в Secrets UI только пару INFISICAL_CLIENT_ID и INFISICAL_CLIENT_SECRET для machine identity;
  • на старте агента получать временный INFISICAL_TOKEN через Universal Auth;
  • подтягивать все остальные секреты из Infisical уже во время запуска агента, а не хранить их в Cursor;
  • подставлять секреты либо прямо в процесс через infisical run, либо выгружать в файлы (.env, JSON, YAML) через infisical export.

В итоге сами рабочие секреты не попадают ни в снапшоты диска, ни в репозиторий, ни в environment.json.

Как это работает

Cursor для каждой задачи агента поднимает изолированную Ubuntu‑ВМ:

  1. Восстанавливает её из снапшота.
  2. Клонирует репозиторий на нужной ветке.
  3. Выполняет сценарий из .cursor/environment.json:
    • install — один раз после снапшота, результат кешируется (например, npm install или pip sync).
    • start — при каждом запуске ВМ, именно здесь удобно забирать секреты.

Secrets UI Cursor подмешивает ключ‑значение как переменные окружения в рантайме, но не решает задачи ротации, аудита и разделения доступа по командам.

Infisical предлагает другой контур:

  1. Вы создаёте в Infisical machine identity с минимальными правами — только те секреты, которые нужны Cloud Agent.
  2. В Cursor Secrets UI сохраняете только INFISICAL_CLIENT_ID и INFISICAL_CLIENT_SECRET.
  3. В start‑скрипте логинитесь в Infisical без участия человека:
    export INFISICAL_TOKEN=$(infisical login \
      --method=universal-auth \
      --client-id=$INFISICAL_CLIENT_ID \
      --client-secret=$INFISICAL_CLIENT_SECRET \
      --silent \
      --plain)
    
  4. Дальше два варианта:
    • infisical run — запускает ваш процесс (например, node server.js), подмешивая секреты в ENV без записи на диск.
    • infisical export — выгружает секреты в файл нужного формата (.env, JSON, YAML), если инструменты ожидают конфиг именно в файле.

Пример конфигурации .cursor/environment.json для варианта с infisical run:

{
  "snapshot": "snapshot-...",
  "install": "npm install",
  "start": "bash .cursor/start.sh"
}

Секреты подгружаются на каждый запуск агента заново, а не живут месяцами в статическом хранилище.

Что это значит для вас

Если вы уже запускаете Cursor Cloud Agents на продакшен‑репозиториях, у вас есть несколько типичных рисков:

  • токены и пароли оказываются в снапшотах диска, если вы, например, используете .npmrc с токеном во время npm install;
  • чувствительные значения попадают в .cursor/environment.json, который хранится в Git;
  • значения в Secrets UI живут годами без ротации, а вы не видите, какой запуск агента к ним обращался и когда.

Связка Cursor + Infisical помогает закрыть эти дыры:

  • секреты для баз, внутренних API и приватных реестров хранятся централизованно в Infisical, а в Cursor попадает только ограниченная machine identity;
  • вы можете на уровне Infisical настроить ротацию, аудит обращений и доступ по проектам и окружениям;
  • при компрометации одного токена в Cursor вы не раскрываете весь набор продакшен‑секретов — только тот, к которому привязана конкретная machine identity.

Кому это полезно:

  • командам, которые уже используют Cursor Cloud Agents как часть CI/CD или для автоматизации задач в репозитории;
  • продуктовым и платформенным командам, у которых есть внутренние сервисы и приватные реестры пакетов;
  • компаниям с жёсткими требованиями к аудиту и управлению доступом к секретам.

Где это избыточно:

  • маленьким пет‑проектам без продакшен‑данных, где секрет — это один токен к тестовой базе;
  • сценариям, где Cursor используется разово и вы готовы жить с парой статичных значений в Secrets UI.

Если вы работаете из России, придётся учитывать доступность как Cursor, так и Infisical: оба сервиса расположены за рубежом, к ним часто нужен VPN.

Место на рынке

Cursor уже даёт базовый механизм секретов через UI и переменные окружения, но не закрывает задачи ротации, аудита и тонкой сегрегации доступа по ролям и окружениям.

Infisical встраивается поверх как специализированный менеджер секретов, который:

  • работает с machine identity вместо раздачи одних и тех же токенов всем;
  • подставляет секреты на лету через infisical run без записи на диск;
  • умеет выгружать конфиги в форматах, которые ожидают ваши инструменты (.env, JSON, YAML).

Прямых численных сравнений с другими менеджерами секретов в контексте Cursor Cloud Agents здесь нет, но по архитектуре подход ближе к тому, как команды обычно интегрируют секреты в CI/CD‑пайплайны и MCP‑серверы: минимум долгоживущих токенов, максимум централизованного контроля и логирования в одном месте.


Читайте также

Как безопасно кормить Cursor Cloud Agents секретами: разбор подхода Infisical — VogueTech | VogueTech