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.
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 confianza | Efecto |
|---|---|
TRUST_FOLDER | Otorga 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_PARENT | Otorga 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_TRUST | Marca 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ón | Comportamiento 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 herramientas | Siempre se te pedirá confirmación antes de que se ejecute cualquier herramienta, incluso si la aprobación automática está habilitada globalmente. |
| Servidores MCP | Bob Shell no intentará conectarse a ningún servidor MCP. |
| Modos personalizados | Los modos definidos en la carpeta del proyecto no están disponibles. Solo puedes usar los modos integrados y tus modos definidos globalmente. |
| Skills | Los skills incluidos con el proyecto no se cargan. Solo están activos los skills disponibles globalmente y las capacidades integradas. |
| Subagents | Los 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 proyecto | No 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.jsonpara ver si ya existe una decisión para la carpeta actual. - Cambiar la confianza de la carpeta actual
- Ejecuta el comando slash
/permissionsdentro 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.jsonen 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_FOLDERoTRUST_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.
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.jsony 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.
- Decide qué directorios controlas y agrega una entrada
TRUST_PARENTen~/.bob/trustedFolders.jsonpara 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" } - Para cualquier repositorio que clones desde una fuente externa o no confiable, agrega una entrada
DONT_TRUSTantes de ejecutarbob run:{ "/home/runner/work/my-org": "TRUST_PARENT", "/home/runner/work/third-party-repo": "DONT_TRUST" } - 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 entradaTRUST_PARENT. Elimina o limita los hooks que no deben ejecutarse en código no confiable. - Antes de ejecutar
bob runen cualquier repositorio clonado, revisa.bob/settings.jsondentro de ese repositorio en busca de hooks de workspace, tal como revisarías unMakefileo 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_PARENTpara directorios que contienen múltiples proyectos seguros para evitar gestionar entradas de carpetas individuales - Revisa periódicamente
~/.bob/trustedFolders.jsonpara auditar qué carpetas son confiables - Cuando trabajes con código desconocido, agrega una entrada
DONT_TRUSTpara el directorio clonado antes de ejecutarbob run - Revisa los hooks globales en
~/.bob/settings/settings.jsonperiódicamente — se ejecutan en todas las carpetas confiables y no resueltas