O agente pediu confirmação pela vigésima vez para rodar npm run test, e você começou a apertar Enter sem ler. É exatamente aí que um rm errado passa. A saída não é desligar todas as confirmações: é dizer à Verboo Code, regra por regra, o que ela pode fazer sozinha, o que precisa perguntar e o que nunca pode fazer. Isso se faz com /permissions, e este guia mostra os comandos, a sintaxe das regras e onde cada uma fica salva.
O que o /permissions faz na Verboo Code?
Ele abre um painel para criar, ver e apagar regras de permissão das ferramentas do agente. Cada regra diz se uma ferramenta (ou um comando específico dela) é liberada sem perguntar, sempre perguntada ou sempre recusada.
O comando também atende pelo alias /allowed-tools. O painel tem cinco abas:
| Aba | O que faz |
|---|---|
| Recently denied | Lista comandos recusados recentemente pelo classificador do modo auto, com opção de aprovar ou tentar de novo |
| Allow | A Verboo Code não pergunta antes de usar essas ferramentas |
| Ask | A Verboo Code sempre pede confirmação antes de usar essas ferramentas |
| Deny | A Verboo Code sempre recusa usar essas ferramentas |
| Workspace | Diretórios extras, fora do projeto, que o agente pode acessar |
Como escrever uma regra de permissão?
Uma regra é o nome da ferramenta, opcionalmente seguido de um especificador entre parênteses. Sem parênteses, a regra vale para a ferramenta inteira.
| Regra | O que casa |
|---|---|
WebFetch | Qualquer uso da ferramenta WebFetch |
Bash | Qualquer comando de terminal |
Bash(npm run test:*) | Qualquer comando que comece com npm run test |
Bash(git status) | Exatamente o comando git status |
Read(**/.env) | Leitura de qualquer arquivo .env, em qualquer pasta |
WebFetch(domain:docs.python.org) | Requisições da WebFetch para esse domínio |
O :* no fim é o que transforma a regra de Bash em prefixo; o painel descreve assim: "Any Bash command starting with". Sem ele, a regra casa só o comando exato. Em regras de arquivo, como Read e Edit, o especificador segue o padrão do .gitignore, então ** atravessa pastas.
Se o comando tiver parênteses, escape com barra invertida: Bash(python -c "print\(1\)").
Como liberar um comando para o agente parar de perguntar?
Abra o painel, vá na aba Allow, escolha Add a new rule… e digite a regra:
/permissions
# aba Allow → Add a new rule… →
Bash(npm run test:*)
Depois de digitar a regra, a Verboo Code pergunta onde salvar. São três destinos:
| Opção no painel | Arquivo | Quando usar |
|---|---|---|
| Project settings (local) | .verboo/settings.local.json | Só você, só neste projeto |
| Project settings | .verboo/settings.json | Todo o time, versionado no git |
| User settings | ~/.verboo/settings.json | Você, em todos os projetos |
A regra também pode ir direto no arquivo, sem abrir o painel. O formato é este:
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(npm run lint:*)",
"Bash(git status)",
"Bash(git diff:*)"
],
"ask": [
"Bash(git push:*)"
],
"deny": [
"Read(**/.env)",
"Bash(rm -rf:*)"
]
}
}
Uma lista curta de allow para os comandos que você aprova sempre (testes, lint, leitura de git) já corta a maior parte das confirmações sem abrir mão de nada perigoso.
Como bloquear um arquivo ou comando de vez?
Coloque a regra na aba Deny. Deny é recusa automática: o agente recebe a negativa e não chega a te perguntar.
/permissions
# aba Deny → Add a new rule… →
Read(**/.env)
Uma regra de Read cobre a ferramenta de leitura de arquivos. Se você quer uma segunda camada no nível do sistema operacional, combine as regras com o sandbox da Verboo Code, que isola os comandos de terminal.
Regra que vem de configuração gerenciada pela empresa (managed settings) aparece no painel com o aviso de que não pode ser alterada. Nesse caso, só o administrador muda.
Por que a minha regra de allow não funciona?
Quase sempre porque existe um deny ou um ask que casa com o mesmo comando. A Verboo Code avalia nessa ordem: deny primeiro, depois ask, e só então allow. Um allow nunca vence um deny.
Três coisas para conferir:
- Regras de todos os arquivos entram na conta. Um deny no
~/.verboo/settings.jsonbloqueia mesmo que o.verboo/settings.jsondo projeto libere. - Deny vale até com
--dangerously-skip-permissions. No código, a checagem de deny roda antes da checagem do modo de permissão, então nem o modo que pula confirmações passa por cima dela. - Prefixo sem
:*é comando exato.Bash(npm run test)não liberanpm run test -- --watch.
O painel mostra de qual arquivo vem cada regra quando você seleciona ela na lista, o que resolve a maioria dos casos em segundos.
Dá para passar permissões pela linha de comando?
Sim, útil para uma sessão pontual ou para CI. As flags aceitam lista separada por vírgula ou espaço:
verboo --allowedTools "Bash(git:*) Edit" --disallowedTools "Bash(git push:*)"
Para mudar o comportamento geral, e não só regras soltas, use --permission-mode. Os modos disponíveis são default, plan, acceptEdits, bypassPermissions e dontAsk. O mesmo valor pode ficar fixo no settings:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
Como liberar acesso a uma pasta fora do projeto?
Na aba Workspace do /permissions, adicione o diretório. A Verboo Code pergunta se vale só para a sessão ou se deve ser salvo nas configurações locais do projeto. No arquivo, a chave é additionalDirectories:
{
"permissions": {
"additionalDirectories": ["../shared-lib"]
}
}
Com as regras certas, o agente roda testes e lint em sequência sem te chamar, e cada tentativa extra não pesa no bolso: a Verboo Code roda com tokens ilimitados.



