Segurança

Pastas confiáveis

Controla quais os projetos que podem usar as capacidades completas do Bob Shell com a segurança de pastas confiáveis.

As pastas confiáveis dão-te controlo sobre quais os projetos que podem ser usados com o Bob Shell. Tens de aprovar uma pasta antes de o Bob Shell carregar quaisquer configurações específicas do projeto, protegendo-te de código potencialmente malicioso.

Nota:

A funcionalidade de pastas confiáveis está desativada por predefinição. Para a ativar, abre o menu /settings e define Folder Trust como true. É necessário reiniciar para que a alteração tenha efeito.

Como funcionam as pastas confiáveis

Quando executas o Bob Shell a partir de uma pasta pela primeira vez, aparece automaticamente um diálogo de confiança, pedindo-te que faças uma escolha:

  • Confiar na pasta: Conceder confiança total à pasta atual (por exemplo, o-meu-projeto)
  • Confiar na pasta pai: Conceder confiança ao diretório pai (por exemplo, projetos-seguros), o que automaticamente confia em todos os seus subdiretórios. Usa esta opção se mantiveres todos os teus projetos seguros numa localização
  • Não confiar: Marcar a pasta como não confiável. O Bob Shell opera em modo seguro restrito

A tua escolha é guardada em ~/.bob/trustedFolders.json, pelo que só és questionado uma vez por pasta.

Níveis de confiança

O ficheiro ~/.bob/trustedFolders.json armazena uma entrada de confiança por pasta. Cada entrada utiliza um de três níveis de confiança:

Nível de confiançaEfeito
TRUST_FOLDERConcede confiança total ao caminho exato da pasta. As definições do projeto, hooks, modos, skills e servidores MCP carregam normalmente.
TRUST_PARENTConcede confiança total ao diretório especificado e a todos os subdiretórios abaixo dele. Usa este nível para cobrir um workspace root que contém múltiplos repositórios.
DONT_TRUSTMarca a pasta como não confiável. O Bob Shell é executado em modo seguro restrito e bloqueia todas as configurações específicas do projeto. Consulta Impacto das pastas não confiáveis.

As pastas sem entrada em ~/.bob/trustedFolders.json são designadas não resolvidas. A forma como o Bob Shell trata as pastas não resolvidas depende de a funcionalidade de pastas confiáveis estar ou não ativada. Consulta Sessões não interativas para mais detalhes.

Impacto das pastas não confiáveis

Quando uma pasta não é confiável, o Bob Shell opera em modo seguro restrito. As seguintes funcionalidades são desativadas ou ignoradas:

FuncionalidadeComportamento em modo seguro
Definições do projeto.bob/settings.json não é carregado. Ferramentas personalizadas e configurações potencialmente perigosas são bloqueadas.
Aprovação automática de ferramentasSer-te-á sempre pedida confirmação antes de qualquer ferramenta ser executada, mesmo que tenhas a aprovação automática ativada globalmente.
Servidores MCPO Bob Shell não tentará ligar-se a qualquer servidor MCP.
Modos personalizadosOs modos definidos na pasta do projeto não estão disponíveis. Só podem ser usados os modos integrados e os teus modos definidos globalmente.
SkillsOs skills incluídos no projeto não são carregados. Só ficam ativos os skills disponíveis globalmente e as capacidades integradas.
SubagentsOs subagents personalizados da pasta do projeto não estão disponíveis. O agente não pode delegar trabalho em ajudantes fornecidos pelo projeto.
Instruções do projetoFicheiros de orientação como AGENTS.md e regras personalizadas do projeto não são lidos. O agente funciona sem as instruções personalizadas do projeto.

Conceder confiança a uma pasta desbloqueia a funcionalidade completa do Bob Shell para essa área de trabalho.

Gerir definições de confiança

Como a confiança é resolvida
O Bob Shell verifica ~/.bob/trustedFolders.json para ver se já existe uma decisão para a pasta atual.
Alterar a confiança da pasta atual
Executa o comando de barra /permissions dentro do Bob Shell. O diálogo interativo aparece, permitindo-te alterar o nível de confiança para a pasta atual.
Ver todas as regras de confiança
Inspeciona ~/.bob/trustedFolders.json no teu diretório pessoal para veres uma lista completa de todas as tuas regras de pastas confiáveis e não confiáveis.

Sessões não interativas

Ao contrário do modo interativo, as sessões não interativas (bob run) nunca mostram o diálogo de confiança. O Bob Shell opera silenciosamente com base em decisões de confiança pré-existentes.

Comportamento predefinido quando a funcionalidade está desativada

Quando a funcionalidade de pastas confiáveis está desativada (predefinição), o Bob Shell trata todas as pastas como confiáveis. As definições do projeto, hooks, modos, skills e servidores MCP carregam para todas as pastas sem restrições, independentemente de existir uma entrada em ~/.bob/trustedFolders.json.

Comportamento quando a funcionalidade está ativada

