Sicurezza

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.

Nota:

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_FOLDERConcede 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_PARENTConcede 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_TRUSTContrassegna 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 strumentiTi viene sempre richiesta la conferma prima dell'esecuzione di qualsiasi strumento, anche se l'approvazione automatica è abilitata globalmente.
Server MCPBob Shell non tenterà di connettersi a nessun server MCP.
Modalità personalizzateLe modalità definite nella cartella del progetto non sono disponibili. Possono essere usate solo le modalità integrate e quelle definite globalmente.
SkillsGli skills inclusi nel progetto non vengono caricati. Restano attivi solo gli skills disponibili globalmente e le funzionalità integrate.
SubagentsI subagents personalizzati nella cartella del progetto non sono disponibili. L'agente non può delegare il lavoro agli helper forniti dal progetto.
Istruzioni del progettoI 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.json per verificare se esiste già una decisione per la cartella corrente.
Modificare l'attendibilità della cartella corrente
Esegui il comando slash /permissions dall'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.json nella 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_FOLDER o TRUST_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.
Importante:

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.json e 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.

  1. Decidi quali directory controlli e aggiungi una voce TRUST_PARENT in ~/.bob/trustedFolders.json per 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"
    }
  2. Per qualsiasi repository che cloni da una fonte esterna o non attendibile, aggiungi una voce DONT_TRUST prima di eseguire bob run:
    {
      "/home/runner/work/my-org": "TRUST_PARENT",
      "/home/runner/work/third-party-repo": "DONT_TRUST"
    }
  3. 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 voce TRUST_PARENT. Rimuovi o limita gli hook che non devono essere eseguiti su codice non attendibile.
  4. Prima di eseguire bob run su un repository clonato, esamina .bob/settings.json all'interno di quel repository per gli hook workspace, proprio come faresti con un Makefile o 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_PARENT per le directory contenenti più progetti sicuri per evitare di gestire singole voci di cartelle
  • Esamina regolarmente ~/.bob/trustedFolders.json per verificare quali cartelle sono attendibili
  • Quando lavori con codice non familiare, aggiungi una voce DONT_TRUST per la directory clonata prima di eseguire bob run
  • Esamina periodicamente gli hook globali in ~/.bob/settings/settings.json — vengono eseguiti in ogni cartella attendibile e non risolta
Come valuti questo argomento?