Skip to content
FunCoding

Search

Search docs, Skills and MCP

提供商策略

使用 experimental.policies 控制 provider.use,并注意全局优先及最后匹配规则。

This page has not been translated into English yet. The original Chinese version is shown below.

Policies 决定 OpenCode 是否可以对命名资源执行某个动作,与控制会话内工具的 permission 分开。目前只支持提供商使用动作 provider.use,配置位于 experimental.policies;这是实验性功能,可能变化。

策略结构

每条语句包含三个字段:

字段值
effectallow 或 deny
action当前支持 provider.use
resource提供商 ID 或通配符模式

被 policy 拒绝的提供商既不能用于模型选择,也不能用于实际模型调用,即使凭据与其他配置都正确。

构建允许列表

先拒绝全部,再允许特定提供商:

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

同一规则序列中最后匹配的语句生效。* 匹配零个或多个字符,? 匹配一个字符;例如 company-* 可匹配多个公司提供商 ID。没有任何匹配 policy 时,默认允许使用提供商。

全局 policy 优先于项目

全局和项目都可以配置 policies,但对同一提供商均匹配时,官方规定全局 policy 优先。这防止仓库重新开启用户在全局明确拒绝的提供商。

该行为与普通配置中的“项目覆盖全局”不同。读取配置优先级时应保留这个专门规则,不能把整个 policy 数组当成普通项目偏好来理解。

从旧列表迁移

官方建议使用 policies 代替旧 disabled_providers、enabled_providers 进行访问控制:禁止列表对应逐项 deny,允许列表对应先拒绝 * 再添加选定项的 allow。

Config 页仍保留旧键,说明同一提供商同时在两个列表时 disabled_providers 优先。本页不自行推断新 policies 与旧列表混用时所有冲突的先后关系;迁移时减少重复规则,并在实际环境检查最终可选模型及调用结果。