Seguridad

Carpetas de confianza

Controla qué proyectos pueden usar las capacidades completas de Bob Shell con la seguridad de carpetas de confianza.

Las carpetas de confianza te dan control sobre qué proyectos pueden usarse con Bob Shell. Debes aprobar una carpeta antes de que Bob Shell cargue cualquier configuración específica del proyecto, protegiéndote de código potencialmente malicioso.

Nota:

La función de carpetas de confianza está desactivada de forma predeterminada. Para activarla, abre el menú /settings y establece Folder Trust en true. Debes reiniciar para que el cambio surta efecto.

Cómo funcionan las carpetas de confianza

Cuando ejecutas Bob Shell desde una carpeta por primera vez, aparece automáticamente un diálogo de confianza que te invita a tomar una decisión:

  • Confiar en la carpeta: Otorgar plena confianza a la carpeta actual (por ejemplo, my-project)
  • Confiar en la carpeta principal: Otorgar confianza al directorio principal (por ejemplo, safe-projects), lo que automáticamente concede confianza a todos sus subdirectorios. Usa esta opción si guardas todos tus proyectos seguros en un solo lugar
  • No confiar: Marcar la carpeta como no confiable. Bob Shell opera en un modo seguro restringido

Tu elección se guarda en ~/.bob/trustedFolders.json, por lo que solo se te pregunta una vez por carpeta.

Niveles de confianza

El archivo ~/.bob/trustedFolders.json almacena una entrada de confianza por carpeta. Cada entrada utiliza uno de tres niveles de confianza:

Nivel de confianzaEfecto
TRUST_FOLDEROtorga confianza total a la ruta exacta de la carpeta. La configuración del proyecto, los hooks, los modos, los skills y los servidores MCP se cargan con normalidad.
TRUST_PARENTOtorga confianza total al directorio especificado y a todos los subdirectorios que contiene. Usa este nivel para cubrir un workspace root que contenga varios repositorios.
DONT_TRUSTMarca la carpeta como no confiable. Bob Shell se ejecuta en modo seguro restringido y bloquea todas las configuraciones específicas del proyecto. Consulta Impacto de las carpetas no confiables.

Las carpetas sin entrada en ~/.bob/trustedFolders.json se denominan no resueltas. El modo en que Bob Shell trata las carpetas no resueltas depende de si la función de carpetas de confianza está habilitada. Consulta Sesiones no interactivas para obtener más información.

Impacto de las carpetas no confiables

Cuando una carpeta no es de confianza, Bob Shell opera en modo seguro restringido. Las siguientes funciones se desactivan o se ignoran:

FunciónComportamiento en modo seguro
Configuración del proyecto.bob/settings.json no se carga. Las herramientas personalizadas y las configuraciones potencialmente peligrosas se bloquean.
Aprobación automática de herramientasSiempre se te pedirá confirmación antes de que se ejecute cualquier herramienta, incluso si la aprobación automática está habilitada globalmente.
Servidores MCPBob Shell no intentará conectarse a ningún servidor MCP.
Modos personalizadosLos modos definidos en la carpeta del proyecto no están disponibles. Solo puedes usar los modos integrados y tus modos definidos globalmente.
SkillsLos skills incluidos con el proyecto no se cargan. Solo están activos los skills disponibles globalmente y las capacidades integradas.
SubagentsLos subagents personalizados de la carpeta del proyecto no están disponibles. El agente no puede delegar trabajo en asistentes proporcionados por el proyecto.
Instrucciones del proyectoNo se leen archivos de guía como AGENTS.md ni reglas personalizadas del proyecto. El agente funciona sin las instrucciones personalizadas del proyecto.

Otorgar confianza a una carpeta desbloquea la funcionalidad completa de Bob Shell para ese espacio de trabajo.

Gestión de la configuración de confianza

Cómo se resuelve la confianza
Bob Shell comprueba ~/.bob/trustedFolders.json para ver si ya existe una decisión para la carpeta actual.
Cambiar la confianza de la carpeta actual
Ejecuta el comando slash /permissions dentro de Bob Shell. Aparece el diálogo interactivo, que te permite cambiar el nivel de confianza para la carpeta actual.
Ver todas las reglas de confianza
Inspecciona ~/.bob/trustedFolders.json en tu directorio de inicio para ver una lista completa de todas las reglas de carpetas de confianza y no confiables.

Sesiones no interactivas

A diferencia del modo interactivo, las sesiones no interactivas (bob run) nunca muestran el diálogo de confianza. Bob Shell opera silenciosamente basándose en decisiones de confianza preexistentes.

Comportamiento predeterminado cuando la función está deshabilitada

Cuando la función de carpetas de confianza está deshabilitada (valor predeterminado), Bob Shell trata todas las carpetas como confiables. La configuración del proyecto, los hooks, los modos, los skills y los servidores MCP se cargan para todas las carpetas sin restricciones, independientemente de si existe una entrada en ~/.bob/trustedFolders.json.

Comportamiento cuando la función está habilitada

