セキュリティ

信頼フォルダー

信頼フォルダーのセキュリティを使用して、Bob Shell の完全な機能を使用できるプロジェクトを制御してください。

信頼フォルダーにより、Bob Shell で使用できるプロジェクトを制御できます。Bob Shell がプロジェクト固有の設定を読み込む前に、フォルダーを承認する必要があります。これにより、悪意のあるコードから保護されます。

注:

信頼フォルダー機能はデフォルトで無効になっています。有効にするには、/settings メニューを開いて Folder Trusttrue に設定してください。変更を反映するには再起動が必要です。

信頼フォルダーの仕組み

フォルダーから初めて Bob Shell を実行すると、信頼ダイアログが自動的に表示され、選択を求められます:

  • フォルダーを信頼する: 現在のフォルダー(例:my-project)に完全な信頼を付与する
  • 親フォルダーを信頼する: 親ディレクトリ(例:safe-projects)に信頼を付与する。これにより、そのすべてのサブディレクトリが自動的に信頼されます。すべての安全なプロジェクトを一箇所にまとめている場合にこのオプションを使用してください
  • 信頼しない: フォルダーを信頼されていないとしてマークする。Bob Shell は制限付きのセーフモードで動作します

選択内容は ~/.bob/trustedFolders.json に保存されるため、フォルダーごとに一度だけ確認されます。

信頼レベル

~/.bob/trustedFolders.json ファイルには、フォルダーごとに 1 つの信頼エントリーが格納されます。各エントリーは次の 3 つの信頼レベルのいずれかを使用します:

信頼レベル効果
TRUST_FOLDER指定されたフォルダーパスに完全な信頼を付与します。プロジェクト設定、フック、モード、スキル、MCP サーバーはすべて通常どおり読み込まれます。
TRUST_PARENT指定されたディレクトリとその配下のすべてのサブディレクトリに完全な信頼を付与します。複数のリポジトリを含むワークスペースのルートに対して使用します。
DONT_TRUSTフォルダーを信頼されていないとしてマークします。Bob Shell は制限付きのセーフモードで動作し、すべてのプロジェクト固有の設定をブロックします。信頼されていないフォルダーの影響を参照してください。

~/.bob/trustedFolders.json にエントリーのないフォルダーは 未解決 と呼ばれます。Bob Shell が未解決のフォルダーをどのように扱うかは、信頼フォルダー機能が有効かどうかによって異なります。詳細は非インタラクティブセッションを参照してください。

信頼されていないフォルダーの影響

フォルダーが信頼されていない場合、Bob Shell は制限付きのセーフモードで動作します。以下の機能は無効になるか、無視されます:

機能セーフモードでの動作
プロジェクト設定.bob/settings.json は読み込まれません。カスタムツールや潜在的に危険な設定はブロックされます。
ツールの自動承認自動承認をグローバルで有効にしていても、ツールの実行前に毎回確認を求められます。
MCP サーバーBob Shell は MCP サーバーへの接続を試みません。
カスタムモードプロジェクトフォルダーで定義されたモードは利用できません。組み込みモードとグローバルに定義したモードのみ使用できます。
Skillsプロジェクトに含まれる skills は読み込まれません。グローバルに利用可能な skills と組み込み機能のみが有効です。
Subagentsプロジェクトフォルダー内のカスタム subagents は利用できません。エージェントはプロジェクト提供のヘルパーに作業を委任できません。
プロジェクト指示AGENTS.md のようなガイダンスファイルやカスタムのプロジェクトルールは読み込まれません。エージェントはプロジェクト固有の指示なしで動作します。

フォルダーに信頼を付与すると、そのワークスペースで Bob Shell の完全な機能が使用できるようになります。

信頼設定の管理

信頼の解決方法
Bob Shell は ~/.bob/trustedFolders.json を確認し、現在のフォルダーに対する既存の判断があるかを調べます。
現在のフォルダーの信頼を変更する
Bob Shell 内から /permissions スラッシュコマンドを実行します。インタラクティブダイアログが表示され、現在のフォルダーの信頼レベルを変更できます。
すべての信頼ルールを表示する
ホームディレクトリの ~/.bob/trustedFolders.json を確認すると、信頼されているフォルダーと信頼されていないフォルダーのルールをすべて確認できます。

非インタラクティブセッション

インタラクティブモードとは異なり、非インタラクティブセッション(bob run)では信頼ダイアログが表示されません。Bob Shell は既存の信頼の決定に基づいてサイレントに動作します。

機能が無効な場合のデフォルトの動作

信頼フォルダー機能が無効(デフォルト)の場合、Bob Shell はすべてのフォルダーを信頼済みとして扱います。~/.bob/trustedFolders.json にエントリーがあるかどうかに関わらず、プロジェクト設定、フック、モード、スキル、MCP サーバーはすべてのフォルダーに対して制限なく読み込まれます。

機能が有効な場合の動作

