Richtlinien
Richtlinien legen fest, ob OpenCode eine Aktion auf einer benannten Ressource ausführen darf. Diese Funktion von OpenCode 2 ist experimentell und wird über das Array experimental.policies in opencode.json konfiguriert.
Richtlinien sind von Berechtigungen getrennt. Berechtigungen steuern, was Tools während einer Sitzung tun dürfen, während Richtlinien steuern, ob OpenCode eine Ressource wie einen LLM-Anbieter verwenden darf.
Jede Richtlinienanweisung hat drei Felder:
effect- Entweder"allow"oder"deny".action- Der Vorgang, der gesteuert wird.resource- Die Ressourcen-ID oder das Platzhaltermuster, auf das sich die Anweisung bezieht.
Verweigern Sie beispielsweise die Verwendung des Anbieters openai:
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "openai"
}
]
}
}Ein durch eine Richtlinie verweigerter Anbieter steht weder für die Modellauswahl noch für die Modellnutzung zur Verfügung, selbst wenn Anmeldeinformationen vorhanden sind oder er ansonsten korrekt konfiguriert ist.
OpenCode unterstützt derzeit eine Richtlinienaktion:
| Aktion | Ressource | Beschreibung |
|---|---|---|
provider.use | Anbieter-ID, z. B. openai | Die Verwendung eines LLM-Anbieters erlauben oder verweigern. |
Weitere Richtlinienaktionen können künftig hinzukommen.
Das Feld resource unterstützt Platzhalterabgleich. Verwenden Sie * für null oder mehr beliebige Zeichen und ? für genau ein Zeichen.
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "company-*"
}
]
}
}Damit werden Anbieter wie company-us und company-eu verweigert.
Wenn mehrere Anweisungen übereinstimmen, gewinnt die letzte übereinstimmende Anweisung. Platzieren Sie allgemeine Regeln zuerst und spezifischere Ausnahmen danach.
Erlauben Sie beispielsweise nur Anthropic:
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "*"
},
{
"effect": "allow",
"action": "provider.use",
"resource": "anthropic"
}
]
}
}Wenn keine Richtlinie auf einen Anbieter zutrifft, ist seine Verwendung standardmäßig erlaubt.
Richtlinien können sowohl in Ihrer globalen Konfiguration als auch in der Projektkonfiguration festgelegt werden. Wenn Richtlinien aus beiden Orten auf denselben Anbieter zutreffen, hat Ihre globale Richtlinie Vorrang vor der Projektrichtlinie. So kann ein Repository keinen Anbieter wieder aktivieren, den Sie global verweigern.
Verwenden Sie in OpenCode 2 Richtlinien statt der älteren Einstellungen disabled_providers und enabled_providers, um den Zugriff auf Anbieter zu steuern. In OpenCode 1 verwenden Sie weiterhin diese Anbieterlisten.
So ersetzen Sie disabled_providers:
{
"experimental": {
"policies": [
{ "effect": "deny", "action": "provider.use", "resource": "openai" },
{ "effect": "deny", "action": "provider.use", "resource": "google" }
]
}
}Um enabled_providers zu ersetzen, verweigern Sie zuerst alle Anbieter und erlauben danach die ausgewählten Anbieter:
{
"experimental": {
"policies": [
{ "effect": "deny", "action": "provider.use", "resource": "*" },
{ "effect": "allow", "action": "provider.use", "resource": "anthropic" },
{ "effect": "allow", "action": "provider.use", "resource": "openai" }
]
}
}