opencode 配置“除了 rm 全部允许“的权限方案
2026/8/23 8:54:15 网站建设 项目流程

一、背景
opencode 每次执行工具(bash、edit、read 等)默认都会弹出确认,频繁确认很烦人。通过全局配置文件可以自定义权限规则,实现"常用操作自动放行,危险的 rm 命令单独确认"。
二、配置文件位置
opencode 配置支持两级作用域,全局配置对所有项目生效:
作用域 路径
项目级 ./opencode.json(项目根目录)
全局级 ~/.config/opencode/opencode.json 或 opencode.jsonc
配置在 opencode 启动时加载一次,修改后必须重启 opencode 才生效。
三、权限规则语法
permission 字段支持三种动作:

  • allow:直接放行,不询问
  • ask:每次执行前弹窗确认
  • deny:直接拒绝
    每个工具(edit、read、bash、glob、grep 等)可以配置独立的规则。bash 还可以按命令模式细分,规则对象按插入顺序匹配,最后一条匹配的规则生效,所以宽泛规则要放前面,精确规则放后面。
    四、配置内容:除了 rm 全部允许,rm 单独确认
    {
    “$schema”: “https://opencode.ai/config.json”,
    “permission”: {
    // 常用工具全部自动放行
    “read”: “allow”,
    “edit”: “allow”,
    “glob”: “allow”,
    “grep”: “allow”,
    “list”: “allow”,
    “task”: “allow”,
    “webfetch”: “allow”,
    “lsp”: “allow”,
    “skill”: “allow”,
    “bash”: {
    // 宽泛规则在前:所有命令放行
    “*”: “allow”,
    // 精确规则在后:rm 系列单独确认
    “rm *”: “ask”,
    “sudo rm *”: “ask”
    }
    }
    }
    要点说明:
  1. “rm *” 使用通配符 *,会自动覆盖 rm -rf、rm -r 等所有 rm 变体。
  2. “sudo rm *” 额外拦截带 sudo 提权的删除命令。
  3. 规则顺序很重要:“*”: “allow” 必须写在前面,“rm *”: “ask” 写在后面,因为最后一条匹配的规则生效。
  4. 没写进 permission 的工具默认是 ask(每次确认),所以想"全部允许"需要把常用工具显式写出来。
    五、其它实用变体
    变体一:rm 直接拒绝(更严格)
    “bash”: {
    “*”: “allow”,
    “rm *”: “deny”,
    “sudo rm": “deny”
    }
    变体二:只放行 git,其它全部确认
    “bash”: {
    “git": “allow”,
    "
    ”: “ask”
    }
    变体三:按 agent 单独配置
    {
    “agent”: {
    “build”: {
    “permission”: {
    “edit”: “deny”,
    “bash”: { "
    ”: “ask” }
    }
    }
    }
    }
    变体四:完全放行所有工具(不推荐)
    “permission”: “allow”
    注意:顶层字符串 “allow” 表示放行一切(含 rm),一般不建议。
    六、验证与排障
  • 修改配置后重启 opencode,在会话中让 AI 执行 rm xxx,应弹出确认框;执行 ls、git status 等应直接通过。
  • 如果配置写错导致 opencode 无法启动,可以用环境变量跳过项目配置排查:
    OPENCODE_DISABLE_PROJECT_CONFIG=1 opencode
  • 全局配置写错时,直接编辑 ~/.config/opencode/opencode.jsonc 修复后再启动。
    七、参考
  • 官方配置 Schema:https://opencode.ai/config.json
  • 建议在配置首行保留 “$schema”: “https://opencode.ai/config.json”,编辑器会自动补全和校验字段,避免手写出错。

允许读取一切文件:
{
“$schema”: “https://opencode.ai/config.json”,
“permission”: {
// 常用工具全部自动放行
“read”: “allow”,
“edit”: “allow”,
“glob”: “allow”,
“grep”: “allow”,
“list”: “allow”,
“task”: “allow”,
“webfetch”: “allow”,
“lsp”: “allow”,
“skill”: “allow”,
// 允许读取工作区以外的所有文件
“external_directory”: {
": “allow”
},
“bash”: {
// 宽泛规则在前:所有命令放行
"
”: “allow”,
// 精确规则在后:rm 系列单独确认
“rm *”: “ask”,
“sudo rm *”: “ask”
}
}
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询