AREX Feed Article
OpenRouter 发布通过 MDM 部署 Ori 的指南:用策略关掉 API key 登录,会话仍留在开发机上
11 月 5 日 17:59 UTC(北京时间 11 月 6 日凌晨),OpenRouter 在 了一份新的 (实操指南),标题是「Deploy Coding Agents Across Your Company」。指南让企业用 MDM(mobile device management,移动设备管理)把 Ori Harness(OpenRouter 的命令行工具)和一份策略部署到每台开发机,策略只留 OIDC(OpenID Connect)登录一条路:工程师在终端运行 ori login --oidc,在浏览器里批准一次,再用 ori claude 或 ori codex 启动 agent(智能体),由 Ori Harness 把短期 access token(访问令牌)交给它。
帖文称,工程师从终端登录,「笔记本上没有长期 key 可供恶意包窃取」。同一份指南的 FAQ 给出了更具体的边界。FAQ 问的是「OIDC 登录是否会把笔记本上的所有凭据都移除」,回答以「不会」开头:Ori 仍会在机器上保留一个 OIDC 会话;在 Ori 发布包签名之前,能读取 home 目录的恶意包可以使用这个会话,直到它过期。指南称 access token 约 24 小时后过期。
策略关掉了 API key 的三个入口
指南开头写的是 coding agent 的凭据问题:Claude Code、Codex 这类工具通常靠一个存在每台笔记本配置文件里的 API key 运行,而这些 key 正是恶意 npm 和 PyPI 包要找的东西,每一把还得由 IT 分发、追踪、轮换。
指南给出的策略是七个设置,写在 JSON 的 env 对象里。前三个开关对应三个入口:ORI_DISABLE_OAUTH_LOGIN 关掉旧的浏览器登录,指南注明这种方式「会保存一个 API key」;ORI_DISABLE_API_KEY_LOGIN 关掉在 ori login 里粘贴 key;ORI_DISABLE_ENV_KEY_LOGIN 忽略环境变量里的 OPENROUTER_API_KEY。第四个 ORI_REQUIRE_LOGIN 拒绝任何不是 ori login 建立的凭据,包括导出的 key 和项目 .env 文件里的 key。
接下来的两项把 key 限定在组织与 workspace(工作区)内:ORI_REQUIRED_ORGANIZATION_ID 和 ORI_REQUIRED_WORKSPACE_ID 只接受本组织、本 workspace 的 key,Ori 在使用或保存之前会向 OpenRouter 查询 key 属于谁。ORI_ENABLED_HARNESSES 则限定能启动哪些 agent;设为 claude,codex 后,其它 launcher(启动器)会被隐藏并拒绝启动,包括后续版本新增的那些。
{ "env": { "ORI_DISABLE_OAUTH_LOGIN": "1", "ORI_DISABLE_API_KEY_LOGIN": "1", "ORI_DISABLE_ENV_KEY_LOGIN": "1", "ORI_REQUIRE_LOGIN": "1", "ORI_REQUIRED_ORGANIZATION_ID": "YOUR_OPENROUTER_ORGANIZATION_ID", "ORI_REQUIRED_WORKSPACE_ID": "YOUR_OPENROUTER_WORKSPACE_UUID", "ORI_ENABLED_HARNESSES": "claude,codex" }}这些设置之所以能优先于本机的其他配置,是因为 Ori 的配置有固定优先顺序:,其次是机器策略文件 /etc/ori/config.json(Windows 为 C:\ProgramData\ori\config.json),再往下依次是命令行 flag(参数)、环境变量、项目配置和用户目录配置。指南由此写道,工程师「无法从 shell、项目或 flag 放宽策略」。策略格式错误、自相矛盾或读不出来时,Ori 在修好之前不会使用任何 key。
执行这些设置的是 。它是一个命令行工具(CLI):ori claude、ori codex 等命令启动本机的 agent CLI,并把 OpenRouter 的凭据、模型目录和组织设置带进这次会话。OpenRouter 在 8 月 4 日的里介绍过这些命令;则把 Ori 描述为覆盖终端、Slack 和桌面的工具系列。
指南称,用 Ori 凭据发出的请求走组织,因此组织的 model allowlist(模型白名单)、provider(模型提供方)设置和 spend limit(消费上限)对所有请求生效。
先升到 0.16.0,再推策略
指南列了四项前置条件:OpenRouter 组织 ID(在 Settings > Preferences 的 Org ID 字段)、能写 macOS managed preferences 或往固定路径推文件的 MDM、每台机器上的 Ori 0.16.0 或更新版本,以及只在把请求锁到 US 或 EU 区域时才需要的 Business 或 Enterprise 套餐。指南的 FAQ 另外说明,OIDC 登录是 beta(测试版),对所有 OpenRouter 账号开放。
部署顺序是先装 Ori,再推策略。指南要求先部署 Ori 再推策略,因为旧版本不认识其中部分设置;它给出 ORI_DISABLE_UPDATES 与 ORI_MINIMUM_VERSION 两个设置来控制版本。macOS 走 com.openrouter.ori.plist 的 custom-settings payload(自定义设置载荷),Jamf、Kandji、Intune 或任何能写 managed preferences 的 MDM 都可以;Linux 推 /etc/ori/config.json;Windows 推 C:\ProgramData\ori\config.json。
推广分批进行:先给试点小组安装 Ori,但不带策略,再加策略,让试点成员用 OIDC 登录并逐个启动被允许的 agent,确认请求出现在正确的 workspace 下,再扩到全公司。回滚方法是取消 profile 分配、删掉试点留下的机器文件。验收时可以用三个命令检查:ori auth 显示账号、要求的组织和 workspace、当前 key 是否匹配,以及每个值由哪个管理员来源设定;在 key 符合策略时,ori auth --json 把 data.policyStatus 报为 compliant;ori doctor 列出被用户、项目或 shell 覆盖后忽略的设置。
指南称,这样没有人需要创建、分享或轮换 key;部署和配置 Ori 后,由 Ori 配置它启动的每个 agent。
macOS 上有一个需要单独处理的例外。如果机器上已经存在 per-user 的 com.openrouter.ori profile(配置描述文件),就普通设置而言,它会整体替换设备级(device-wide)的那份 profile;登录开关和允许的 agent 以 per-user 为准。指南要求删掉它,或把同样的设置合并进去。组织 ID、workspace ID 这类管理员专属设置不受这次替换影响,Ori 会从 per-user profile、device-wide profile 和机器策略文件分别读取再合并。
指南写明的四处限制
指南最后一节「What this doesn't cover」和 FAQ 把效果限定在四个方面。
关掉登录方式不会删除已经保存的 key。旧 key 在 OpenRouter 侧继续有效,直到有人在 OpenRouter 的密钥设置页删除它们;ori logout --all 只清理本机上的那一份。
策略覆盖的是 Ori 交给它所启动 agent 的凭据。工程师绕开 Ori 直接运行 claude、用自己的 Anthropic 账号,不在覆盖范围内。
窃取 access token 的人,或在当前这些未签名版本上从磁盘读到会话和 key 的人,可以用到它过期。撤销登录不会让已经签发的 token 失效。
个人机器上的工程师可以用指南提供的工程师提示词接入同一组织与 workspace,OpenRouter 服务端的设置仍然适用,设备策略不适用。
迁移步骤被写成一段给 agent 的提示词
OpenRouter 在同一条帖文的里补了一句「把它分享给你的 agent」,链接指向同一份指南。指南第五节给出的正是这段提示词:一段可以直接粘进 coding agent 的提示词,其中要求「不要打印、复制或粘贴 key 或 token」。
提示词让 agent 检查 ori --version,低于 0.16.0 时更新;运行 ori logout --all 清掉已保存的登录;运行 ori login --oidc 打开审批页;用 ori doctor 找出 shell 启动文件里的 OPENROUTER_API_KEY,在用户确认后执行 ori doctor --fix;最后用 ori auth 确认登录方式。它也要求 agent 提醒用户去 OpenRouter 的密钥设置页删除不再需要的 key,理由写着「从这台机器上删除,并不会删除它们」。
指南同时给了手动版本:ori logout --all、ori login --oidc,再按使用的 agent 运行 ori harness setup claude(Windows 上改为 ori claude)或 ori harness setup codex。
会话仍留在 home 目录的文件里
指南建议在 macOS 上暂缓开启 protected,直到 Ori 发布包完成签名。配置文档写明,不设置 ORI_CREDENTIAL_STORAGE 时,发布包签名之前 Ori 使用 file,OIDC 会话保存在 ~/.ori/auth/plaintext/ 下,挡不住任何能复制 home 目录的人。指南还提醒,签名之前在 macOS 上开 protected,每次 Ori 更新后系统都会要求 Keychain 密码,ori claude 下的 agent 工具可能失败。
对刚跑完 ori logout --all 和 ori login --oidc 的工程师,默认情况下,机器上留下的 OIDC 会话就存在这个目录的文件里。指南称当前这些版本尚未签名。