Sicherheit

Vertrauenswürdige Ordner

Steuere, welche Projekte die vollen Funktionen von Bob Shell nutzen können, mit der Sicherheit vertrauenswürdiger Ordner.

Vertrauenswürdige Ordner geben dir die Kontrolle darüber, welche Projekte mit Bob Shell verwendet werden können. Du musst einen Ordner genehmigen, bevor Bob Shell projektspezifische Konfigurationen lädt – das schützt dich vor potenziell bösartigem Code.

Hinweis:

Die Funktion für vertrauenswürdige Ordner ist standardmäßig deaktiviert. Um sie zu aktivieren, öffne das Menü /settings und setze Folder Trust auf true. Damit die Änderung wirksam wird, ist ein Neustart erforderlich.

Funktionsweise vertrauenswürdiger Ordner

Wenn du Bob Shell zum ersten Mal aus einem Ordner startest, erscheint automatisch ein Vertrauens-Dialog, der dich auffordert, eine Auswahl zu treffen:

  • Ordner vertrauen: Dem aktuellen Ordner volles Vertrauen gewähren (zum Beispiel my-project)
  • Übergeordnetem Ordner vertrauen: Dem übergeordneten Verzeichnis vertrauen (zum Beispiel safe-projects), wodurch automatisch allen Unterverzeichnissen vertraut wird. Verwende diese Option, wenn du alle deine sicheren Projekte an einem Ort aufbewahrst
  • Nicht vertrauen: Den Ordner als nicht vertrauenswürdig markieren. Bob Shell arbeitet dann in einem eingeschränkten Safe Mode

Deine Auswahl wird in ~/.bob/trustedFolders.json gespeichert, sodass du nur einmal pro Ordner gefragt wirst.

Vertrauensstufen

Die Datei ~/.bob/trustedFolders.json speichert einen Vertrauenseintrag pro Ordner. Jeder Eintrag verwendet eine von drei Vertrauensstufen:

VertrauensstufeAuswirkung
TRUST_FOLDERGewährt volles Vertrauen für den exakten Ordnerpfad. Projekteinstellungen, Hooks, Modi, Skills und MCP-Server werden normal geladen.
TRUST_PARENTGewährt volles Vertrauen für das angegebene Verzeichnis und alle darunter liegenden Unterverzeichnisse. Verwende diese Stufe, um ein Workspace-Root abzudecken, das mehrere Repos enthält.
DONT_TRUSTMarkiert den Ordner als nicht vertrauenswürdig. Bob Shell läuft im eingeschränkten Safe Mode und blockiert alle projektspezifischen Konfigurationen. Siehe Auswirkungen nicht vertrauenswürdiger Ordner.

Ordner ohne Eintrag in ~/.bob/trustedFolders.json werden als unaufgelöst bezeichnet. Wie Bob Shell unaufgelöste Ordner behandelt, hängt davon ab, ob die Funktion für vertrauenswürdige Ordner aktiviert ist. Details findest du unter Nicht-interaktive Sitzungen.

Auswirkungen nicht vertrauenswürdiger Ordner

Wenn ein Ordner nicht vertrauenswürdig ist, läuft Bob Shell im eingeschränkten Safe Mode. Die folgenden Funktionen sind deaktiviert oder werden ignoriert:

FunktionVerhalten im Safe Mode
Projekteinstellungen.bob/settings.json wird nicht geladen. Benutzerdefinierte Tools und potenziell gefährliche Konfigurationen werden blockiert.
Tool-Auto-ApproveDu wirst immer aufgefordert, bevor ein Tool ausgeführt wird, auch wenn Auto-Approve global aktiviert ist.
MCP-ServerBob Shell versucht nicht, eine Verbindung zu MCP-Servern herzustellen.
Benutzerdefinierte ModiIm Projektordner definierte Modi sind nicht verfügbar. Es können nur integrierte Modi und deine global definierten Modi verwendet werden.
SkillsMit dem Projekt gebündelte Skills werden nicht geladen. Nur global verfügbare Skills und integrierte Funktionen sind aktiv.
SubagentsBenutzerdefinierte Subagents aus dem Projektordner sind nicht verfügbar. Der Agent kann keine Arbeit an projektbereitgestellte Helfer delegieren.
ProjektanweisungenLeitdateien wie AGENTS.md und benutzerdefinierte Projektregeln werden nicht gelesen. Der Agent arbeitet ohne die benutzerdefinierten Anweisungen des Projekts.

