BLOG

热点跟踪 019|Codex CLI 默认装了个隐形守护进程:沉寂两周半冲上热榜,OpenAI 至今零回应

Kael Zhang
热点跟踪Codex CLIOpenAI守护进程供应链安全
广告 · Advertisement

先把时间钉住,这次同样是两条线。9 月 25 日,用户 Yihua-Liu-1997 在 OpenAI 的 Codex CLI 仓库提交 issue #48195,标题的诉求写得很直白:让守护进程自动启动改为可选项,一个持久化、自更新的后台守护进程不该是默认。这条 issue 沉寂了两周半,只有零星十几个用户跟评。10 月 12 日,它被顶上 Hacker News 热榜,截至 10 月 13 日上午已超过 450 个支持票、239 条评论。传播的另一头是沉默:issue 至今仍是开放状态,15 条评论里没有一条来自 OpenAI 成员,截至发稿官方未正面回应。以下事实以 issue 原文与 HN 评论为一手来源,观点与定性正文逐一标注归属;数字以 10 月 13 日为切面,事件仍在再发酵后的 48 小时窗口内。

发生了什么

按 issue 报告人的描述,从 0.157.0 版本起,你只是打开一个交互式的 codex 会话,它会在背后做四件事。

第一,启动一个持久后台守护进程。它跑在独立会话里,没有终端界面,你把所有 Codex 窗口都关掉它依然存活,进程被托给系统的 1 号进程代管,直到你手动停止或者重启机器。

第二,把整个平台包复制一份到用户目录下的隐藏文件夹里,报告人给出的体积是约 374MB,内容包括 codex 本体和捆绑的若干工具。这份拷贝与包管理器刚装好的那份字节级相同,但从此后端版本与你安装的 CLI 版本脱钩,各走各的。

第三,启动一个分离的更新器。开机 5 分钟后第一次检查更新,此后每小时查一次,发现新版就下载并自动重启后端,正在进行的会话轮次可能被直接杀掉。更别扭的是报告人发现的一个附加问题:执行官方的停止命令,守护进程停了,更新器却继续活着,70 秒后仍在运行,最后只能手动杀掉。用他自己的话说,相当于卸掉了炮塔,留着自动装弹机。

第四,钉死第一个会话的环境变量。报告人习惯用包装脚本按次设置代理,结果守护进程记住了第一个会话的代理配置,之后所有会话的出站连接都走那个代理,改不掉。

报告人的期望很克制:对命令行工具来说,最不令人意外的默认应该是后端随窗口生死、运行用户亲手安装的二进制、不在后台自我更新;共享的自更新守护进程对远程控制和桌面应用有意义,可以在那里开启,或者在用户显式执行启动命令时开启。他还给出了临时办法:用 codex features disable daemon_auto_start 关掉自动启动,再手动停止守护进程。

时间线上还有一层。引入这个行为的版本是 0.157.0,而 npm 上的最新版已到 0.162.1(10 月 13 日 registry 数据),中间迭代了 5 个次版本,issue 仍然开放,默认值未见变更公告。

为什么「默认」才是最大的问题

单看每一项,都能找到辩护词:守护进程是为了响应快,自动更新是为了迭代快。问题出在它们全部叠加成默认行为,而默认行为就是绝大多数用户永远不会去改的行为。

第一层,身份漂移。评论区分析最深的一条来自用户 aetherxeg-source,他点出一条溯源边界:安装的 CLI 身份不等于守护进程的执行身份。工具把自己复制进托管目录,后台更新器可以随时替换那份拷贝,于是你装的版本和实际在跑的版本可以不是同一个。在供应链安全的语境里,这正是攻击面的标准定义:你审计了入口,审计不到真正执行的那份代码。

第二层,无法审计的变化。一个每小时都可能变成另一个版本的常驻进程,意味着任何一次安全评估的有效期最长只有一小时。对拿它处理公司代码库的开发者来说,这不是理论洁癖,是合规问题。

第三层,磁盘与主权的实际代价。HN 评论区有多条独立报告:用户 icantevenhold 称自己系统上相关目录总共占了约 12GB;用户 rfgplk 说发布目录保留所有旧版本,每个二进制约 300MB;用户 AgharaShyam 数出缓存里有 11 份约 300MB 的拷贝。这些数字均为评论者自报,不是官方数据,但方向一致:自更新加不删旧版,体积只增不减。

官方口径对不上(言行审计)

OpenAI 对外的品牌基石是安全与对齐:从章程里「确保 AGI 造福人类」的承诺,到常态化发布的模型规范和安全博客,核心叙事一直是「我们最懂怎么让 AI 系统可控、可预期」。这个叙事讲得越宏大,本机这一层就越刺眼:一个不经同意的常驻进程,自我复制、自我更新、自动重启、钉死环境变量,官方停止命令停不干净,配置文档里还查不到关闭方法。

文档缺失是评论区用户 foma-agent 在 10 月 12 日提出的指控,以他的自述为准:他抓取了完整的官方配置参考页面,里面连 CLI 自身的启动检查更新选项都写了,却没有一行提到 daemon_auto_start。也就是说,普通用户想关掉这个守护进程,在官方文档里找不到门。

耐人寻味的是路过者的反应。知名开源工具作者 charliermarsh(Ruff 与 uv 的作者,并非 OpenAI 人员)在 HN 楼里表示,自己没碰过更新子系统,但这看起来是疏忽,他愿意去修。一个外部的开源作者觉得看不下去,而当事公司的 issue 下十五条评论没有任何官方成员出现,这个对比本身就是审计结果。

