Pi 구성, 확장, 플랫폼 설정 및 API 참조.

보안

Pi는 로컬 코딩 에이전트입니다. 이를 시작하는 사용자 계정의 권한으로 실행되며 해당 사용자가 쓸 수 있는 파일을 동일한 로컬 신뢰 경계 내에 있는 것으로 처리합니다.

프로젝트 신뢰

프로젝트 신뢰는 pi가 프로젝트 로컬 설정, 리소스, 패키지 및 확장을 로드하는지 여부를 제어합니다. 이는 sandbox이 아니며 디렉토리에서 작업을 시작한 후 모델이 도구에 요청할 수 있는 작업을 제한하지 않습니다.

Pi 현재 작업 디렉터리에서 다음 중 하나를 찾으면 프로젝트에 신뢰가 필요한 리소스가 있는 것으로 간주합니다.

  • .pi/settings.json
  • .pi/extensions, .pi/skills, .pi/prompts 또는 .pi/themes
  • .pi/SYSTEM.md 또는 .pi/APPEND_SYSTEM.md
  • 현재 디렉터리 또는 상위 디렉터리의 프로젝트 .agents/skills

.pi 디렉터리는 신뢰가 필요한 프로젝트 리소스로 간주되지 않습니다.

신뢰가 필요하고 현재 디렉터리나 상위 디렉터리에 대해 저장된 결정이 없는 리소스가 있는 프로젝트에서 대화형 세션이 시작되면 pi는 전역 설정에서 defaultProjectTrust를 따릅니다. 기본값은 "ask"이며 UI를 사용할 수 있을 때 프로젝트를 신뢰할지 여부를 묻는 값입니다. 저장된 결정은 ~/.pi/agent/trust.json의 표준 디렉터리에 저장되며, 현재 또는 상위 경로에 가장 가까운 저장된 결정이 전역 기본값 이전에 적용됩니다.

프로젝트를 신뢰하면 pi는 다음을 포함하여 신뢰가 필요한 프로젝트 리소스를 로드할 수 있습니다.

  • .pi/settings.json
  • .pi 확장, 기술, prompt templates, 테마, 시스템 프롬프트 파일 등의 리소스
  • 프로젝트 설정을 통해 구성된 누락된 프로젝트 패키지
  • 프로젝트 로컬 확장 및 프로젝트 패키지 관리 확장

신뢰가 감소하면 보호되는 리소스가 건너뜁니다. AGENTS.override.md, AGENTS.mdCLAUDE.md와 같은 컨텍스트 파일은 컨텍스트 로딩이 비활성화되지 않는 한 프로젝트 신뢰와 관계없이 로드됩니다. 신뢰가 해결되기 전에 pi는 context files, 사용자/전역 확장 및 CLI -e 확장만 로드합니다. 사용자/전역 및 CLI 확장은 project_trust 이벤트를 처리할 수 있습니다. 예/아니요 결정을 반환하는 첫 번째 확장이 결정을 소유합니다.

비대화형 모드(-p, --mode json--mode rpc)에는 신뢰 프롬프트가 표시되지 않습니다. 적용 가능한 저장된 신뢰 결정이 없으면 defaultProjectTrust: "ask""never"는 해당 리소스를 무시하고 "always"는 해당 리소스를 신뢰합니다. 한 번의 실행에 대해 프로젝트 신뢰를 재정의하려면 --approve/-a 또는 --no-approve/-na를 사용하세요.

내장된 샌드박스 없음

Pi에는 내장된 sandbox가 포함되지 않습니다. 내장 도구는 pi 프로세스의 권한으로 파일을 읽고, 쓰고, 파일을 편집하고, 셸 명령을 실행할 수 있습니다. Extensions는 동일한 권한으로 실행되는 TypeScript 모듈입니다. 패키지 설치, 셸 명령, 언어 서버, 테스트 명령 및 기타 개발자 도구는 일반 로컬 프로세스처럼 작동합니다.

이는 의도적인 것입니다. Pi은 로컬 소스 트리에서 작동하고, 프로젝트 도구 체인을 호출하고, 사용자의 기존 개발 환경과 통합되도록 설계되었습니다. 부분적인 진행 중인 sandbox은 호스트 셸, 파일 시스템, 패키지 관리자, 자격 증명 및 확장 코드에 계속 의존하면서 보안 경계로 오해되기 쉽습니다. 실제 격리는 운영 체제 또는 가상화/컨테이너 경계에서 이루어져야 합니다.

프로젝트 신뢰는 입력 로딩 가드일 뿐입니다. 이는 승인하기 전에 저장소가 Pi의 설정이나 확장을 자동으로 변경하는 것을 방지합니다. 신뢰할 수 없는 코드, 신뢰할 수 없는 프롬프트 또는 신뢰할 수 없는 모델 출력을 안전하게 만들지는 않습니다. 저장소 파일, 주석, 문서, context files 또는 빌드 출력에서 ​​즉각적인 삽입은 로컬 에이전트 위험이 예상되며 pi로 안정적으로 방지할 수 없습니다.

신뢰할 수 없거나 모니터링되지 않는 작업 실행

신뢰할 수 없는 리포지토리, 면밀히 모니터링할 의도가 없는 생성된 코드 또는 무인 자동화의 경우 포함된 환경에서 pi를 실행합니다. 작업에 필요한 파일과 자격 증명만 포함하여 컨테이너, VM, 마이크로 VM, 원격 sandbox 또는 정책 제어 sandbox를 사용하세요.

일반적인 패턴은 Containerization에 설명되어 있습니다.

  • 전체 pi 프로세스를 컨테이너/sandbox 내부에서 실행합니다.
  • 내장 도구 실행을 Gondolin 마이크로 VM으로 라우팅하는 동안 호스트 pi를 실행합니다.
  • 에이전트가 액세스해야 하는 작업공간 경로만 마운트
  • 컨테이너가 호스트 세션, 설정 및 자격 증명에 액세스해야 하지 않는 한 호스트 마운트를 피하세요 ~/.pi/agent
  • 최소 필수 API keys를 통과하거나 단기 사용자 인증 정보를 사용하세요.
  • 작업에 필요하지 않을 때 네트워크 액세스를 제한합니다.
  • 결과를 신뢰할 수 있는 시스템에 다시 복사하기 전에 차이점과 출력을 검토하세요.

호스트 작업 영역 읽기/쓰기를 바인드 탑재하는 경우 컨테이너 또는 VM 내부의 쓰기로 인해 호스트 파일이 계속 수정될 수 있습니다. 의도하지 않은 쓰기로부터 더 강력한 보호가 필요한 경우 읽기 전용 마운트를 사용하거나 sandbox 안팎으로 파일을 복사하세요.

보안 문제 보고

보안 문제를 보고하려면 저장소 Security Policy를 팔로우하세요. 보안에 민감한 보고서에 대해서는 공개 문제를 공개하지 마십시오.

예상되는 로컬 에이전트 동작, 내장된 sandbox 부족, 신뢰할 수 없는 콘텐츠의 신속한 삽입, 사용자가 설치한 확장 프로그램이나 기술의 동작은 보고서에서 실제 권한 경계 우회를 보여주거나 pi가 로컬 사용자에게 아직 없는 액세스 권한을 부여하는 방법을 보여주지 않는 한 일반적으로 보안 경계 외부에 있습니다.