Cartelle attendibili
Controlla quali progetti possono utilizzare le funzionalità complete di Bob Shell con la sicurezza delle cartelle attendibili.
Le cartelle attendibili ti danno il controllo su quali progetti possono essere usati con Bob Shell. Devi approvare una cartella prima che Bob Shell carichi le configurazioni specifiche del progetto, proteggendoti da codice potenzialmente dannoso.
La funzionalità delle cartelle attendibili è disattivata per impostazione predefinita. Per attivarla, apri il menu /settings e imposta Folder Trust su true. Per rendere effettiva la modifica è necessario riavviare.
Come funzionano le cartelle attendibili
Quando esegui Bob Shell da una cartella per la prima volta, compare automaticamente una finestra di dialogo di attendibilità che ti invita a fare una scelta:
- Considera attendibile la cartella: Concedere piena attendibilità alla cartella corrente (ad esempio,
my-project) - Considera attendibile la cartella padre: Concedere attendibilità alla directory padre (ad esempio,
safe-projects), il che concede automaticamente l'attendibilità a tutte le sue sottodirectory. Usa questa opzione se conservi tutti i tuoi progetti sicuri in un'unica posizione - Non considerare attendibile: Contrassegnare la cartella come non attendibile. Bob Shell opera in una modalità sicura limitata
La tua scelta viene salvata in ~/.bob/trustedFolders.json, quindi ti viene chiesto solo una volta per cartella.
Livelli di attendibilità
Il file ~/.bob/trustedFolders.json memorizza una voce di attendibilità per cartella. Ogni voce utilizza uno di tre livelli di attendibilità:
| Livello di attendibilità | Effetto |
|---|---|
TRUST_FOLDER | Concede piena attendibilità al percorso esatto della cartella. Le impostazioni del progetto, gli hook, le modalità, gli skills e i server MCP si caricano normalmente. |
TRUST_PARENT | Concede piena attendibilità alla directory specificata e a tutte le sottodirectory al suo interno. Usa questo livello per coprire un workspace root che contiene più repository. |
DONT_TRUST | Contrassegna la cartella come non attendibile. Bob Shell viene eseguito in modalità sicura limitata e blocca tutte le configurazioni specifiche del progetto. Consulta Impatto delle cartelle non attendibili. |
Le cartelle senza voce in ~/.bob/trustedFolders.json vengono definite non risolte. Il modo in cui Bob Shell tratta le cartelle non risolte dipende dall'attivazione o meno della funzionalità delle cartelle attendibili. Consulta Sessioni non interattive per i dettagli.
Impatto delle cartelle non attendibili
Quando una cartella non è attendibile, Bob Shell opera in modalità sicura limitata. Le seguenti funzionalità sono disabilitate o ignorate:
| Funzionalità | Comportamento in modalità sicura |
|---|---|
| Impostazioni del progetto | .bob/settings.json non viene caricato. Gli strumenti personalizzati e le configurazioni potenzialmente pericolose vengono bloccati. |
| Approvazione automatica degli strumenti | Ti viene sempre richiesta la conferma prima dell'esecuzione di qualsiasi strumento, anche se l'approvazione automatica è abilitata globalmente. |
| Server MCP | Bob Shell non tenterà di connettersi a nessun server MCP. |
| Modalità personalizzate | Le modalità definite nella cartella del progetto non sono disponibili. Possono essere usate solo le modalità integrate e quelle definite globalmente. |
| Skills | Gli skills inclusi nel progetto non vengono caricati. Restano attivi solo gli skills disponibili globalmente e le funzionalità integrate. |
| Subagents | I subagents personalizzati nella cartella del progetto non sono disponibili. L'agente non può delegare il lavoro agli helper forniti dal progetto. |
| Istruzioni del progetto | I file guida come AGENTS.md e le regole personalizzate del progetto non vengono letti. L'agente opera senza le istruzioni personalizzate del progetto. |
Concedere l'attendibilità a una cartella sblocca la piena funzionalità di Bob Shell per quello spazio di lavoro.
Gestione delle impostazioni di attendibilità
- Come viene risolta l'attendibilità
- Bob Shell controlla
~/.bob/trustedFolders.jsonper verificare se esiste già una decisione per la cartella corrente. - Modificare l'attendibilità della cartella corrente
- Esegui il comando slash
/permissionsdall'interno di Bob Shell. Compare la finestra di dialogo interattiva che ti consente di modificare il livello di attendibilità per la cartella corrente. - Visualizzare tutte le regole di attendibilità
- Controlla
~/.bob/trustedFolders.jsonnella tua home directory per vedere un elenco completo di tutte le regole delle cartelle attendibili e non attendibili.
Sessioni non interattive
A differenza della modalità interattiva, le sessioni non interattive (bob run) non mostrano mai la finestra di dialogo di attendibilità. Bob Shell opera silenziosamente basandosi su decisioni di attendibilità preesistenti.
Comportamento predefinito quando la funzionalità è disabilitata
Quando la funzionalità delle cartelle attendibili è disabilitata (impostazione predefinita), Bob Shell tratta ogni cartella come attendibile. Le impostazioni del progetto, gli hook, le modalità, gli skills e i server MCP si caricano per ogni cartella senza restrizioni, indipendentemente dalla presenza di una voce in ~/.bob/trustedFolders.json.
Comportamento quando la funzionalità è abilitata
Quando la funzionalità delle cartelle attendibili è abilitata, Bob Shell valuta il livello di attendibilità della cartella di lavoro prima di caricare qualsiasi contenuto specifico del progetto:
- Cartella non risolta (nessuna voce in
~/.bob/trustedFolders.json): La cartella viene trattata come attendibile. Le impostazioni del progetto e gli hook si caricano normalmente. - Voce
TRUST_FOLDERoTRUST_PARENT: La cartella è attendibile. Tutte le funzionalità sono disponibili. - Voce
DONT_TRUST: Bob Shell genera un errore e non viene eseguito:<folder> is not a trusted folder. Pass --trust to run in this folder, or run Bob Shell interactively and choose a trust level.
Abilitare la funzionalità delle cartelle attendibili da sola non blocca l'esecuzione degli hook per le cartelle senza decisione di attendibilità. Una cartella non risolta — ad esempio, un repository clonato per la prima volta in una pipeline CI/CD — viene trattata come attendibile. Solo una voce esplicita DONT_TRUST impedisce il caricamento di hook e impostazioni del progetto.
Esecuzione degli hook in modalità headless
Gli hook globali definiti in ~/.bob/settings/settings.json vengono eseguiti per ogni cartella non esplicitamente contrassegnata come DONT_TRUST, incluse le cartelle non risolte. Gli hook workspace definiti in .bob/settings.json all'interno del progetto sono anch'essi soggetti alla attendibilità delle cartelle: vengono caricati solo quando la cartella è attendibile o non risolta, e vengono silenziosamente ignorati quando la cartella è DONT_TRUST.
Per capire quali hook sono configurati e cosa fanno prima di eseguire bob run su un repository sconosciuto, consulta Lifecycle hook.
Comportamento dei flag in base alla modalità
I flag --trust e --auto-approve si comportano in modo diverso a seconda di come viene avviato Bob Shell. Seleziona la modalità per vedere il comportamento rilevante:
--trust- La cartella viene salvata come attendibile in modo persistente. Bob Shell scrive una voce attendibile per la directory corrente in
~/.bob/trustedFolders.jsone salta la finestra di dialogo di attendibilità al primo accesso. È equivalente ad aprire la cartella e selezionare manualmente "Considera attendibile la cartella". --auto-approve- L'approvazione automatica viene soppressa silenziosamente in una cartella non attendibile. Ti verrà comunque chiesta conferma prima di ogni esecuzione di strumenti.
--trust- La cartella viene trattata come attendibile solo per quell'esecuzione. La decisione di attendibilità non viene salvata e non viene scritto nulla nell'archivio di attendibilità.
Protezione delle pipeline di automazione
Se esegui bob run in una pipeline CI/CD su repository che non controlli — ad esempio repository di terze parti o open source clonati come parte di una build — segui i passaggi seguenti per impedire l'esecuzione di codice hook non attendibile.
Prima di iniziare: Abilita la funzionalità delle cartelle attendibili impostando security.folderTrust.enabled su true in ~/.bob/settings/settings.json. Per rendere effettiva la modifica è necessario riavviare.
- Decidi quali directory controlli e aggiungi una voce
TRUST_PARENTin~/.bob/trustedFolders.jsonper ciascuna. Questo copre tutti i repository sotto una radice di workspace nota e lascia tutto ciò che è al di fuori di quell'albero come non risolto.{ "/home/runner/work/my-org": "TRUST_PARENT" } - Per qualsiasi repository che cloni da una fonte esterna o non attendibile, aggiungi una voce
DONT_TRUSTprima di eseguirebob run:{ "/home/runner/work/my-org": "TRUST_PARENT", "/home/runner/work/third-party-repo": "DONT_TRUST" } - Esamina gli hook globali configurati in
~/.bob/settings/settings.json. Gli hook globali vengono eseguiti per ogni cartella attendibile o non risolta, inclusi tutti i repository coperti da una voceTRUST_PARENT. Rimuovi o limita gli hook che non devono essere eseguiti su codice non attendibile. - Prima di eseguire
bob runsu un repository clonato, esamina.bob/settings.jsonall'interno di quel repository per gli hook workspace, proprio come faresti con unMakefileo un file di configurazione CI. Gli hook workspace si caricano in qualsiasi cartella attendibile o non risolta.
Dopo aver completato questi passaggi, Bob Shell blocca le impostazioni del progetto e gli hook per qualsiasi cartella con una voce DONT_TRUST, consentendo a bob run di continuare a funzionare normalmente nel tuo workspace controllato.
Best practice
- Considera attendibili solo le cartelle contenenti codice che hai revisionato o creato tu stesso
- Usa
TRUST_PARENTper le directory contenenti più progetti sicuri per evitare di gestire singole voci di cartelle - Esamina regolarmente
~/.bob/trustedFolders.jsonper verificare quali cartelle sono attendibili - Quando lavori con codice non familiare, aggiungi una voce
DONT_TRUSTper la directory clonata prima di eseguirebob run - Esamina periodicamente gli hook globali in
~/.bob/settings/settings.json— vengono eseguiti in ogni cartella attendibile e non risolta