近期,OpenAI 旗下的 Codex CLI 被发现存在一项颇为严重的日志配置缺陷。简单来说,该漏洞导致日志系统以极其精细的粒度,持续向本地 SQLite 数据库倾倒大量诊断数据,进而造成固态硬盘频繁执行高负荷写入操作,大幅缩短硬盘使用寿命。
具体经过如下:一位 GitHub 用户于 6 月 14 日提交反馈,称自己设备的磁盘占用率无故持续飙升。深入排查后,确认元凶正是 Codex CLI 在运行过程中不间断地向本地 SQLite 数据库写入日志。实测数据令人震惊:设备连续运行 21 天,累计磁盘写入量高达 37TB。按此速率推算,年写入总量约为 640TB。而当前主流的 1TB 消费级固态硬盘,标称总写入字节数(TBW)通常在 600TB 左右。这意味着,若让该工具持续运行,硬盘在不到一年内就可能达到寿命终点。
问题根源在于:Codex 内置的日志采集模块默认启用了 TRACE 级别——这是日志体系中最细粒度的记录等级。在此级别下,程序会完整捕获所有底层操作,包括 WebSocket 原始通信数据包、系统级文件读写行为,甚至连访问 passwd、ld.so.cache 等系统配置文件的常规操作也一并记录。统计显示,约七成的 TRACE 级别日志内容属于底层冗余信息,对普通用户的日常使用几乎毫无参考价值。
更棘手的是,该工具并未兼容 RUST_LOG 环境变量这一标准机制,导致用户无法通过常规途径调整日志输出等级。
好在针对 Linux 与 macOS 平台,目前存在一项临时缓解措施:将 ~/.codex/logs_2.sqlite 文件创建为指向 /tmp/ 目录的符号链接,这样所有日志写入操作将被重定向至内存空间。需要说明的是,该日志文件仅记录程序的底层运行轨迹,不包含用户对话内容;同时,由于存储在内存临时区域,设备重启后日志会自动清空,完全不影响 Codex CLI 的正常功能与稳定性。
