Open Interpreter 如何配置自定义权限配置文件实现文件与网络最小化授权?
2026/9/9 22:26:28 网站建设 项目流程

Open Interpreter 如何配置自定义权限配置文件实现文件与网络最小化授权?

【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter

如果你的 Open Interpreter(面向 Kimi K3、GLM 5.3 等开源模型的编码代理)会频繁执行本地命令,默认的workspace-write沙箱粒度不够细——比如无法单独禁掉.env文件、也无法把网络访问限制到少数几个域名。Open Interpreter 的权限配置文件(permission profiles)就是为此设计的:它比旧的sandbox_modesandbox_workspace_write设置更细粒度,可以在一个 profile 里分别声明文件系统的读/写/拒绝规则和域名网络白名单。本文的目标是:在~/.openinterpreter/config.toml(用户级)或项目内.openinterpreter/config.toml(受信任项目级)中定义一个自定义 profile,让代理的命令执行只具备完成任务所需的最小文件与网络权限,并验证配置实际生效。

先确认使用哪套授权系统

权限 profile 和旧的沙箱设置是两套机制,Permissions 文档 明确要求一次只启用一套:如果当前生效的配置里设置了sandbox_mode,或命令行传了--sandbox,旧的沙箱设置会优先,profile 不会生效。

内置的三个 profile 可以直接选用,不需要自定义:

Profile用途
:read-only只读本地命令执行
:workspace工作区根目录内可读写
:danger-full-access无本地沙箱限制

选择内置 profile 只需一行配置:

default_permissions = ":workspace"

当内置 profile 满足不了"文件级 + 域名级"的最小化要求时,才需要下面自定义 profile 的路径。

在配置文件中定义自定义 profile

权限 profile 是 TOML 配置,顶层用default_permissions指定 profile 名称,profile 的具体规则放在[permissions.<profile名>....]表下。文档给出的完整自定义示例如下(Permissions 原文示例,其中的路径与域名请替换成你自己的项目):

default_permissions = "project-edit" [permissions.project-edit.workspace_roots] "~/code/app" = true "~/code/shared-lib" = true [permissions.project-edit.filesystem] ":minimal" = "read" [permissions.project-edit.filesystem.":workspace_roots"] "." = "write" ".devcontainer" = "read" "**/*.env" = "deny" [permissions.project-edit.network] enabled = true [permissions.project-edit.network.domains] "api.openai.com" = "allow" "**.github.com" = "allow" "tracking.example.com" = "deny"

这个 profile 的效果是:通用运行时路径可读、工作区根目录内可写、.devcontainer/保持只读、.env文件被拒绝访问、网络流量限制到指定域名。

配置文件的两个位置(Configuration 文档):

~/.openinterpreter/config.toml
.openinterpreter/config.toml

其中项目级配置只应对受信任项目使用。配置优先级上,CLI 的-c key=value覆盖只作用于当次调用,用户配置、项目配置、profile 之间有固定优先级;Config Reference 也把default_permissions列为顶层键,并给出了一份更精简的权限表写法([permissions.<name>.filesystem][permissions.<name>.network])。

理解文件系统规则

[permissions.<name>.filesystem]下的取值只有三种(Permissions):

Access含义
read命令可以读取和列出文件
write命令可以读取、创建、更新、重命名、删除文件
deny命令无法读取或写入匹配的路径;deny 优先于更宽泛的授权

规则可以挂在以下根节点上:

Root含义
:minimal常用工具需要的运行时路径
:workspace_roots当前工作区根目录 + profile 中定义的根目录
:tmpdir当前临时目录
:root文件系统根目录,谨慎使用
/absolute/path具体绝对路径
~/path用户主目录下的路径

文档给出的建议:能用精确路径就用精确路径;**/*.env这类 deny glob 适合保护含密钥的文件。另外注意:在部分平台上,deny glob 可能需要设置glob_scan_max_depth来限制启动时的扫描深度,配置后如果启动行为异常可以对照这个说明检查。

配置网络最小授权

权限 profile 中网络访问默认是关闭的,需要显式开启:

[permissions.project-edit.network] enabled = true

然后再做域名级 allow/deny:

[permissions.project-edit.network.domains] "example.com" = "allow" "*.example.com" = "allow" "**.example.com" = "allow" "ads.example.com" = "deny"

域名模式有四种写法:

Pattern含义
example.com精确主机
*.example.com仅子域名
**.example.com顶层域和子域名
*大范围公开放行,文档要求刻意使用时才写

两个容易踩坑的边界:

  1. 本地与内网目标单独管控。域名白名单不覆盖本地地址,需要访问localhost127.0.0.1时,要显式写上这些字面目标。
  2. Unix socket 是本地逃生通道。例如需要 Docker 时:
[permissions.project-edit.network.unix_sockets] "/var/run/docker.sock" = "allow"

文档要求只有工作流确实依赖该本地服务时才加这条规则。

验证配置是否生效

两处 TUI 命令可以核对:

  • /permissions:查看或调整当前生效的授权姿态(Sandbox & Approvals);
  • /debug-config:打印解析后的最终配置及其来源(Configuration、Slash Commands),用来确认default_permissions指向了你的自定义 profile,而不是被更高优先级的配置层(如旧的sandbox_mode)覆盖。

如果/debug-config显示仍生效的是sandbox_mode,说明两套系统同时存在,按上一节的规则,先移除sandbox_mode(或去掉--sandbox参数)让 profile 接管。

适用范围与限制

权限 profile 只管辖本地沙箱化命令执行。App 连接器、MCP 服务器、browser/computer-use 界面、已批准的提权(approved escalations)和远程服务各有自己的控制体系,不在 profile 的管辖范围内(Permissions Scope 一节)。另外 profile 在 Config Reference 中被标记为 beta 功能,配置项以codex-rs/core/config.schema.json生成的 schema 为准。

如果当前场景只是粗粒度的"只读 / 工作区可写 / 完全放开",直接用sandbox_moderead-only/workspace-write/danger-full-access)更简单;只有需要文件级 deny 规则和域名白名单时,才值得切换到权限 profile 这套机制。

【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询