OpenRig安全实践指南:hooks写入风险评估与8个文件备份清单
【免费下载链接】openrigBuild your own network of agents from Claude Code, Codex and Pi: persistent teams with roles, shared context and owned work.项目地址: https://gitcode.com/GitHub_Trending/op/openrig
OpenRig 是一款开源的多智能体编排工具,它把 Claude Code、Codex 等 AI 编码代理组织成一支持久化团队。启动 rig 时,OpenRig 会自动写入 provider hooks、工作区信任设置和实例状态文件——这也是新手最该关注的安全边界。本文带你完成一次完整的 hooks 写入风险评估,并给出一份可直接照做的文件备份清单,帮你在安全的前提下跑起自己的智能体网络。
一、OpenRig 会在你的机器上写什么
在评估风险之前,先搞清楚"谁写了什么"。官方 README.md 中的 "What OpenRig changes on your machine" 一节给出了完整清单,可以归纳为三类:
| 类别 | 典型写入 | 触发时机 |
|---|---|---|
| 🔑 信任设置 | ~/.claude.json、Codex 的 workspace 信任记录 | 托管启动(managed startup) |
| 🪝 可执行 hooks | Claude 的活动 hooks、Codex 的[hooks]配置块 | 守护进程启动、座位(seat)启动 |
| 📦 实例状态 | ~/.openrig/数据库、技能种子、tmux 配置块 | rig setup、守护进程启动 |
⚠️ 官方特别提醒:受管的 hook 块只管理 OpenRig 自己的条目、会保留你无关的 hooks,但信任条目、Claude 已有的 status-line 命令可能被替换;部分写入器会把读不懂的配置文件恢复成空对象——这不是完整的回滚保证。所以第一原则很简单:先备份,再启动。
二、hooks 写入风险评估:两个运行时的写入点
2.1 Claude Code 端:.claude/settings.local.json与工作区文件
Claude 侧的写入集中在两个层面:
- 全局层:托管启动会向
~/.claude.json写入工作区信任与 onboarding 完成状态;守护进程启动还会向~/.claude/skills与~/.agents/skills种子注入openrig-skills发现技能(尊重已有版本归属)。 - 工作区层:
.claude/settings.local.json会接收上下文收集器的statusLine命令和选定的活动 hooks;辅助脚本放在工作区的.openrig/目录下。若你在规格中选择了 MCP 资源,.mcp.json和共享设置(如permissions.defaultMode)也可能被修改。
相关逻辑的源码入口在 claude-code-adapter.ts 与 claude-activity-hooks.ts,后者是"哪些活动事件会被注入"的唯一事实来源——写入前会先校验中继资产是否存在,资产缺失时直接跳过并告警,绝不写入无法投递的 hook。
2.2 Codex 端:~/.codex/config.toml的 4 个 hooks 与信任哈希
Codex 侧的行为在 codex-runtime-adapter.ts 中,要点有三个:
- 幂等写入
[hooks]配置块:把 4 个 OpenRig 活动事件(含SessionStart)写入~/.codex/config.toml内联配置,并固定[features].hooks = true; - 预写信任哈希:为恰好这 4 个自研 hook 预写
[hooks.state.<key>].trusted_hash,让 hook 免手动确认即可生效——信任只精确绑定 OpenRig 自己写的那 4 条命令,而不是对整个配置做"一键信任"; - 工作区信任:座位启动时为工作区写入
trust_level = "trusted",并对.git和 pod 共享队列目录授予可写访问。
2.3 风险点速评
| 风险点 | 影响 | 缓解措施 |
|---|---|---|
| 活动 hook 向本地守护进程回传事件 | 泄露面有限:载荷只含事件类型、座位/运行时身份、时间戳与会话标识,不含提示词正文和工具参数 | 守护进程只监听本机;关闭则用runtime.codex.hooks_enabled false |
| 配置文件被部分覆盖 | 读不懂的旧配置可能被恢复为空对象 | 启动前备份(见下节清单) |
| 工作区被预信任 | 该目录内 Codex 操作少一道确认 | 在专属项目目录中运行 rig,避免混用 |
| 权限放行过宽 | agent 反复弹权限询问 | 明确选择放行范围,或保持每次询问;YOLO 默认关闭 |
💡 一个好消息:YOLO(完全绕过权限)在 OpenRig 中默认关闭,只有你显式选择 full-bypass 策略才会启用。权限策略本身可用rig policy permissions list|show|current|apply检查与配置,逐座位调整走rig seat set-permissions <seat> --mode <mode> --reason <text>,每次变更都留有审计理由。
三、文件备份清单:首次运行前照抄的 8 项
这是本文最实用的一张表。在第一次执行rig up之前,把这 8 项备份走:
| # | 文件 / 目录 | 写入者 | 为什么要备份 |
|---|---|---|---|
| 1 | ~/.claude.json | 托管启动 | Claude 信任与 onboarding 状态可能被更新 |
| 2 | 工作区.claude/settings.local.json | rig/座位启动 | 接收 statusLine 与活动 hooks |
| 3 | 工作区.mcp.json | 选定的 MCP 资源 | 可能新增外部 MCP 服务条目 |
| 4 | ~/.codex/config.toml | 守护进程/座位启动 | 写入[hooks]块、信任哈希与信任记录 |
| 5 | ~/.openrig/(OPENRIG_HOME) | 守护进程 | 实例数据库与受管插件,升级前必备份 |
| 6 | ~/.tmux.conf | rig setup | 追加 OpenRig 的鼠标与滚动块 |
| 7 | ~/.config/cmux/settings.json | macOS 上rig setup | 启用 cmux 自动化 socket 控制 |
| 8 | ~/.claude/skills、~/.agents/skills | 守护进程启动 | 技能种子目录,确认版本归属变化 |
一键备份脚本(放到你的项目仓库外面):
bk=~/openrig-backup/$(date +%F) && mkdir -p "$bk" for f in ~/.claude.json ~/.codex/config.toml ~/.tmux.conf ~/.config/cmux/settings.json; do [ -f "$f" ] && cp "$f" "$bk/" || true done cp -r ~/.claude/skills ~/.agents/skills "$bk/" 2>/dev/null || true cd <你的项目目录> cp .claude/settings.local.json .mcp.json "$bk/" 2>/dev/null || true ls "$bk"📌 注意:rig setup --dry-run只能预览 setup 阶段的计划,不会预览之后每次启动的写入效果,所以备份不能靠 dry-run 替代。
四、风险控制实操:预览、关闭、监控三步走
4.1 启动前:用 dry-run 与rig doctor摸底
rig setup --dry-run # 只打印计划,不落盘 rig doctor # 检查当前系统健康4.2 不想要活动 hooks?一条命令永久关闭
Codex 的活动 hooks 是默认开启的。如果你评估后决定不需要活动回传:
rig config set runtime.codex.hooks_enabled false这条关闭是持久化的:它会剥离~/.codex/config.toml中 OpenRig 受管的 sentinel 块,只删受管块、保留你自己写的 hooks(逻辑见 codex-runtime-adapter.ts)。
4.3 启动后:用 TUI 持续监控 agent 活动
rig tui --shared打开共享仪表盘后,你可以在 TABLE/GRAIL 视图间切换,看到每个座位的运行时、模型与上下文占比。活动 hooks 回传的事件最终都落在这个视图里——如果某个座位的事件流突然异常密集,第一反应是检查它的 hook 配置而不是放任运行。
顺手一提,如果你担心手敲的座位被自动消息插话,可以启用打字保护:rig seat set-typing-guard <seat> --enabled true --reason <text>(默认关闭),它会把自动消息挂起、改为唤醒提示。
五、事后验证与撤销
- 验证写入是否符合预期:启动后
cat ~/.codex/config.toml对照第 4 项备份,确认[hooks]块只含 OpenRig 的 4 条命令;Claude 侧对照.claude/settings.local.json备份,确认statusLine与 hooks 条目在预期内。 - 撤销权限放行:对 agent 说 "Undo the OpenRig command allowances added by this setup",只会移除本次 setup 新增的允许项,不动你既有的规则。
- 配置漂移检查:权限与 hook 状态漂移的检测逻辑在 permission-drift.ts,配合
rig seat status(它区分"期望选择"与"上次启动参数")可以定位"我以为关了,其实没关"这类问题。 - 出事了怎么报告:安全相关问题请走 SECURITY.md 中声明的渠道,而不是公开 issue。
总结
- OpenRig 的 hooks 写入范围明确、精确受管:Codex 侧只信恰好 4 条自研活动 hook,Claude 侧集中在
.claude/settings.local.json与~/.claude.json; - 活动载荷不含提示词与工具参数,主要价值在监控与恢复;
- 记住三件事:先备份 8 个文件、YOLO 保持关闭、用 TUI 持续盯住事件流,就能在可控的安全边界内享受一支持久化 AI 团队的红利。
更多背景见 README.md 与 packages/daemon/assets/plugins/ 中的受管插件资产(包含活动中继脚本)。
【免费下载链接】openrigBuild your own network of agents from Claude Code, Codex and Pi: persistent teams with roles, shared context and owned work.项目地址: https://gitcode.com/GitHub_Trending/op/openrig
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考