Pular para o conteúdo
Docs de V1
Configuração

Políticas

As políticas controlam se o OpenCode pode executar uma ação em um recurso nomeado. Esta funcionalidade do OpenCode 2 é experimental e é configurada 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.


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 padrão com coringas ao qual a declaração se aplica.

Por exemplo, para 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 uma política não fica disponível para seleção nem uso de modelos, mesmo que tenha credenciais ou esteja configurado corretamente.


Atualmente, o OpenCode oferece suporte a uma ação de política:

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

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


O campo resource oferece suporte a correspondência com coringas. Use * para corresponder a zero ou mais caracteres e ? para corresponder a um caractere.

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.


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

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 configuração global quanto na configuração do projeto. Se políticas dos dois locais corresponderem ao mesmo provedor, a política global tem prioridade sobre a política do projeto. Isso impede que um repositório reative um provedor que você negou globalmente.


No OpenCode 2, use políticas em vez das configurações mais antigas disabled_providers e enabled_providers para controlar o acesso a provedores. No OpenCode 1, continue usando essas listas de 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 primeiro todos os provedores e permita os provedores selecionados em seguida:

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