Безопасность
Pi — локальный агент кодирования. Он запускается с разрешениями учетной записи пользователя, который его запускает, и рассматривает файлы, доступные для записи этим пользователем, как находящиеся внутри той же локальной границы доверия.
Проект Траст
Доверие проекта контролирует, загружает ли pi локальные настройки, ресурсы, пакеты и расширения проекта. Это не sandbox, и он не ограничивает то, что модель может запрашивать у инструментов после того, как вы начнете работать в каталоге.
Pi считает, что в проекте есть ресурсы, требующие доверия, когда он находит любой из них в текущем рабочем каталоге:
.pi/settings.json.pi/extensions,.pi/skills,.pi/promptsили.pi/themes.pi/SYSTEM.mdили.pi/APPEND_SYSTEM.md- проект
.agents/skillsв текущем каталоге или каталоге-предке
Пустой каталог .pi не считается ресурсом проекта, требующим доверия.
Когда интерактивный сеанс начинается в проекте с ресурсами, которые требуют доверия и не имеют сохраненного решения для текущего каталога или родительского каталога, число pi следует за defaultProjectTrust из глобальных настроек. Значение по умолчанию — "ask", которое спрашивает, можно ли доверять проекту, когда пользовательский интерфейс доступен. Сохраненные решения хранятся в каноническом каталоге в ~/.pi/agent/trust.json, и ближайшее сохраненное решение по текущему или родительскому пути применяется до глобального значения по умолчанию.
Доверие к проекту позволяет pi загружать ресурсы проекта, требующие доверия, в том числе:
.pi/settings.json.piресурсы, такие как расширения, навыки, prompt templates, темы и файлы системных подсказок.- отсутствующие пакеты проекта, настроенные через настройки проекта
- локальные расширения проекта и расширения, управляемые пакетом проекта
Снижение доверия пропускает защищенные ресурсы. Файлы контекста, такие как AGENTS.override.md, AGENTS.md и CLAUDE.md, загружаются независимо от доверия проекта, если загрузка контекста не отключена. Прежде чем доверие будет разрешено, pi загружает только context files, пользовательские/глобальные расширения и CLI -e расширения. Пользовательские/глобальные расширения и расширения CLI могут обрабатывать событие project_trust; решение принадлежит первому расширению, которое возвращает решение да/нет.
В неинтерактивных режимах (-p, --mode json и --mode rpc) запрос доверия не отображается. Без применимого сохраненного решения о доверии defaultProjectTrust: "ask" и "never" игнорируют такие ресурсы, тогда как "always" доверяет им. Используйте --approve/-a или --no-approve/-na, чтобы переопределить доверие проекта на один запуск.
Нет встроенной песочницы
Pi не включает встроенный sandbox. Встроенные инструменты могут читать файлы, записывать файлы, редактировать файлы и запускать команды оболочки с разрешениями процесса pi. Extensions — это модули TypeScript, которые работают с теми же разрешениями. Установка пакетов, команды оболочки, языковые серверы, тестовые команды и другие инструменты разработчика ведут себя как обычные локальные процессы.
Это намеренно. Pi предназначен для работы с локальными деревьями исходного кода, вызова цепочек инструментов проекта и интеграции с существующей средой разработки пользователя. Частичный внутрипроцессный sandbox легко принять за границу безопасности, хотя он все еще зависит от оболочки хоста, файловой системы, менеджеров пакетов, учетных данных и кода расширения. Настоящая изоляция должна исходить от операционной системы или границы виртуализации/контейнера.
Доверие к проекту — это всего лишь защита входной нагрузки. Это не позволяет репозиторию незаметно изменять настройки или расширения pi до того, как вы это одобрите. Это не делает ненадежный код, ненадежные запросы или выходные данные ненадежной модели безопасными. Оперативное внедрение из файлов репозитория, комментариев, документации, context files или выходных данных сборки является ожидаемым риском для локального агента и не может быть надежно предотвращено с помощью pi.
Выполнение ненадежной или неконтролируемой работы
Для ненадежных репозиториев, сгенерированного кода, который вы не собираетесь тщательно отслеживать, или для автоматической автоматизации запускайте pi в изолированной среде. Используйте контейнер, виртуальную машину, микро-VM, удаленную sandbox или управляемую политикой sandbox только с файлами и учетными данными, необходимыми для задачи.
Общие шаблоны описаны в Containerization:
- запустить весь процесс
piвнутри контейнера/sandbox - запустить хост pi, одновременно перенаправляя выполнение встроенного инструмента в микро-VM Gondolin
- монтировать только те пути к рабочей области, к которым должен иметь доступ агент
- избегайте монтирования хоста
~/.pi/agent, если только контейнер не должен иметь доступ к сеансам хоста, настройкам и учетным данным - передайте минимально необходимые API key или используйте недолговечные учетные данные
- ограничить доступ к сети, когда задача в этом не нуждается
- просмотрите различия и выходные данные, прежде чем копировать результаты обратно в доверенные системы.
Если вы привязываете чтение/запись рабочей области хоста, записи изнутри контейнера или виртуальной машины все равно могут изменять файлы хоста. Используйте монтирование только для чтения или копируйте файлы в sandbox и из него, если вам нужна более надежная защита от непреднамеренной записи.
Сообщение о проблемах безопасности
Чтобы сообщить о проблеме безопасности, перейдите в репозиторий Security Policy. Не открывайте общедоступную проблему для отчетов, чувствительных к безопасности.
Ожидаемое поведение локального агента, отсутствие встроенного sandbox, быстрое внедрение из ненадежного контента и поведение установленных пользователем расширений или навыков, как правило, находятся за пределами границ безопасности, если только отчет не демонстрирует реальный обход границы привилегий или не показывает, как pi предоставляет доступ, которого еще не было у локального пользователя.