📚AI 编程官方教程中文版
官方教程中文版安全与网络

管理权限

基于官方 OpenCode Permissions 教程,面向新手讲清 allow、ask、deny、外部目录和 Agent 级权限边界。

权限配置是 OpenCode 新手最应该认真理解的一页。它决定模型能不能读文件、改文件、跑命令、访问外部目录或调用子代理。

官方教程列出了完整字段和对象语法。这里重点讲:新手应该从什么安全基线开始,遇到审批弹窗怎么判断,以及为什么不要直接全部放开。

先理解:权限解决什么问题

AI 编程工具的能力越强,越需要边界。OpenCode 权限系统把动作分成三类:allow 直接允许,ask 执行前询问,deny 直接拒绝。

新手的目标不是把所有弹窗关掉,而是让高风险动作必须经过确认,让低风险动作不要打断工作流。

怎么判断新手基线

读文件、搜索、查看项目结构,可以先允许。它们通常是理解项目所必需的低风险动作。

改文件、跑命令、访问网页,先设置为 ask。等你知道 OpenCode 通常会运行哪些命令、会改哪些文件,再逐步放开高频安全动作。

删除文件、访问敏感外部目录、运行危险 shell,一开始应该拒绝或至少 ask。

真实项目里不要依赖默认值。OpenCode 默认相对宽松,.env 等敏感文件会有保护,但你仍然应该显式写出项目权限边界。

不要一开始全部 allow

官方支持把权限整体设为 allow,但这不是新手默认选择。全部允许意味着模型可以在没有确认的情况下执行大部分动作。

个人玩具仓库可以临时用;真实项目、公开仓库、生产代码、包含凭据的目录,不建议这样开。

更稳的做法是:先 ask,观察一段时间,再把你完全看懂且高频安全的动作改成 allow。

细粒度规则怎么理解

bash 可以做细粒度规则。常见做法是先让所有命令 ask,再明确允许 git statusgit diff 这类只读命令,明确拒绝删除类命令。

不要只写一个宽泛的 git。带参数的命令通常需要更具体的匹配。你要允许的是“这个具体动作”,不是“这个工具的一切能力”。

外部目录要单独批准

OpenCode 默认工作在启动目录内。访问工作目录外的路径时,会触发 external_directory

能访问不等于能编辑。你可以允许读取某个外部目录,同时拒绝编辑这个目录。这个区分很重要,尤其是当你把个人资料、其他项目或凭据目录放在工作区外时。

新手不要为了省事允许整个 home 目录。允许范围越大,模型误读或误改的成本越高。

Ask 弹窗怎么判断

看到审批时,默认选一次性批准。只有你完全理解这个动作、安全性和后果时,才选择后续同类动作都批准。

如果你看不懂命令,不要批准。让模型解释它要做什么、为什么需要、会影响哪些文件,再决定。

如果请求访问外部目录,先问清它为什么不能在当前工作区完成。

和 Agent 配合

权限可以按 Agent 覆盖。审查 Agent 应该只读;执行 Agent 才允许改文件;联网研究 Agent 可以访问 web,但不一定能 edit。

这比在提示词里写“不要修改文件”更可靠。提示词会被上下文影响,权限配置不会因为模型理解偏差而失效。

新手常见坑

  • 为了省弹窗直接全开 allow。
  • 只限制 bash,忘记 edit 也能改文件。
  • 允许外部目录后忘记限制编辑权限。
  • 把宽泛命令当安全命令,例如允许所有 git * 后又忘了 git 也能改状态。
  • 只靠 Agent 提示词约束行为,没有配权限。
  • 看不懂审批内容却点 always。

怎么验收

让 OpenCode 读一个普通文件,应该不打断。

让它改一个文件,应该出现审批或按规则拒绝。

让它运行只读命令,应该符合你的 bash 规则。

让它访问工作区外路径,应该触发 external directory 规则。

让审查 Agent 尝试改文件,应该被拒绝。

官方资料

On this page