Configuração, personalização, ajustes de plataforma e referências de API para Pi.

Segurança

Pi é um agente de codificação local. Ele é executado com as permissões da conta de usuário que o inicia e trata os arquivos graváveis ​​por esse usuário como dentro do mesmo limite de confiança local.

Confiança do Projeto

A confiança do projeto controla se pi carrega configurações, recursos, pacotes e extensões locais do projeto. Não é um sandbox e não restringe o que o modelo pode solicitar às ferramentas depois que você começa a trabalhar em um diretório.

Pi considera que um projeto possui recursos que exigem confiança quando encontra qualquer um destes no diretório de trabalho atual:

  • .pi/settings.json
  • .pi/extensions, .pi/skills, .pi/prompts ou .pi/themes
  • .pi/SYSTEM.md ou .pi/APPEND_SYSTEM.md
  • projeto .agents/skills no diretório atual ou em um diretório ancestral

Um diretório .pi vazio não conta como um recurso de projeto que requer confiança.

Quando uma sessão interativa é iniciada em um projeto com recursos que exigem confiança e nenhuma decisão salva para o diretório atual ou diretório pai, pi segue defaultProjectTrust das configurações globais. O valor padrão é "ask", que pergunta se o projeto deve ser confiável quando a UI estiver disponível. As decisões salvas são armazenadas pelo diretório canônico em ~/.pi/agent/trust.json, e a decisão salva mais próxima no caminho atual ou pai se aplica antes do padrão global.

Confiar em um projeto permite que pi carregue recursos do projeto que exigem confiança, incluindo:

  • .pi/settings.json
  • .pi recursos como extensões, habilidades, prompt templates, temas e arquivos de prompt do sistema
  • pacotes de projeto ausentes configurados através das configurações do projeto
  • extensões locais do projeto e extensões gerenciadas pelo pacote do projeto

A diminuição da confiança ignora recursos protegidos. Arquivos de contexto como AGENTS.override.md, AGENTS.md e CLAUDE.md são carregados independentemente da confiança do projeto, a menos que o carregamento de contexto esteja desabilitado. Antes que a confiança seja resolvida, pi carrega apenas extensões context files, de usuário/globais e extensões CLI -e. As extensões User/global e CLI podem lidar com o evento project_trust; a primeira extensão que retornar uma decisão sim/não possui a decisão.

Os modos não interativos (-p, --mode json e --mode rpc) não mostram um prompt de confiança. Sem uma decisão de confiança salva aplicável, defaultProjectTrust: "ask" e "never" ignoram tais recursos, enquanto "always" confia neles. Use --approve/-a ou --no-approve/-na para substituir a confiança do projeto em uma execução.

Sem sandbox integrado

Pi não inclui um sandbox integrado. Ferramentas integradas podem ler arquivos, gravar arquivos, editar arquivos e executar comandos shell com as permissões do processo pi. Extensions são módulos TypeScript que rodam com as mesmas permissões. Instalações de pacotes, comandos shell, servidores de linguagem, comandos de teste e outras ferramentas de desenvolvedor se comportam como processos locais comuns.

Isso é intencional. Pi foi projetado para operar em árvores de origem locais, invocar cadeias de ferramentas do projeto e integrar-se ao ambiente de desenvolvimento existente do usuário. Um processo parcial sandbox seria fácil de ser mal interpretado como um limite de segurança, embora ainda dependa do shell do host, do sistema de arquivos, dos gerenciadores de pacotes, das credenciais e do código de extensão. O isolamento real precisa vir do sistema operacional ou de um limite de virtualização/contêiner.

A confiança do projeto é apenas uma proteção para o carregamento de entradas. Ele evita que um repositório altere silenciosamente as configurações ou extensões do pi antes de você aprová-lo. Ele não torna seguro o código não confiável, os prompts não confiáveis ​​ou a saída do modelo não confiável. A injeção imediata de arquivos de repositório, comentários, documentação, context files ou saída de compilação é um risco esperado do agente local e não pode ser evitado de forma confiável pelo pi.

Executando trabalho não confiável ou não monitorado

Para repositórios não confiáveis, código gerado que você não pretende monitorar de perto ou automação autônoma, execute pi em um ambiente contido. Use um contêiner, VM, micro-VM, sandbox remoto ou sandbox controlado por política apenas com os arquivos e credenciais necessários para a tarefa.

Padrões comuns estão documentados em Containerization:

  • execute todo o processo pi dentro de um contêiner/sandbox
  • execute o host pi enquanto roteia a execução da ferramenta integrada para uma micro-VM Gondolin
  • monte apenas os caminhos do espaço de trabalho que o agente deve acessar
  • evite montar o host ~/.pi/agent, a menos que o contêiner deva acessar sessões, configurações e credenciais do host
  • passe nos API keys mínimos exigidos ou use credenciais de curta duração
  • restringir o acesso à rede quando a tarefa não precisar dele
  • revise diferenças e resultados antes de copiar os resultados de volta para sistemas confiáveis

Se você montar uma leitura/gravação de espaço de trabalho do host, as gravações de dentro do contêiner ou da VM ainda poderão modificar os arquivos do host. Use montagens somente leitura ou copie arquivos dentro e fora do sandbox quando precisar de proteção mais forte contra gravações não intencionais.

Relatando problemas de segurança

Para relatar um problema de segurança, siga o repositório Security Policy. Não abra um problema público para relatórios sensíveis à segurança.

O comportamento esperado do agente local, a falta de um sandbox integrado, a injeção imediata de conteúdo não confiável e o comportamento de extensões ou habilidades instaladas pelo usuário geralmente estão fora dos limites de segurança, a menos que o relatório demonstre um desvio real do limite de privilégios ou mostre como pi concede acesso que o usuário local ainda não tinha.