再看横向。评论区有人指出 Claude Code 是同一套运营模式,并贴出了 Anthropic 仓库的类似 issue;该 issue 的具体内容未经独立核验,此处只记录「评论区贴出类似 issue」这一事实。如果属实,这就不是单个厂商的疏忽,而是「AI 编码工具」这个品类的默认行为在集体漂移。生态已经出现免疫反应:Nix 打包社区专门做了补丁,在打包层直接剥离守护进程行为,评论者 whimblepop 提到 Claude Code 的 Nix 包同样打了补丁。包管理器社区用脚投票的态度很明确:这类行为不该进用户的机器。

评论区怎么说

HN 高赞评论大致分成几派,以下为转述,不代表本篇立场。

少数派认为自动更新是常态,这东西迭代快就该自动更新,浏览器都是这样。这条立刻被围攻:有用户回敬说我的浏览器更新还要我点批准呢;另一位说产品跑得快不代表朝我要的方向跑,更不代表我愿意在项目中途被抽换地板,自动更新有价值,但不配做专业工具的默认;还有人说包管理器完全有能力后台更新几千个程序,且不侵犯用户对自己电脑的主权。

情绪最重的一条来自用户 laurynas-karvelis,他直言这基本就是恶意软件的特征,并且表示不觉得这是无意做出来的。用户 Logarithmus 顺着说,照这个路子,用它们建一个住宅代理网络来抓网页他都不意外。注意,恶意软件、有意为之,这些都是评论区用户的定性,不是经过证实的结论,本篇不采纳为事实。

实践派的对策更冷静。用户 st396gt 说文档里写着要对整个主机文件系统完全读写,所以他把 codex 跑在一台加固过的树莓派里再远程连进去用,隔离运行成了实际的用户对策。用户 alexklibisz 独立印证了环境变量问题:他用 direnv 管理目录级变量,在一个目录里起的 codex 把变量带走了。

传播最广的是一句讽刺,来自用户 jonplackett:号称要终结软件的软件,自己却是不怎么样的软件。

普通用户能做三件事

第一,如果你在用 Codex CLI,先把自动启动关掉:codex features disable daemon_auto_start,再执行守护进程停止命令,并用进程列表确认更新器也停了,issue 报告人的教训是停止命令停不干净,要手动复查。

第二,查一下磁盘。看看用户目录下 .codex 的 packages 文件夹占了多少空间,评论区自报的数字从几百 MB 到 12GB 不等,旧版本不会自动清理,定期手动删除不用的版本目录。

第三,敏感环境别裸跑。要处理公司代码或者配了内网代理的机器,参考评论区的隔离方案:专用小主机或虚拟机里跑,远程连进去用;或者走 Nix 社区打好补丁的包,在打包层就把守护进程行为剥掉。原则和 018 期讲紧急刹车时一样:工具的手可以伸出去,但开关和地板必须在你手里。

结语

分寸声明:本篇不定罪任何公司。恶意软件、有意为之,是评论区的情绪定性,本篇只转述不采纳;已核验的事实是行为本身(按 issue 报告人描述)、issue 开放状态与官方沉默。疏忽与故意在证据上是两回事,但对本机行为的审计不需要动机认定:不经同意的常驻与自更新,放在任何一家以安全对齐为品牌基石的公司身上,都构成言行落差。两个待盯节点:其一,OpenAI 是否正面回应,issue 下出现官方成员评论、博客说明或默认值变更,任一发生即出 v2;其二,Anthropic 仓库那条被贴出的类似 issue 若完成核验,品类漂移的判断将从「评论区指控」升级为「双厂商事实」,届时同样更新。

参考来源

  • issue 一手:openai/codex#48195,GitHub API 抓取(body 全文、15 条评论全量、labels、state=open、创建于 09-25T20:04Z、评论者 author_association 全为 NONE)
  • HN story 50060694:Algolia 数据,10-12T18:29 提交,10-13 上午快照 462▲/239💬,正文用「超 450▲」口径
  • HN 评论池:Algolia items API 两层抓取 93 条,代表性样本已录入事实包
  • npm registry:@openai/codex 最新版 0.162.1(10-13 快照)
  • charliermarsh 身份:HN 用户简介自证(Ruff/uv 作者,现任职 Spring Discovery),非 OpenAI 人员
  • 文档缺失指控:HN/issue 评论者 foma-agent 自述(10-12),以该评论自述为准
  • anthropics/claude-code#14980:HN 评论贴出,内容未独立核验,正文仅作「评论区贴出类似 issue」处理
  • 374MB/12GB/11 份 300MB 等数字:分别为 issue 报告人自述与 HN 用户自报,均非官方数据
广告 · Advertisement

常见问题

Codex CLI 的守护进程做了什么?

按 issue 报告人描述:安装后默认启动一个常驻后台进程,会自更新,报告人实测占用约 374MB 内存;另一 HN 用户自报磁盘占用达 12GB。诉求是把自动启动改为可选项。以上均为社区自述数据,非官方口径。

OpenAI 回应了吗?

截至 2026-10-13 发稿没有。issue #48195 仍为开放状态,15 条评论的 author_association 全部为 NONE,无一来自 OpenAI 成员;HN 讨论区亦无官方人员现身。

普通用户现在能做什么?

三件事:检查本机是否装了 Codex CLI 并查看后台进程与自更新行为;关注 issue #48195 的官方回应窗口(48 小时窗到 10-14 晚);对 AI 编程工具的安装后行为保持「装完看一眼进程列表」的习惯。