Dossiers de confiance
Contrôle les projets pouvant utiliser les capacités complètes de Bob Shell grâce à la sécurité des dossiers de confiance.
Les dossiers de confiance te donnent le contrôle sur les projets pouvant être utilisés avec Bob Shell. Tu dois approuver un dossier avant que Bob Shell ne charge les configurations spécifiques au projet, te protégeant ainsi contre du code potentiellement malveillant.
La fonctionnalité des dossiers de confiance est désactivée par défaut. Pour l'activer, ouvre le menu /settings et définis Folder Trust sur true. Un redémarrage est nécessaire pour que le changement prenne effet.
Fonctionnement des dossiers de confiance
Lorsque tu exécutes Bob Shell depuis un dossier pour la première fois, une boîte de dialogue de confiance apparaît automatiquement, t'invitant à faire un choix :
- Faire confiance au dossier : Accorder une confiance totale au dossier actuel (par exemple,
my-project) - Faire confiance au dossier parent : Accorder la confiance au répertoire parent (par exemple,
safe-projects), ce qui accorde automatiquement la confiance à tous ses sous-répertoires. Utilise cette option si tu conserves tous tes projets sûrs au même endroit - Ne pas faire confiance : Marquer le dossier comme non fiable. Bob Shell fonctionne dans un mode sécurisé restreint
Ton choix est enregistré dans ~/.bob/trustedFolders.json, de sorte que la question ne t'est posée qu'une seule fois par dossier.
Niveaux de confiance
Le fichier ~/.bob/trustedFolders.json stocke une entrée de confiance par dossier. Chaque entrée utilise l'un des trois niveaux de confiance :
| Niveau de confiance | Effet |
|---|---|
TRUST_FOLDER | Accorde une confiance totale au chemin exact du dossier. Les paramètres du projet, les hooks, les modes, les skills et les serveurs MCP se chargent normalement. |
TRUST_PARENT | Accorde une confiance totale au répertoire spécifié et à tous ses sous-répertoires. Utilise ce niveau pour couvrir un workspace root contenant plusieurs dépôts. |
DONT_TRUST | Marque le dossier comme non fiable. Bob Shell fonctionne en mode sécurisé restreint et bloque toutes les configurations spécifiques au projet. Voir Impact des dossiers non fiables. |
Les dossiers sans entrée dans ~/.bob/trustedFolders.json sont appelés non résolus. La façon dont Bob Shell traite les dossiers non résolus dépend de l'activation ou non de la fonctionnalité des dossiers de confiance. Voir Sessions non interactives pour plus de détails.
Impact des dossiers non fiables
Lorsqu'un dossier est non fiable, Bob Shell fonctionne en mode sécurisé restreint. Les fonctionnalités suivantes sont désactivées ou ignorées :
| Fonctionnalité | Comportement en mode sécurisé |
|---|---|
| Paramètres du projet | .bob/settings.json n'est pas chargé. Les outils personnalisés et les configurations potentiellement dangereuses sont bloqués. |
| Approbation automatique des outils | Tu es toujours invité à confirmer avant l'exécution d'un outil, même si l'approbation automatique est activée globalement. |
| Serveurs MCP | Bob Shell ne tentera pas de se connecter à des serveurs MCP. |
| Modes personnalisés | Les modes définis dans le dossier du projet ne sont pas disponibles. Seuls les modes intégrés et tes modes définis globalement peuvent être utilisés. |
| Skills | Les skills fournis avec le projet ne sont pas chargés. Seuls les skills disponibles globalement et les capacités intégrées sont actifs. |
| Subagents | Les subagents personnalisés du dossier du projet ne sont pas disponibles. L'agent ne peut pas déléguer de travail à des assistants fournis par le projet. |
| Instructions du projet | Les fichiers de consignes comme AGENTS.md et les règles personnalisées du projet ne sont pas lus. L'agent fonctionne sans les instructions personnalisées du projet. |
Accorder la confiance à un dossier débloque toutes les fonctionnalités de Bob Shell pour cet espace de travail.
Gestion des paramètres de confiance
- Comment la confiance est résolue
- Bob Shell vérifie
~/.bob/trustedFolders.jsonpour voir s'il existe déjà une décision pour le dossier actuel. - Modifier la confiance du dossier actuel
- Exécute la commande slash
/permissionsdepuis Bob Shell. La boîte de dialogue interactive apparaît, te permettant de modifier le niveau de confiance pour le dossier actuel. - Afficher toutes les règles de confiance
- Inspecte
~/.bob/trustedFolders.jsondans ton répertoire personnel pour voir la liste complète de toutes tes règles de dossiers de confiance et non fiables.
Sessions non interactives
Contrairement au mode interactif, les sessions non interactives (bob run) n'affichent jamais la boîte de dialogue de confiance. Bob Shell fonctionne silencieusement en se basant sur les décisions de confiance préexistantes.
Comportement par défaut lorsque la fonctionnalité est désactivée
Lorsque la fonctionnalité des dossiers de confiance est désactivée (par défaut), Bob Shell traite chaque dossier comme fiable. Les paramètres du projet, les hooks, les modes, les skills et les serveurs MCP se chargent pour chaque dossier sans restriction, que ce dossier ait ou non une entrée dans ~/.bob/trustedFolders.json.
Comportement lorsque la fonctionnalité est activée
Lorsque la fonctionnalité des dossiers de confiance est activée, Bob Shell évalue le niveau de confiance du dossier de travail avant de charger tout contenu spécifique au projet :
- Dossier non résolu (aucune entrée dans
~/.bob/trustedFolders.json) : Le dossier est traité comme fiable. Les paramètres du projet et les hooks se chargent normalement. - Entrée
TRUST_FOLDERouTRUST_PARENT: Le dossier est fiable. Toutes les fonctionnalités sont disponibles. - Entrée
DONT_TRUST: Bob Shell renvoie une erreur et ne s'exécute pas :<folder> is not a trusted folder. Pass --trust to run in this folder, or run Bob Shell interactively and choose a trust level.
Activer la fonctionnalité des dossiers de confiance seule ne bloque pas l'exécution des hooks pour les dossiers sans décision de confiance. Un dossier non résolu — par exemple, un dépôt cloné pour la première fois dans un pipeline CI/CD — est traité comme fiable. Seule une entrée explicite DONT_TRUST empêche le chargement des hooks et des paramètres du projet.
Exécution des hooks en mode headless
Les hooks globaux définis dans ~/.bob/settings/settings.json s'exécutent pour chaque dossier qui n'est pas explicitement marqué DONT_TRUST, y compris les dossiers non résolus. Les hooks workspace définis dans .bob/settings.json dans le projet sont également soumis à la confiance des dossiers : ils se chargent uniquement lorsque le dossier est fiable ou non résolu, et sont silencieusement ignorés lorsque le dossier est DONT_TRUST.
Pour comprendre quels hooks sont configurés et ce qu'ils font avant d'exécuter bob run sur un dépôt inconnu, consulte Hooks de cycle de vie.
Comportement des flags selon le mode
Les flags --trust et --auto-approve se comportent différemment selon la manière dont Bob Shell est lancé. Sélectionne ton mode pour voir le comportement correspondant :
--trust- Le dossier est enregistré comme fiable de manière persistante. Bob Shell écrit une entrée de confiance pour le répertoire actuel dans
~/.bob/trustedFolders.jsonet ignore la boîte de dialogue de confiance au premier accès. Cela équivaut à ouvrir le dossier et à sélectionner manuellement « Faire confiance au dossier ». --auto-approve- L'approbation automatique est silencieusement supprimée dans un dossier non fiable. Tu es quand même invité à confirmer avant chaque exécution d'outil.
--trust- Le dossier est traité comme fiable uniquement pour cette exécution. La décision de confiance n'est pas enregistrée et rien n'est écrit dans le magasin de confiance.
Renforcement des pipelines d'automatisation
Si tu exécutes bob run dans un pipeline CI/CD sur des dépôts que tu ne contrôles pas — par exemple des dépôts tiers ou open source clonés dans le cadre d'un build — suis les étapes suivantes pour empêcher l'exécution de code hook non fiable.
Avant de commencer : Active la fonctionnalité des dossiers de confiance en définissant security.folderTrust.enabled sur true dans ~/.bob/settings/settings.json. Un redémarrage est nécessaire pour que le changement prenne effet.
- Détermine les répertoires que tu contrôles et ajoute une entrée
TRUST_PARENTdans~/.bob/trustedFolders.jsonpour chacun. Cela couvre tous les dépôts sous une racine de workspace connue et laisse tout ce qui est en dehors de cet arbre comme non résolu.{ "/home/runner/work/my-org": "TRUST_PARENT" } - Pour tout dépôt que tu clones depuis une source externe ou non fiable, ajoute une entrée
DONT_TRUSTavant d'exécuterbob run:{ "/home/runner/work/my-org": "TRUST_PARENT", "/home/runner/work/third-party-repo": "DONT_TRUST" } - Examine les hooks globaux configurés dans
~/.bob/settings/settings.json. Les hooks globaux s'exécutent pour chaque dossier fiable ou non résolu, y compris tous les dépôts couverts par une entréeTRUST_PARENT. Supprime ou limite les hooks qui ne doivent pas s'exécuter sur du code non fiable. - Avant d'exécuter
bob runsur un dépôt cloné, examine.bob/settings.jsondans ce dépôt pour les hooks workspace, comme tu le ferais pour unMakefileou un fichier de configuration CI. Les hooks workspace se chargent dans tout dossier fiable ou non résolu.
Après avoir suivi ces étapes, Bob Shell bloque les paramètres du projet et les hooks pour tout dossier avec une entrée DONT_TRUST, tout en permettant à bob run de fonctionner normalement dans ton workspace contrôlé.
Bonnes pratiques
- Ne fais confiance qu'aux dossiers contenant du code que tu as examiné ou créé toi-même
- Utilise
TRUST_PARENTpour les répertoires contenant plusieurs projets sûrs afin d'éviter de gérer des entrées de dossiers individuelles - Examine régulièrement
~/.bob/trustedFolders.jsonpour contrôler quels dossiers sont fiables - Lorsque tu travailles avec du code inconnu, ajoute une entrée
DONT_TRUSTpour le répertoire cloné avant d'exécuterbob run - Examine régulièrement les hooks globaux dans
~/.bob/settings/settings.json— ils s'exécutent dans chaque dossier fiable et non résolu