Português
Documentação
Políticas

Políticas

Controle quais recursos configurados o OpenCode pode usar.

As políticas controlam se o OpenCode pode executar uma ação em um recurso nomeado. Este recurso é experimental e é configurado com o array experimental.policies no opencode.json.

As políticas são separadas das permissões. As permissões controlam o que as ferramentas podem fazer durante uma sessão, enquanto as políticas controlam se o OpenCode pode usar um recurso, como um provedor de LLM.


Configuração

Cada declaração de política tem três campos:

  • effect - "allow" ou "deny".
  • action - A operação que está sendo controlada.
  • resource - O ID do recurso ou o padrão wildcard ao qual a declaração se aplica.

Por exemplo, negar o uso do provedor openai:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "policies": [
      {
        "effect": "deny",
        "action": "provider.use",
        "resource": "openai"
      }
    ]
  }
}

Um provedor negado por política não fica disponível para seleção ou uso de modelo, mesmo que tenha credenciais ou esteja configurado corretamente.


Políticas Disponíveis

O OpenCode atualmente suporta uma ação de política:

AçãoRecursoDescrição
provider.useID do provedor, como openaiPermite ou nega o uso de um provedor de LLM.

Mais ações de política podem ser adicionadas no futuro.


Correspondência

O campo resource suporta correspondência por wildcard. Use * para corresponder a zero ou mais caracteres e ? para corresponder a um caractere.

Por exemplo:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "policies": [
      {
        "effect": "deny",
        "action": "provider.use",
        "resource": "company-*"
      }
    ]
  }
}

Isso nega provedores como company-us e company-eu.


Ordem das Regras

Quando várias declarações correspondem, a última declaração correspondente vence. Coloque as regras amplas primeiro e as exceções mais específicas depois delas.

Por exemplo, para permitir apenas a Anthropic:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "policies": [
      {
        "effect": "deny",
        "action": "provider.use",
        "resource": "*"
      },
      {
        "effect": "allow",
        "action": "provider.use",
        "resource": "anthropic"
      }
    ]
  }
}

Se nenhuma política corresponder a um provedor, o uso do provedor é permitido por padrão.

As políticas podem ser definidas tanto na sua config global quanto na config de projeto. Se as políticas de ambos os locais corresponderem ao mesmo provedor, sua política global tem prioridade sobre a política de projeto. Isso evita que um repositório reative um provedor que você negou globalmente.


Listas de Provedores

Use políticas em vez das configurações mais antigas disabled_providers e enabled_providers ao controlar o acesso a provedores.

Para substituir disabled_providers:

opencode.json
{
  "experimental": {
    "policies": [
      { "effect": "deny", "action": "provider.use", "resource": "openai" },
      { "effect": "deny", "action": "provider.use", "resource": "google" }
    ]
  }
}

Para substituir enabled_providers, negue todos os provedores primeiro e permita os provedores selecionados depois:

opencode.json
{
  "experimental": {
    "policies": [
      { "effect": "deny", "action": "provider.use", "resource": "*" },
      { "effect": "allow", "action": "provider.use", "resource": "anthropic" },
      { "effect": "allow", "action": "provider.use", "resource": "openai" }
    ]
  }
}