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.
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ça | Efeito |
|---|---|
TRUST_FOLDER | Concede confiança total ao caminho exato da pasta. As definições do projeto, hooks, modos, skills e servidores MCP carregam normalmente. |
TRUST_PARENT | Concede 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_TRUST | Marca 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:
| Funcionalidade | Comportamento 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 ferramentas | Ser-te-á sempre pedida confirmação antes de qualquer ferramenta ser executada, mesmo que tenhas a aprovação automática ativada globalmente. |
| Servidores MCP | O Bob Shell não tentará ligar-se a qualquer servidor MCP. |
| Modos personalizados | Os 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. |
| Skills | Os skills incluídos no projeto não são carregados. Só ficam ativos os skills disponíveis globalmente e as capacidades integradas. |
| Subagents | Os 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 projeto | Ficheiros 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.jsonpara ver se já existe uma decisão para a pasta atual. - Alterar a confiança da pasta atual
- Executa o comando de barra
/permissionsdentro 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.jsonno 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_FOLDERouTRUST_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.
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.jsone 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.
- Decide quais os diretórios que controlas e adiciona uma entrada
TRUST_PARENTem~/.bob/trustedFolders.jsonpara 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" } - Para qualquer repositório que clones de uma fonte externa ou não confiável, adiciona uma entrada
DONT_TRUSTantes de executaresbob run:{ "/home/runner/work/my-org": "TRUST_PARENT", "/home/runner/work/third-party-repo": "DONT_TRUST" } - 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 entradaTRUST_PARENT. Remove ou limita os hooks que não devem ser executados em código não confiável. - Antes de executares
bob runnum repositório clonado, revê.bob/settings.jsondentro desse repositório em busca de hooks de workspace, tal como reveries umMakefileou 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_PARENTpara diretórios que contêm múltiplos projetos seguros para evitar gerir entradas de pastas individuais - Revê regularmente
~/.bob/trustedFolders.jsonpara auditar quais pastas são confiáveis - Quando trabalhares com código desconhecido, adiciona uma entrada
DONT_TRUSTpara o diretório clonado antes de executaresbob run - Revê os hooks globais em
~/.bob/settings/settings.jsonperiodicamente — executam em todas as pastas confiáveis e não resolvidas