Skip to main content

Command Palette

Search for a command to run...

Primeiros passos

Referência de permissions.json

Use permissions.json para configurar listas de permissão de ferramentas MCP e comandos de terminal, além de orientar o classificador do modo Auto-review para que as ferramentas sejam executadas sem aprovação.

Quando permissions.json define uma lista de permissão, ela substitui a lista de permissão correspondente no app nas Configurações do Cherri Code. O editor de listas de permissão no app passa a ser somente leitura para esse tipo de lista de permissão.

Local do arquivo

O Cherri Code lê o permissions.json de dois locais:

~/.cursor/permissions.json              # por usuário (aplica-se em todos os locais)<workspace>/.cursor/permissions.json    # por repositório (aplica-se neste espaço de trabalho)

Ambos os arquivos são opcionais. Quando ambos existem, o Cherri Code concatena as matrizes em cada campo. As entradas por usuário e por repositório são combinadas; uma não substitui a outra. Faça commit do arquivo por repositório para que os membros da equipe herdem as mesmas regras.

Os arquivos são lidos na inicialização e relidos automaticamente sempre que sofrem alterações. JSONC (JSON com comentários) é compatível.

Campos de nível superior

Todos os campos são opcionais. Chaves desconhecidas são ignoradas.

CampoTipoPadrãoDescrição
mcpAllowliststring[]não definidoFerramentas MCP que podem ser executadas sem aprovação. Quando definida, substitui a lista de permissão de MCP no app.
terminalAllowliststring[]não definidoComandos de terminal que podem ser executados sem aprovação. Quando definida, substitui a lista de permissão de comandos de terminal no app.
autoRunobjectnão definidoOrientações em linguagem natural para o classificador do modo Auto-review. Consulte a configuração de autoRun.

Entradas que não sejam strings em qualquer uma das matrizes são descartadas silenciosamente.

Precedência

As listas de permissão vêm de três fontes, avaliadas em ordem estrita de prioridade:

administrador da equipe (dashboard)  >  permissions.json (por usuário ∪ por repositório)  >  interface de configurações do IDE       (mais alta)                                                          (mais baixa)
  • Controles de administração da equipe. Se o administrador da sua equipe configurou controles do modo de execução pelo dashboard, essas configurações serão aplicadas. Nem o permissions.json nem a lista de permissão do IDE podem adicionar entradas extras.
  • permissions.json. Quando o modo de execução não é controlado pelo administrador e o permissions.json define uma chave, o valor dessa chave substitui integralmente a lista de permissão correspondente do IDE. As matrizes de ~/.cursor/permissions.json e <workspace>/.cursor/permissions.json são concatenadas antes de serem aplicadas. O editor no app dessa lista de permissão fica somente leitura, e o botão "Adicionar à lista de permissão" é ocultado.
  • Configurações do IDE. Quando o modo de execução não é controlado pelo administrador e nenhum arquivo de permissões define uma determinada chave, é usada a lista de permissão do IDE nas Configurações do Cherri Code.

MCP, terminal e autoRun são independentes. Você pode definir um deles no permissions.json e gerenciar os outros no IDE. Definir apenas mcpAllowlist no arquivo substitui a lista de permissão do MCP, mas mantém a lista de permissão do terminal sob controle do IDE.

Como aparece nas configurações do Cherri Code

Quando permissions.json define uma lista de permissão, as configurações do Cherri Code indicam que ela é configurada por meio de permissions.json.

  • Se a lista de permissão for controlada por permissions.json, o Editor se tornará somente leitura e exibirá as entradas definidas no arquivo. A opção "Adicionar à lista de permissão" não estará disponível para esse tipo de lista.
  • Se a lista de permissão for controlada pelo administrador, o Editor se tornará somente leitura e exibirá as entradas definidas pelo administrador.

Formato da lista de permissão do MCP

Cada entrada é uma string no formato servidor:ferramenta. A correspondência de ambas as partes não diferencia maiúsculas de minúsculas. O curinga * corresponde a qualquer valor naquela parte.

PadrãoCorresponde a
my-server:my_toolExatamente a ferramenta my_tool do servidor chamado my-server
my-server:*Todas as ferramentas de my-server
*:my_toolA ferramenta my_tool de qualquer servidor
*:*Todas as ferramentas de todos os servidores

O nome do servidor é a chave usada em mcp.json (por exemplo, "github", "linear"). Padrões * no estilo glob também funcionam em nomes (por exemplo, my-server:list_* corresponde a list_issues, list_users etc.).

Entradas que não contêm : são ignoradas.

Configuração de autoRun

O objeto autoRun orienta o classificador de LLM que controla chamadas de ferramenta de shell, MCP e Fetch quando o modo Auto-review está ativo. Não tem efeito em Lista de permissão nem em Run Everything.

