五、权限系统详解

五、权限系统详解

OpenCode 的权限系统控制 AI 可以访问哪些工具和资源。

权限模式

每个工具可以有三种权限模式:

  • allow:自动允许,不询问用户
  • deny:自动拒绝,不执行
  • ask:询问用户,由ǜ�用户决定

配置方式

在 opencode.json 中配置:

jsonc 复制代码
{
  "permission": {
    "read": "allow",
    "edit": "ask",
    "bash": "deny"
  }
}

支持 Glob 模式匹配:

jsonc 复制代码
{
  "tools": {
    "read": true,
    "edit": "ask",
    "bash*": false
  }
}

权限级别

权限按以下优先级评估(从高到低):

  1. Agent 级别:特定 Agent 的权限配置
  2. 工具级别:全局工具权限
  3. 默认级别:默认行为

Agent 级权限

可以为不同 Agent 设置不同的权限:

jsonc 复制代码
{
  "agent": {
    "code-reviewer": {
      "permission": {
        "read": "allow",
        "edit": "deny",
        "bash": "deny"
      }
    }
  }
}

这样,code-reviewer Agent 只能读取文件,无法修改或执行命令。

Skill 权限

也可以控制 AI 能够加载哪些 Skill:

jsonc 复制代码
{
  "permission": {
    "skill": {
      "*": "allow",
      "internal-*": "deny",
      "experimental-*": "ask"
    }
  }
}

实际案例

比如你想让一个 Agent 只读不写:

jsonc 复制代码
{
  "agent": {
    "reviewer": {
      "description": "代码审查专家,只读模式",
      "mode": "subagent",
      "permission": {
        "bash": "deny",
        "edit": "deny",
        "write": "deny",
        "read": "allow"
      }
    }
  }
}

权限提示与日志

当权限被拒绝时,OpenCode 会记录日志:

复制代码
Tool "bash" was blocked by permission settings.
Allowed tools: read, glob, grep

安全建议

  1. 最小权限原则:只给 AI 必要的权限
  2. 分层管理:不同 Agent 给不同权限
  3. 定期审查:定期检查权限配置是否合理
  4. 注意布尔值:老版本使用 true/false,新版本用 allow/deny/ask

例如,生产环境中可以这样配置:

jsonc 复制代码
{
  "permission": {
    "read": "allow",
    "glob": "allow",
    "grep": "allow",
    "edit": "ask",
    "write": "ask",
    "bash": "deny",
    "webfetch": "allow"
  }
}

这样配置能在保证安全的同时,让 AI 发挥最大效率。

总结

权限系统是 OpenCode 安全性的基石。通过本文你学会了:

  • 三种权限模式:allow/deny/ask
  • 权限的分级配置:全局、工具、Agent
  • 安全配置建议和实践案例

下一篇文章将介绍如何通过 MCP 协议为 OpenCode 添加外部工具能力。

相关推荐
李溪白1 小时前
篇四:tasks.md —— 把蓝图拆成 AI 可执行的施工单
ai编程
AI入职记1 小时前
Spring AI 结构化输出:结构 100% 通过,严格准确率只有 57%
后端·ai编程
AI狂想1 小时前
给编程 Agent 一份跟着仓库走的记忆
ai编程
程语AI1 小时前
RAG 查询扩展实战:HyDE 与多 query 改写怎么选、怎么组合
ai编程
ServBay3 小时前
Claude Fable 5.5 测试曝光,但它在悄悄给你打分
后端·ai编程·claude
孟健3 小时前
Claude Code 同需求写两版对比:装不装 frontend-design 差多远?
前端·ai编程·claude
OpsEye4 小时前
大模型 Token 计量不准,是什么原因,怎么解决??
javascript·ai编程
西安小哥5 小时前
把 200K 上下文跑满之后,我给编码智能体立了四条规矩
aigc·ai编程
西安小哥5 小时前
让大模型稳定输出 JSON,我换了三次方案,最后败给一个土办法
ai编程