安全性
受信任的資料夾
透過受信任的資料夾安全性,控制哪些專案可以使用 Bob Shell 的完整功能。
受信任的資料夾
受信任的資料夾讓你可以控制哪些專案可以與 Bob Shell 搭配使用。你必須核准一個資料夾,Bob Shell 才會載入任何專案特定的設定,以保護你免受潛在惡意程式碼的侵害。
注意:
受信任資料夾功能預設為停用。若要啟用,請開啟 /settings 選單,並將 Folder Trust 設為 true。變更必須重新啟動後才會生效。
受信任的資料夾的運作方式
當你第一次從某個資料夾執行 Bob Shell 時,會自動彈出信任對話方塊,提示你做出選擇:
- 信任資料夾:授予目前資料夾完全信任(例如
my-project) - 信任父資料夾:授予父目錄(例如
safe-projects)信任,這將自動信任其所有子目錄。如果你將所有安全專案儲存在同一個位置,請使用此選項 - 不信任:將資料夾標記為不受信任。Bob Shell 在受限安全模式下執行
你的選擇將儲存在 ~/.bob/trustedFolders.json 中,因此每個資料夾只需選擇一次。
不受信任的資料夾的影響
當資料夾不受信任時,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 Shell 根據預先存在的信任決定靜默執行。
當此功能已啟用且資料夾沒有信任決定,或資料夾被標記為不受信任時,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.不同模式下的 flag 行為
--trust 和 --auto-approve flag 的行為會依 Bob Shell 的啟動方式而不同。選擇你的模式以查看對應工作階段中的行為:
--trust- 該資料夾會被持久儲存為受信任。Bob Shell 會將目前目錄的受信任項目寫入
~/.bob/trustedFolders.json,並跳過首次存取時的信任對話方塊。這等同於開啟資料夾後手動選擇「信任資料夾」。 --auto-approve- 在不受信任的資料夾中,自動核准會被靜默抑制。你仍然會在每次工具執行前收到確認提示。
--trust- 該資料夾只會在本次執行中被視為受信任。這個信任決定不會被持久儲存,也不會向信任儲存寫入任何內容。
自動化的預先設定
對於安全自動化和 CI/CD 管線,在執行非互動式指令之前建立信任決定:
- 首先執行互動式工作階段,透過對話方塊設定信任偏好。
- 手動設定
~/.bob/trustedFolders.json。
在沒有任何決定時,Bob Shell 不會回退到受信任狀態,因此在安全敏感的環境中,預先設定信任至關重要。
最佳實踐
- 僅信任包含你自己已審查或建立的程式碼的資料夾
- 對包含多個安全專案的目錄使用「信任父資料夾」選項
- 定期審查
~/.bob/trustedFolders.json中的受信任資料夾清單 - 在處理不熟悉的程式碼時,先在不受信任模式下執行以了解專案,再授予信任
這個主題如何?