Cuando la función de carpetas de confianza está habilitada, Bob Shell evalúa el nivel de confianza de la carpeta de trabajo antes de cargar cualquier contenido específico del proyecto:

  • Carpeta no resuelta (sin entrada en ~/.bob/trustedFolders.json): La carpeta se trata como confiable. La configuración del proyecto y los hooks se cargan con normalidad.
  • Entrada TRUST_FOLDER o TRUST_PARENT: La carpeta es confiable. Toda la funcionalidad está disponible.
  • Entrada DONT_TRUST: Bob Shell lanza un error y no se ejecuta:
    <folder> is not a trusted folder. Pass --trust to run in this folder,
    or run Bob Shell interactively and choose a trust level.
Importante:

Habilitar la función de carpetas de confianza por sí sola no bloquea la ejecución de hooks para carpetas sin decisión de confianza. Una carpeta no resuelta — por ejemplo, un repositorio clonado por primera vez en un pipeline CI/CD — se trata como confiable. Solo una entrada explícita DONT_TRUST impide que se carguen los hooks y la configuración del proyecto.

Ejecución de hooks en modo headless

Los hooks globales definidos en ~/.bob/settings/settings.json se ejecutan para todas las carpetas que no estén marcadas explícitamente como DONT_TRUST, incluidas las carpetas no resueltas. Los hooks de workspace definidos en .bob/settings.json dentro del proyecto también están sujetos a la confianza de carpetas: se cargan solo cuando la carpeta es confiable o no resuelta, y se omiten silenciosamente cuando la carpeta tiene la marca DONT_TRUST.

Para entender qué hooks están configurados y qué hacen antes de ejecutar bob run en un repositorio desconocido, consulta Lifecycle hooks.

Comportamiento de los flags según el modo

Los flags --trust y --auto-approve se comportan de forma distinta según cómo se inicie Bob Shell. Selecciona tu modo para ver el comportamiento correspondiente:

--trust
La carpeta se guarda como confiable de forma persistente. Bob Shell escribe una entrada de confianza para el directorio actual en ~/.bob/trustedFolders.json y omite el diálogo de confianza del primer acceso. Esto equivale a abrir la carpeta y seleccionar manualmente "Confiar en la carpeta".
--auto-approve
La aprobación automática se suprime silenciosamente en una carpeta no confiable. Aun así, se te pedirá confirmación antes de cada ejecución de herramientas.
--trust
La carpeta se trata como confiable solo para esa ejecución. La decisión de confianza no se guarda y no se escribe nada en el almacén de confianza.

Protección de pipelines de automatización

Si ejecutas bob run en un pipeline CI/CD contra repositorios que no controlas — por ejemplo, repositorios de terceros o de código abierto clonados como parte de una compilación — sigue estos pasos para evitar que se ejecute código hook no confiable.

Antes de comenzar: Habilita la función de carpetas de confianza estableciendo security.folderTrust.enabled en true en ~/.bob/settings/settings.json. Debes reiniciar para que el cambio surta efecto.

  1. Decide qué directorios controlas y agrega una entrada TRUST_PARENT en ~/.bob/trustedFolders.json para cada uno. Esto cubre todos los repositorios bajo una raíz de workspace conocida y deja todo lo que está fuera de ese árbol como no resuelto.
    {
      "/home/runner/work/my-org": "TRUST_PARENT"
    }
  2. Para cualquier repositorio que clones desde una fuente externa o no confiable, agrega una entrada DONT_TRUST antes de ejecutar bob run:
    {
      "/home/runner/work/my-org": "TRUST_PARENT",
      "/home/runner/work/third-party-repo": "DONT_TRUST"
    }
  3. Revisa los hooks globales configurados en ~/.bob/settings/settings.json. Los hooks globales se ejecutan para todas las carpetas confiables o no resueltas, incluidos todos los repositorios cubiertos por una entrada TRUST_PARENT. Elimina o limita los hooks que no deben ejecutarse en código no confiable.
  4. Antes de ejecutar bob run en cualquier repositorio clonado, revisa .bob/settings.json dentro de ese repositorio en busca de hooks de workspace, tal como revisarías un Makefile o un archivo de configuración de CI. Los hooks de workspace se cargan en cualquier carpeta confiable o no resuelta.

Tras completar estos pasos, Bob Shell bloquea la configuración del proyecto y los hooks para cualquier carpeta con una entrada DONT_TRUST, mientras permite que bob run funcione con normalidad en tu workspace controlado.

Mejores prácticas

  • Confía solo en las carpetas que contienen código que hayas revisado o creado tú mismo
  • Usa TRUST_PARENT para directorios que contienen múltiples proyectos seguros para evitar gestionar entradas de carpetas individuales
  • Revisa periódicamente ~/.bob/trustedFolders.json para auditar qué carpetas son confiables
  • Cuando trabajes con código desconocido, agrega una entrada DONT_TRUST para el directorio clonado antes de ejecutar bob run
  • Revisa los hooks globales en ~/.bob/settings/settings.json periódicamente — se ejecutan en todas las carpetas confiables y no resueltas
¿Cómo es este tema?