Das Gewähren von Vertrauen für einen Ordner schaltet die volle Funktionalität von Bob Shell für diesen Workspace frei.

Vertrauenseinstellungen verwalten

Wie Vertrauen aufgelöst wird
Bob Shell prüft ~/.bob/trustedFolders.json auf eine vorhandene Entscheidung für den aktuellen Ordner.
Vertrauen für den aktuellen Ordner ändern
Führe den Slash-Befehl /permissions innerhalb von Bob Shell aus. Der interaktive Dialog erscheint und ermöglicht es dir, die Vertrauensstufe für den aktuellen Ordner zu ändern.
Alle Vertrauensregeln anzeigen
Sieh dir ~/.bob/trustedFolders.json in deinem Home-Verzeichnis an, um eine vollständige Liste aller deiner vertrauenswürdigen und nicht vertrauenswürdigen Ordnerregeln zu erhalten.

Nicht-interaktive Sitzungen

Im Gegensatz zum interaktiven Modus zeigen nicht-interaktive Sitzungen (bob run) niemals den Vertrauens-Dialog an. Bob Shell arbeitet still auf Basis bereits vorhandener Vertrauensentscheidungen.

Standardverhalten bei deaktivierter Funktion

Wenn die Funktion für vertrauenswürdige Ordner deaktiviert ist (Standardeinstellung), behandelt Bob Shell jeden Ordner als vertrauenswürdig. Projekteinstellungen, Hooks, Modi, Skills und MCP-Server werden für jeden Ordner ohne Einschränkung geladen, unabhängig davon, ob ein Eintrag in ~/.bob/trustedFolders.json vorhanden ist.

Verhalten bei aktivierter Funktion

Wenn die Funktion für vertrauenswürdige Ordner aktiviert ist, wertet Bob Shell die Vertrauensstufe des Arbeitsordners aus, bevor projektspezifische Inhalte geladen werden:

  • Unaufgelöster Ordner (kein Eintrag in ~/.bob/trustedFolders.json): Der Ordner wird als vertrauenswürdig behandelt. Projekteinstellungen und Hooks werden normal geladen.
  • Eintrag TRUST_FOLDER oder TRUST_PARENT: Der Ordner ist vertrauenswürdig. Die volle Funktionalität ist verfügbar.
  • Eintrag DONT_TRUST: Bob Shell gibt einen Fehler aus und wird nicht ausgeführt:
    <folder> is not a trusted folder. Pass --trust to run in this folder,
    or run Bob Shell interactively and choose a trust level.
Wichtig:

Das alleinige Aktivieren der Funktion für vertrauenswürdige Ordner verhindert die Hook-Ausführung für Ordner ohne Vertrauensentscheidung nicht. Ein unaufgelöster Ordner – zum Beispiel ein Repository, das zum ersten Mal in einer CI/CD-Pipeline geklont wurde – wird als vertrauenswürdig behandelt. Nur ein expliziter DONT_TRUST-Eintrag verhindert, dass Hooks und Projekteinstellungen geladen werden.

Hook-Ausführung im Headless-Modus

Globale Hooks, die in ~/.bob/settings/settings.json definiert sind, werden für jeden Ordner ausgeführt, der nicht explizit als DONT_TRUST markiert ist, einschließlich unaufgelöster Ordner. Workspace-Hooks, die in .bob/settings.json im Projekt definiert sind, unterliegen ebenfalls der Ordner-Vertrauensregelung: Sie werden nur geladen, wenn der Ordner vertrauenswürdig oder unaufgelöst ist, und werden stillschweigend übersprungen, wenn der Ordner DONT_TRUST ist.

Um zu verstehen, welche Hooks konfiguriert sind und was sie tun, bevor du bob run gegen ein unbekanntes Repository ausführst, sieh dir Lifecycle-Hooks an.

Verhalten von Flags je nach Modus

Die Flags --trust und --auto-approve verhalten sich unterschiedlich, je nachdem, wie Bob Shell gestartet wird. Wähle deinen Modus aus, um das relevante Verhalten zu sehen:

--trust
Der Ordner wird dauerhaft als vertrauenswürdig gespeichert. Bob Shell schreibt einen vertrauenswürdigen Eintrag für das aktuelle Verzeichnis in ~/.bob/trustedFolders.json und überspringt den Vertrauens-Dialog beim ersten Zugriff. Das entspricht dem Öffnen des Ordners und der manuellen Auswahl von „Ordner vertrauen".
--auto-approve
Auto-Approve wird in einem nicht vertrauenswürdigen Ordner stillschweigend unterdrückt. Du wirst weiterhin vor jeder Tool-Ausführung aufgefordert.
--trust
Der Ordner wird nur für diesen Lauf als vertrauenswürdig behandelt. Die Vertrauensentscheidung wird nicht gespeichert und es wird nichts in den Trust Store geschrieben.

Automatisierungs-Pipelines absichern

Wenn du bob run in einer CI/CD-Pipeline gegen Repositories ausführst, die du nicht kontrollierst – zum Beispiel Drittanbieter- oder Open-Source-Repos, die als Teil eines Builds geklont werden –, führe die folgenden Schritte durch, um zu verhindern, dass nicht vertrauenswürdiger Hook-Code ausgeführt wird.

Voraussetzung: Aktiviere die Funktion für vertrauenswürdige Ordner, indem du security.folderTrust.enabled in ~/.bob/settings/settings.json auf true setzt. Damit die Änderung wirksam wird, ist ein Neustart erforderlich.

  1. Entscheide, welche Verzeichnisse du kontrollierst, und füge für jedes einen TRUST_PARENT-Eintrag in ~/.bob/trustedFolders.json hinzu. Dadurch werden alle Repositories unterhalb eines bekannten Workspace-Roots abgedeckt und alles außerhalb dieses Bereichs bleibt unaufgelöst.
    {
      "/home/runner/work/my-org": "TRUST_PARENT"
    }
  2. Für jedes Repository, das du aus einer externen oder nicht vertrauenswürdigen Quelle klonst, füge vor dem Ausführen von bob run einen DONT_TRUST-Eintrag hinzu:
    {
      "/home/runner/work/my-org": "TRUST_PARENT",
      "/home/runner/work/third-party-repo": "DONT_TRUST"
    }
  3. Überprüfe die globalen Hooks, die in ~/.bob/settings/settings.json konfiguriert sind. Globale Hooks werden für jeden vertrauenswürdigen oder unaufgelösten Ordner ausgeführt, einschließlich aller Repos, die von einem TRUST_PARENT-Eintrag abgedeckt werden. Entferne oder beschränke alle Hooks, die nicht gegen nicht vertrauenswürdigen Code ausgeführt werden sollen.
  4. Bevor du bob run gegen ein geklontes Repository ausführst, überprüfe .bob/settings.json in diesem Repository auf Workspace-Hooks, genau wie du eine Makefile- oder CI-Konfigurationsdatei überprüfen würdest. Workspace-Hooks werden in jedem vertrauenswürdigen oder unaufgelösten Ordner geladen.

Nach Abschluss dieser Schritte blockiert Bob Shell Projekteinstellungen und Hooks für jeden Ordner mit einem DONT_TRUST-Eintrag, während bob run in deinem kontrollierten Workspace weiterhin normal funktioniert.

Best Practices

  • Vertraue nur Ordnern, die Code enthalten, den du selbst geprüft oder erstellt hast
  • Verwende TRUST_PARENT für Verzeichnisse, die mehrere sichere Projekte enthalten, um die Verwaltung einzelner Ordnereinträge zu vermeiden
  • Überprüfe regelmäßig ~/.bob/trustedFolders.json, um zu prüfen, welchen Ordnern vertraut wird
  • Wenn du mit unbekanntem Code arbeitest, füge einen DONT_TRUST-Eintrag für das geklonte Verzeichnis hinzu, bevor du bob run ausführst
  • Überprüfe die globalen Hooks in ~/.bob/settings/settings.json regelmäßig – sie werden in jedem vertrauenswürdigen und unaufgelösten Ordner ausgeführt
Wie ist dieses Thema?