权限 (Permissions)

控制哪些操作需要运行许可
OpenCode 使用权限配置来决定给定的操作应当自动运行、向您提示、还是被阻止。

操作类型 (Actions)

每个权限规则解析为以下结果之一:
  • "allow" — 无需批准即可运行。
  • "ask" — 运行前提示用户批准。
  • "deny" — 阻止该操作。

配置方式 (Configuration)

您可以全局设置权限(使用 *),并覆盖特定工具。
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "*": "ask",
    "bash": "allow",
    "edit": "deny"
  }
}

细粒度规则 (对象语法)

对于大多数权限,您可以使用对象语法根据工具输入应用不同的操作。
{
  "permission": {
    "bash": {
      "*": "ask",
      "git *": "allow",
      "rm *": "deny"
    },
    "edit": {
      "*": "deny",
      "packages/web/src/content/docs/*.mdx": "allow"
    }
  }
}
注:规则按模式匹配评估,最后一个匹配的规则获胜。通常先放通配符 *,再放具体的规则。

可用权限项

权限按工具名称分类,包括:
  • read: 读取文件。
  • edit: 所有的文件修改操作(涵盖 edit, write, patch, multiedit)。
  • bash: 运行 shell 命令。
  • task: 启动子代理(Subagents)。
  • lsp: 运行 LSP 查询。
  • webfetch: 获取 URL 内容。
  • external_directory: 当工具触及项目工作目录外的路径时触发。
  • doom_loop: 当同一工具调用以完全相同的输入重复 3 次时触发。

默认值 (Defaults)

  • 大多数权限默认为 "allow"
  • doom_loopexternal_directory 默认为 "ask"
  • read 默认允许,但 .env 相关文件默认被拒绝 (deny)。