提供商策略
使用 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;这是实验性功能,可能变化。
策略结构
每条语句包含三个字段:
| 字段 | 值 |
|---|---|
effect | allow 或 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 与旧列表混用时所有冲突的先后关系;迁移时减少重复规则,并在实际环境检查最终可选模型及调用结果。