보안

신뢰 폴더

신뢰 폴더 보안을 사용하여 Bob Shell의 전체 기능을 사용할 수 있는 프로젝트를 제어하세요.

신뢰 폴더를 사용하면 Bob Shell에서 사용할 수 있는 프로젝트를 제어할 수 있어요. Bob Shell이 프로젝트별 구성을 로드하기 전에 폴더를 승인해야 해요. 이를 통해 잠재적으로 악의적인 코드로부터 보호받을 수 있어요.

참고:

신뢰 폴더 기능은 기본적으로 비활성화되어 있어요. 활성화하려면 /settings 메뉴를 열고 Folder Trusttrue로 설정하세요. 변경 사항을 적용하려면 다시 시작해야 해요.

신뢰 폴더의 작동 방식

처음으로 폴더에서 Bob Shell을 실행하면 신뢰 대화 상자가 자동으로 나타나며 선택을 요청해요:

  • 폴더 신뢰: 현재 폴더(예: my-project)에 완전한 신뢰 권한 부여
  • 상위 폴더 신뢰: 상위 디렉터리(예: safe-projects)에 신뢰 권한 부여. 그 모든 하위 디렉터리가 자동으로 신뢰돼요. 모든 안전한 프로젝트를 한 곳에 보관한다면 이 옵션을 사용하세요
  • 신뢰 안 함: 폴더를 신뢰할 수 없음으로 표시. Bob Shell이 제한된 안전 모드로 작동해요

선택한 내용은 ~/.bob/trustedFolders.json에 저장되므로 폴더당 한 번만 요청받아요.

신뢰 수준

~/.bob/trustedFolders.json 파일은 폴더당 하나의 신뢰 항목을 저장해요. 각 항목은 다음 세 가지 신뢰 수준 중 하나를 사용해요:

신뢰 수준효과
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는 사용할 수 없어요. 에이전트는 프로젝트에서 제공한 helper에게 작업을 위임할 수 없어요.
프로젝트 지침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을 실행하기 전에 어떤 훅이 구성되어 있고 어떤 작업을 하는지 확인하려면 Lifecycle hooks를 참고하세요.

모드별 플래그 동작

--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의 글로벌 훅을 주기적으로 검토하세요 — 신뢰되거나 미확인인 모든 폴더에서 실행돼요
이 주제는 어떤가요?