Español
Documentación
Políticas

Políticas

Controla qué recursos configurados puede usar OpenCode.

Las políticas controlan si OpenCode puede realizar una acción sobre un recurso con nombre. Esta función es experimental y se configura con el array experimental.policies en opencode.json.

Las políticas son independientes de los permisos. Los permisos controlan lo que las herramientas pueden hacer durante una sesión, mientras que las políticas controlan si OpenCode puede usar un recurso, como un proveedor de LLM.


Configuración

Cada declaración de política tiene tres campos:

  • effect - Puede ser "allow" o "deny".
  • action - La operación que se controla.
  • resource - El ID del recurso o el patrón con comodín al que aplica la declaración.

Por ejemplo, para denegar el uso del proveedor openai:

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

Un proveedor denegado por política no está disponible para la selección de modelos ni para su uso, incluso si tiene credenciales o está configurado correctamente.


Políticas Disponibles

Actualmente, OpenCode admite una acción de política:

AcciónRecursoDescripción
provider.useID de proveedor, como openaiPermite o deniega el uso de un proveedor de LLM.

En el futuro se podrían añadir más acciones de política.


Coincidencia

El campo resource admite coincidencia con comodines. Usa * para coincidir con cero o más caracteres y ? para coincidir con un carácter.

Por ejemplo:

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

Esto deniega proveedores como company-us y company-eu.


Orden de las Reglas

Cuando varias declaraciones coinciden, gana la última declaración que coincide. Coloca primero las reglas generales y después las excepciones más específicas.

Por ejemplo, para permitir solo Anthropic:

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

Si ninguna política coincide con un proveedor, su uso se permite de forma predeterminada.

Las políticas se pueden definir tanto en tu configuración global como en la del proyecto. Si las políticas de ambas ubicaciones coinciden con el mismo proveedor, tu política global tiene prioridad sobre la del proyecto. Esto evita que un repositorio vuelva a habilitar un proveedor que has denegado globalmente.


Listas de Proveedores

Usa políticas en lugar de las opciones anteriores disabled_providers y enabled_providers para controlar el acceso a los proveedores.

Para reemplazar disabled_providers:

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

Para reemplazar enabled_providers, deniega primero todos los proveedores y después permite los proveedores seleccionados:

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