信頼フォルダー機能が有効な場合、Bob Shell はプロジェクト固有のコンテンツを読み込む前に作業フォルダーの信頼レベルを評価します:

  • 未解決のフォルダー~/.bob/trustedFolders.json にエントリーなし):フォルダーは信頼済みとして扱われます。プロジェクト設定とフックは通常どおり読み込まれます。
  • TRUST_FOLDER または TRUST_PARENT エントリー:フォルダーは信頼済みです。すべての機能が利用可能です。
  • DONT_TRUST エントリー:Bob Shell はエラーを出して実行されません:
    <folder> is not a trusted folder. Pass --trust to run in this folder,
    or run Bob Shell interactively and choose a trust level.
重要:

信頼フォルダー機能を有効にするだけでは、信頼の決定がないフォルダーのフック実行はブロックされません。未解決 のフォルダー(例:CI/CD パイプラインで初めてクローンされたリポジトリ)は信頼済みとして扱われます。フックとプロジェクト設定の読み込みを防ぐには、明示的な DONT_TRUST エントリーが必要です。

ヘッドレスモードでのフックの実行

~/.bob/settings/settings.json で定義されたグローバルフックは、未解決のフォルダーを含め、明示的に DONT_TRUST とマークされていないすべてのフォルダーで実行されます。プロジェクト内の .bob/settings.json で定義されたワークスペースフックもフォルダーの信頼の対象となります。フォルダーが信頼済みまたは未解決の場合にのみ読み込まれ、フォルダーが DONT_TRUST の場合は暗黙的にスキップされます。

bob run を実行する前に、どのフックが設定されているか、またその内容を確認するには、ライフサイクルフックを参照してください。

モードごとのフラグの動作

--trust--auto-approve フラグの動作は、Bob Shell の起動方法によって異なります。該当する動作を見るには、モードを選択してください:

--trust
フォルダーは永続的に信頼済みとして保存されます。Bob Shell は現在のディレクトリに対する信頼エントリーを ~/.bob/trustedFolders.json に書き込み、初回アクセス時の信頼ダイアログをスキップします。これはフォルダーを開いて手動で「フォルダーを信頼する」を選ぶのと同じです。
--auto-approve
信頼されていないフォルダーでは自動承認が暗黙的に抑制されます。引き続き、各ツールの実行前に確認を求められます。
--trust
その実行に限ってフォルダーが信頼済みとして扱われます。信頼の決定は保存されず、信頼ストアにも何も書き込まれません。

自動化パイプラインのセキュリティ強化

制御していないリポジトリ(例:ビルドの一部としてクローンされたサードパーティまたはオープンソースのリポジトリ)に対して CI/CD パイプラインで bob run を実行する場合は、信頼されていないフック コードが実行されるのを防ぐために以下の手順を実行してください。

事前準備~/.bob/settings/settings.jsonsecurity.folderTrust.enabledtrue に設定して、信頼フォルダー機能を有効にしてください。変更を反映するには再起動が必要です。

  1. 管理しているディレクトリを決定し、それぞれについて ~/.bob/trustedFolders.jsonTRUST_PARENT エントリーを追加します。これにより、既知のワークスペースルート配下のすべてのリポジトリがカバーされ、それ以外はすべて未解決のままとなります。
    {
      "/home/runner/work/my-org": "TRUST_PARENT"
    }
  2. 外部または信頼されていないソースからクローンするリポジトリについては、bob run を実行する前に DONT_TRUST エントリーを追加します:
    {
      "/home/runner/work/my-org": "TRUST_PARENT",
      "/home/runner/work/third-party-repo": "DONT_TRUST"
    }
  3. ~/.bob/settings/settings.json に設定されているグローバルフックを確認します。グローバルフックは、TRUST_PARENT エントリーでカバーされているすべてのリポジトリを含め、信頼済みまたは未解決のすべてのフォルダーで実行されます。信頼されていないコードに対して実行してはいけないフックは削除またはスコープを制限してください。
  4. クローンしたリポジトリに対して bob run を実行する前に、Makefile や CI 設定ファイルを確認するのと同様に、そのリポジトリ内の .bob/settings.json でワークスペースフックを確認してください。ワークスペースフックは、信頼済みまたは未解決のすべてのフォルダーで読み込まれます。

これらの手順を完了すると、Bob Shell は DONT_TRUST エントリーのあるフォルダーのプロジェクト設定とフックをブロックしつつ、管理しているワークスペースでは bob run が通常どおり動作します。

ベストプラクティス

  • 自分でレビューまたは作成したコードが含まれるフォルダーのみを信頼してください
  • 複数の安全なプロジェクトを含むディレクトリには TRUST_PARENT を使用して、個別のフォルダーエントリーの管理を省いてください
  • ~/.bob/trustedFolders.json を定期的に確認して、どのフォルダーが信頼されているかを監査してください
  • 不慣れなコードを扱う場合は、bob run を実行する前にクローンしたディレクトリに DONT_TRUST エントリーを追加してください
  • ~/.bob/settings/settings.json のグローバルフックを定期的に確認してください。これらのフックは信頼済みおよび未解決のすべてのフォルダーで実行されます
このトピックはいかがですか?