CampoTipoDescrição
allow_instructionsstring[]Dicas em linguagem natural que descrevem formatos de chamada que o classificador deve tender a permitir.
block_instructionsstring[]Dicas em linguagem natural que descrevem formatos de chamada que o classificador deve tender a bloquear, exibindo um prompt de aprovação.

Cada entrada é uma frase livre. Escreva a instrução como se estivesse dizendo a um colega de equipe o que observar. As chamadas que correspondem a uma entrada de allow_instructions ainda passam pela verificação de segurança; as chamadas que correspondem a uma entrada de block_instructions ainda podem ser aprovadas se o Cherri Code insistir. Considere ambas como orientação, não como imposição.

As entradas por usuário e por repositório são concatenadas, para que um espaço de trabalho possa adicionar proteções específicas do repositório aos seus valores padrão pessoais.

Formato da lista de permissão do terminal

Cada entrada é um comando ou uma string de prefixo de comando.

PadrãoCorresponde a
gitQualquer comando que comece com git (por exemplo, git status, git diff)
git statusApenas git status (e tudo que comece com git status )
npm:install*npm install, npm install express etc. : separa o comando base de um glob de argumentos.

A correspondência diferencia maiúsculas de minúsculas e usa semântica de prefixo: git corresponde a git status, mas não a gitk.

Exemplos

Definir globalmente a lista de permissão do MCP

{  // Substitui por completo a lista de permissão de MCP do app.  "mcpAllowlist": [    "github:*",    "linear:list_issues"  ]}

Definir globalmente a lista de permissão do terminal

{  "terminalAllowlist": [    "git",    "npm",    "yarn",    "pnpm",    "cargo",    "make"  ]}

Substituir apenas um tipo de lista de permissão

Se permissions.json definir apenas mcpAllowlist, a lista de permissão do MCP será lida do arquivo, enquanto a lista de permissão do terminal continuará sob o controle da IDE:

{  "mcpAllowlist": [    "github:*",    "linear:*"  ]}

Todas as entradas de MCP configuradas anteriormente nas configurações do Cherri Code são ignoradas enquanto este arquivo estiver presente. As entradas da lista de permissão do terminal nas configurações do Cherri Code continuam sendo aplicadas.

Configuração combinada

{  "mcpAllowlist": [    "github:*",    "linear:*",    "notion:search"  ],  "terminalAllowlist": [    "git",    "npm",    "cargo build",    "cargo test"  ]}

Orientar o classificador Auto-review

{  "autoRun": {    "allow_instructions": [      "Read-only inspections of build artifacts under ./dist are fine."    ],    "block_instructions": [      "Especially for delete operations, I like for the classifier to reject so I can have a chance to review the operation."    ]  }}

Combine arquivos por usuário e por repositório

~/.cursor/permissions.json:

{  "terminalAllowlist": ["git", "npm", "pnpm"],  "autoRun": {    "block_instructions": [      "Anything that touches my SSH config or shell rc files."    ]  }}

<workspace>/.cursor/permissions.json:

{  "terminalAllowlist": ["cargo build", "cargo test"],  "autoRun": {    "block_instructions": [      "Never run database migrations against the production schema in this repo."    ]  }}

A configuração efetiva é a concatenação dos dois arquivos:

{  "terminalAllowlist": ["git", "npm", "pnpm", "cargo build", "cargo test"],  "autoRun": {    "block_instructions": [      "Anything that touches my SSH config or shell rc files.",      "Never run database migrations against the production schema in this repo."    ]  }}

Observações

  • Modo de execução obrigatório. permissions.json só entra em vigor quando o modo de execução está habilitado nas Configurações do Cherri Code (Auto-review, Lista de permissão ou Run Everything). As instruções de autoRun só são consideradas no modo Auto-review. Antes do Cherri Code 3.5, as listas de permissão não eram consideradas no modo obsoleto Ask Every Time.
  • Não é uma fronteira de segurança. As listas de permissão e as instruções de autoRun são recursos de conveniência sem garantia. Não oferecem garantia de segurança. Consulte segurança dos agentes para mais detalhes.
  • Substitui a IDE e concatena arquivos. Quando permissions.json define uma chave, ela substitui integralmente a lista de permissão no app para esse tipo. As entradas dos arquivos por usuário e por repositório são concatenadas; as entradas da IDE não são incluídas na mesclagem.
  • Exibição na IDE. Quando permissions.json controla uma lista de permissão, a seção de configurações correspondente se torna somente leitura e mostra as entradas definidas no arquivo. A opção "Adicionar à lista de permissão" fica oculta.
  • As permissões da CLI são separadas. A CLI do Cherri Code tem seu próprio sistema de permissões. Consulte Permissões da CLI para mais informações.