MVCODEDocsv2026.7 · devAbrir o app
Docs/Configuração e automação/Permissões

Allow. Ask.
Deny.

Toda ação do agente resolve para um de três verbos. A config permission decide o que roda sozinho, o que pede aprovação e o que é bloqueado — por ferramenta, por padrão, por agente.

Disponível agoraReferência /permissions1 min de leitura

01A forma básica

maxvision-code.jsonjson
{
  "permission": {
    "*": "ask",
    "bash": "allow",
    "edit": "deny"
  }
}

Ou tudo de uma vez: "permission": "allow". As chaves casam por curinga contra o nome real da ferramenta — o mesmo mecanismo cobre nativas, customizadas e MCP ("meumcp_*": "deny").

02Regras granulares

A maioria das permissões aceita um objeto padrão → ação. As regras avaliam em ordem e a última que casa vence — catch-all primeiro, específicas depois:

maxvision-code.jsonjson
{
  "permission": {
    "bash": {
      "*": "ask",
      "git *": "allow",
      "npm *": "allow",
      "rm *": "deny"
    },
    "edit": {
      "*": "deny",
      "docs/**/*.md": "allow"
    }
  }
}
  • * casa qualquer sequência; ? exatamente um caractere; o resto é literal.
  • bash casa contra o comando parseado — "grep *" permite grep padrão arquivo; "grep" sozinho bloquearia com argumentos.
  • ~ e $HOME no início do padrão expandem para a sua home.

03Chaves disponíveis

ChaveCasa contraGranular
readCaminho do arquivo lidosim
editCaminho — cobre edit, write e apply_patchsim
glob · grep · listPadrão de buscasim
bashComando parseado (git status --porcelain)sim
taskNome do subagente invocadosim
skillNome da skill carregadasim
external_directoryCaminho fora do worktree do projetosim
webfetch · websearchURL · consultashorthand
lsp · question · todowriteshorthand
doom_loopMesma tool call repetida 3× com input idênticoshorthand

04Defaults que protegem

Sem configuração, o MVCode parte de defaults permissivos com três exceções deliberadas:

  • external_directory e doom_loop nascem em ask.
  • read nasce em allow, mas arquivos .env são negados por padrão (*.env, *.env.*) — só *.env.example passa.

05Diretórios externos

Qualquer ferramenta que toque caminho fora do diretório de trabalho passa por external_directory. Um diretório permitido herda os defaults do workspace — restrinja por ferramenta quando quiser leitura sem escrita:

maxvision-code.jsonjson
{
  "permission": {
    "external_directory": { "~/projetos/pessoal/**": "allow" },
    "edit": { "~/projetos/pessoal/**": "deny" }
  }
}

Referências configuradas atravessam essa fronteira automaticamente — as permissões de ferramenta continuam valendo.

06O que o "ask" pergunta

O dock de permissão oferece três saídas:

RespostaEfeito
onceAprova só esta chamada.
alwaysAprova o padrão sugerido pela ferramenta (ex.: git status*) pelo resto da sessão.
rejectNega — o agente recebe a recusa como resultado e replaneja.

Pedidos pendentes também chegam como notificação no celular — decisão remota, mesma semântica.

07Por agente

Permissões de agente se mesclam com as globais, com precedência do agente — o build pode commitar com ask enquanto o global nega:

maxvision-code.jsonjson
{
  "permission": { "bash": { "*": "ask", "git push *": "deny" } },
  "agent": {
    "build": {
      "permission": { "bash": { "git commit *": "ask" } }
    }
  }
}

Para frotas, as mesmas regras podem vir de configuração gerenciada que o usuário não altera — veja policies.

Nota de versão

A config booleana tools foi mesclada em permission e está deprecada — segue aceita por compatibilidade (true{"*": "allow"}).