组织与配置策略

适用于 OpenCode V2;核验日期:2026-11-12。

Policies 是不可交互的 allow/deny 控制,和每个代理可询问的 permissions 不同。它能禁用供应商或扩展,也能在工具权限通过后继续硬拒绝。策略不授予原本被权限拒绝的操作。

# 只允许指定提供商#

json
1{
2  "$schema": "https://opencode.ai/config.json",
3  "policies": [
4    { "action": "provider.use", "resource": "*", "effect": "deny" },
5    { "action": "provider.use", "resource": "anthropic", "effect": "allow" },
6    { "action": "tool.use", "resource": "shell:git push *", "effect": "deny" }
7  ]
8}

同一来源内最后匹配生效,没有匹配默认允许。* 和 ? 做整个值的通配匹配,没有“越具体优先”规则。无效语句会被丢弃并产生警告,所以配置 deny 后必须查看日志并测试。

# 支持的动作#

action控制对象
provider.use提供商 ID
tool.use权限动作与资源组成的 action:value
mcp.useMCP 服务器
skill.use技能
plugin.use插件
integration.connect / integration.use集成连接与使用
websearch.use搜索提供商

各动作的资源格式要按官方定义配置,不能把所有动作都当文件路径。tool.use 的 shell:git push * 也覆盖无参数的 git push;其 allow 只能解除更早的策略限制,不能覆盖代理 deny 或替代用户批准。

# 优先级与普通配置相反#

从高到低为:macOS 管理偏好、系统配置、Console 工作区、全局配置、直接项目配置、.opencode 项目配置。同类目录中外层高于内层。更广范围的策略后评估,因此仓库不能用局部 allow 覆盖全局 deny。

普通权限适合任务交互;强制组织规则应放在用户不能随意覆盖的管理配置。策略不是宿主 OS 隔离,也不能修复恶意插件内部未受检查的任意代码行为。

# 调试#

被禁止的提供商从目录消失;tool.use 拒绝返回配置策略阻止错误,不显示确认按钮。先核对当前连接的 Console 工作区、系统配置和全局文件,不要反复点 Allow always。持久批准不能绕过策略。

旧 experimental.policies 仍兼容,但新配置使用顶层 policies。V1 提供商白名单和黑名单迁移到 provider.use 规则。

# 官方来源#