Seguridad
Pi es un agente de codificación local. Se ejecuta con los permisos de la cuenta de usuario que lo inicia y trata los archivos en los que ese usuario puede escribir como si estuvieran dentro del mismo límite de confianza local.
Confianza del proyecto
La confianza del proyecto controla si pi carga configuraciones, recursos, paquetes y extensiones locales del proyecto. No es un sandbox y no restringe lo que el modelo puede pedirle a las herramientas que hagan después de comenzar a trabajar en un directorio.
Pi considera que un proyecto tiene recursos que requieren confianza cuando encuentra alguno de estos en el directorio de trabajo actual:
.pi/settings.json.pi/extensions,.pi/skills,.pi/promptso.pi/themes.pi/SYSTEM.mdo.pi/APPEND_SYSTEM.md- proyecto
.agents/skillsen el directorio actual o en un directorio ancestral
Un directorio .pi simple no cuenta como un recurso de proyecto que requiera confianza.
Cuando se inicia una sesión interactiva en un proyecto con recursos que requieren confianza y sin una decisión guardada para el directorio actual o un directorio principal, pi sigue a defaultProjectTrust desde la configuración global. El valor predeterminado es "ask", que pregunta si se debe confiar en el proyecto cuando la interfaz de usuario está disponible. Las decisiones guardadas se almacenan en el directorio canónico en ~/.pi/agent/trust.json, y la decisión guardada más cercana en la ruta actual o principal se aplica antes del valor predeterminado global.
Confiar en un proyecto le permite a pi cargar recursos del proyecto que requieren confianza, incluidos:
.pi/settings.json.pirecursos como extensiones, habilidades, prompt templates, temas y archivos de avisos del sistema- Faltan paquetes de proyectos configurados a través de la configuración del proyecto.
- extensiones locales del proyecto y extensiones administradas por paquetes del proyecto
La disminución de la confianza omite los recursos protegidos. Los archivos de contexto como AGENTS.override.md, AGENTS.md y CLAUDE.md se cargan independientemente de la confianza del proyecto, a menos que la carga de contexto esté deshabilitada. Antes de que se resuelva la confianza, pi solo carga context files, extensiones de usuario/globales y extensiones CLI -e. Las extensiones usuario/global y CLI pueden manejar el evento project_trust; la primera extensión que devuelve una decisión de sí/no es propietaria de la decisión.
Los modos no interactivos (-p, --mode json y --mode rpc) no muestran un mensaje de confianza. Sin una decisión de confianza guardada aplicable, defaultProjectTrust: "ask" y "never" ignoran dichos recursos, mientras que "always" confía en ellos. Utilice --approve/-a o --no-approve/-na para anular la confianza del proyecto durante una ejecución.
Sin zona de pruebas incorporada
Pi no incluye un sandbox incorporado. Las herramientas integradas pueden leer archivos, escribir archivos, editar archivos y ejecutar comandos de shell con los permisos del proceso pi. Extensions son módulos TypeScript que se ejecutan con los mismos permisos. Las instalaciones de paquetes, los comandos de shell, los servidores de idiomas, los comandos de prueba y otras herramientas de desarrollo se comportan como procesos locales normales.
Esto es intencional. Pi está diseñado para operar en árboles de fuentes locales, invocar cadenas de herramientas del proyecto e integrarse con el entorno de desarrollo existente del usuario. Un proceso parcial sandbox sería fácil de malinterpretar como un límite de seguridad y al mismo tiempo dependería del shell del host, el sistema de archivos, los administradores de paquetes, las credenciales y el código de extensión. El aislamiento real debe provenir del sistema operativo o de un límite de virtualización/contenedor.
La confianza en el proyecto es sólo una protección de carga de entradas. Evita que un repositorio cambie silenciosamente la configuración o las extensiones de pi antes de que usted lo apruebe. No hace que el código que no es de confianza, las indicaciones que no son de confianza o la salida de un modelo que no es de confianza sean seguros. Se espera que la inyección rápida desde archivos del repositorio, comentarios, documentación, context files o resultados de compilación sea un riesgo para el agente local y pi no puede prevenirlo de manera confiable.
Ejecutar trabajo que no es de confianza o no supervisado
Para repositorios que no son de confianza, código generado que no desea monitorear de cerca o automatización desatendida, ejecute pi en un entorno contenido. Utilice un contenedor, VM, micro-VM, remoto sandbox o controlado por políticas sandbox con solo los archivos y credenciales necesarios para la tarea.
Los patrones comunes están documentados en Containerization:
- ejecutar todo el proceso
pidentro de un contenedor/sandbox - ejecute host pi mientras enruta la ejecución de la herramienta incorporada a una micro-VM Gondolin
- montar solo las rutas del espacio de trabajo a las que debe acceder el agente
- evite montar el host
~/.pi/agenta menos que el contenedor deba acceder a las sesiones, configuraciones y credenciales del host - pasar el mínimo requerido API keys o usar credenciales de corta duración
- restringir el acceso a la red cuando la tarea no lo necesita
- revise las diferencias y los resultados antes de copiar los resultados a sistemas confiables
Si realiza un montaje vinculante de lectura/escritura en un espacio de trabajo del host, las escrituras desde el interior del contenedor o la máquina virtual aún pueden modificar los archivos del host. Utilice montajes de solo lectura o copie archivos dentro y fuera del sandbox cuando necesite una protección más sólida contra escrituras no deseadas.
Informar problemas de seguridad
Para informar un problema de seguridad, siga el repositorio Security Policy. No abra una edición pública para informes sensibles a la seguridad.
El comportamiento esperado del agente local, la falta de un sandbox integrado, la inyección rápida de contenido no confiable y el comportamiento de las extensiones o habilidades instaladas por el usuario generalmente están fuera de los límites de seguridad, a menos que el informe demuestre una verdadera omisión de los límites de privilegios o muestre cómo pi otorga acceso que el usuario local aún no tenía.