Quando a funcionalidade de pastas confiáveis está ativada, o Bob Shell avalia o nível de confiança da pasta de trabalho antes de carregar qualquer conteúdo específico do projeto:

  • Pasta não resolvida (sem entrada em ~/.bob/trustedFolders.json): A pasta é tratada como confiável. As definições do projeto e os hooks carregam normalmente.
  • Entrada TRUST_FOLDER ou TRUST_PARENT: A pasta é confiável. Toda a funcionalidade está disponível.
  • Entrada DONT_TRUST: O Bob Shell gera um erro e não é executado:
    <folder> is not a trusted folder. Pass --trust to run in this folder,
    or run Bob Shell interactively and choose a trust level.
Importante:

Ativar a funcionalidade de pastas confiáveis por si só não bloqueia a execução de hooks para pastas sem decisão de confiança. Uma pasta não resolvida — por exemplo, um repositório clonado pela primeira vez num pipeline CI/CD — é tratada como confiável. Só uma entrada explícita DONT_TRUST impede que hooks e definições do projeto sejam carregados.

Execução de hooks em modo headless

Os hooks globais definidos em ~/.bob/settings/settings.json executam para todas as pastas que não estejam explicitamente marcadas como DONT_TRUST, incluindo pastas não resolvidas. Os hooks de workspace definidos em .bob/settings.json dentro do projeto também estão sujeitos à confiança de pastas: carregam apenas quando a pasta é confiável ou não resolvida, e são silenciosamente ignorados quando a pasta tem a marca DONT_TRUST.

Para perceber quais hooks estão configurados e o que fazem antes de executares bob run num repositório desconhecido, consulta Lifecycle hooks.

Comportamento das flags por modo

As flags --trust e --auto-approve comportam-se de forma diferente consoante a forma como o Bob Shell é iniciado. Seleciona o teu modo para veres o comportamento relevante:

--trust
A pasta é guardada como confiável de forma persistente. O Bob Shell escreve uma entrada de confiança para o diretório atual em ~/.bob/trustedFolders.json e ignora o diálogo de confiança no primeiro acesso. Isto equivale a abrir a pasta e selecionar manualmente "Confiar na pasta".
--auto-approve
A aprovação automática é silenciosamente suprimida numa pasta não confiável. Continuarás a receber pedidos de confirmação antes de cada execução de ferramenta.
--trust
A pasta é tratada como confiável apenas nessa execução. A decisão de confiança não é guardada e nada é escrito no armazenamento de confiança.

Proteção de pipelines de automação

Se executares bob run num pipeline CI/CD contra repositórios que não controlas — por exemplo, repositórios de terceiros ou open source clonados como parte de uma compilação — segue os passos abaixo para impedir que código hook não confiável seja executado.

Antes de começares: Ativa a funcionalidade de pastas confiáveis definindo security.folderTrust.enabled como true em ~/.bob/settings/settings.json. É necessário reiniciar para que a alteração tenha efeito.

  1. Decide quais os diretórios que controlas e adiciona uma entrada TRUST_PARENT em ~/.bob/trustedFolders.json para cada um. Isto cobre todos os repositórios abaixo de uma raiz de workspace conhecida e deixa tudo fora dessa árvore como não resolvido.
    {
      "/home/runner/work/my-org": "TRUST_PARENT"
    }
  2. Para qualquer repositório que clones de uma fonte externa ou não confiável, adiciona uma entrada DONT_TRUST antes de executares bob run:
    {
      "/home/runner/work/my-org": "TRUST_PARENT",
      "/home/runner/work/third-party-repo": "DONT_TRUST"
    }
  3. Revê os hooks globais configurados em ~/.bob/settings/settings.json. Os hooks globais executam para todas as pastas confiáveis ou não resolvidas, incluindo todos os repositórios cobertos por uma entrada TRUST_PARENT. Remove ou limita os hooks que não devem ser executados em código não confiável.
  4. Antes de executares bob run num repositório clonado, revê .bob/settings.json dentro desse repositório em busca de hooks de workspace, tal como reveries um Makefile ou um ficheiro de configuração CI. Os hooks de workspace carregam em qualquer pasta confiável ou não resolvida.

Após concluir estes passos, o Bob Shell bloqueia as definições do projeto e os hooks para qualquer pasta com uma entrada DONT_TRUST, enquanto permite que bob run continue a funcionar normalmente no teu workspace controlado.

Melhores práticas

  • Confia apenas em pastas que contenham código que tu próprio reviste ou criaste
  • Usa TRUST_PARENT para diretórios que contêm múltiplos projetos seguros para evitar gerir entradas de pastas individuais
  • Revê regularmente ~/.bob/trustedFolders.json para auditar quais pastas são confiáveis
  • Quando trabalhares com código desconhecido, adiciona uma entrada DONT_TRUST para o diretório clonado antes de executares bob run
  • Revê os hooks globais em ~/.bob/settings/settings.json periodicamente — executam em todas as pastas confiáveis e não resolvidas
Como está este tópico?