权限 (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_loop和external_directory默认为"ask"。read默认允许,但.env相关文件默认被拒绝 (deny)。