多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

opencode 配置“除了 rm 全部允许“的权限方案

opencode 配置“除了 rm 全部允许“的权限方案 一、背景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”}}}要点说明“rm *” 使用通配符 *会自动覆盖 rm -rf、rm -r 等所有 rm 变体。“sudo rm *” 额外拦截带 sudo 提权的删除命令。规则顺序很重要“*”: “allow” 必须写在前面“rm *”: “ask” 写在后面因为最后一条匹配的规则生效。没写进 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_CONFIG1 opencode全局配置写错时直接编辑 ~/.config/opencode/opencode.jsonc 修复后再启动。七、参考官方配置 Schemahttps://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”}}}
返回列表