Codex writes SQLite logs, threatens SSD endurance
The practitioner takeaway outlasts the bug: client-side agent telemetry can quietly impose real hardware cost, and a default log level is a production decision. In GitHub issue #28224 (June 14, 2026), a user reported the OpenAI Codex CLI continuously writing its SQLite feedback log (~/.codex/logs_2.sqlite and its WAL/SHM files), measuring about 37 TB written in roughly 21 days - extrapolating to about 640 TB/year, or roughly 640 full-drive writes annually on a 1 TB SSD against consumer endurance ratings near 600 TBW. The root cause was a global TRACE-level default capturing dependency internals, raw WebSocket/SSE payloads, and OpenTelemetry mirror events. The Register and other outlets amplified it, and at least eight related issues confirmed the pattern across Codex Desktop and CLI. OpenAI has since largely fixed it, lowering the default to INFO in release 0.142.0.
Why it matters for practitioners
The durable lesson is not one tool's bug but a design trap in long-running, client-side AI agents: verbose telemetry defaults can impose silent, sustained hardware cost on the user's machine. A TRACE-level log sink that persists every dependency event and raw protocol payload into a WAL-backed SQLite store generates write I/O proportional to the logging rate regardless of the final file size - so a database that looks small on disk can still burn through SSD endurance. If you ship or run client-side agents, treat the default log level and a write/retention cap as production-critical settings, not afterthoughts.
What was reported
In issue #28224 on the openai/codex repository (opened June 14, 2026), a user reported the Codex CLI continuously writing large amounts of data to its local SQLite feedback log - ~/.codex/logs_2.sqlite plus its -wal and -shm files. The reporter measured roughly 37 TB of writes after about 21 days of uptime, extrapolating to about 640 TB/year, equivalent to around 640 full-drive writes per year on a 1 TB SSD versus common consumer endurance ratings near 600 TBW. The Register subsequently covered the issue, framing the wasted writes as a cost borne across many users.
Root cause and mechanism
The issue traces the behavior to the SQLite feedback log sink being installed with a global TRACE-level default, persisting dependency internals (tokio-tungstenite, hyper_util, inotify events), raw WebSocket and SSE payload bodies, and OpenTelemetry mirror events. In the reporter's sample, TRACE-level entries accounted for roughly 70 percent of retained bytes, and adding the two otel mirror targets pushed the theoretically droppable share to around 96 percent. A 15-second sample showed about 36,211 rows inserted while the retained row count stayed flat - the signature of a continuous insert-and-prune cycle that amplifies writes without growing the database.
Systemic, then fixed
The report links at least eight related issues documenting the same pattern across Codex Desktop and CLI, including excessive WAL writes during streaming and indefinite WAL growth when stale processes hold the file open. OpenAI has since largely addressed it: per the issue thread and Codex release notes, the default SQLite log level was lowered from TRACE to INFO and noise sources trimmed, with fixes landing in release 0.142.0 and follow-up work reported to cut roughly 85 percent of the log writes.
What to watch
If you run Codex long-term on consumer hardware, update to 0.142.0 or later and verify the logs_2.sqlite write rate has dropped; more broadly, audit any client-side agent's telemetry defaults, retention caps, and whether raw protocol payloads are persisted locally.
Key Points
- 1WHAT: GitHub issue #28224 reported Codex CLI writing ~37 TB in 21 days (~640 TB/year) to a local SQLite log via a global TRACE-level default.
- 2WHY: A 15-second sample showed ~36,211 rows inserted with flat retained count - continuous insert-and-prune write amplification, not file growth.
- 3SO-WHAT: Largely fixed in Codex 0.142.0 (default lowered to INFO); the lesson is that client-side agent telemetry defaults carry real SSD-wear cost.
Scoring Rationale
A concrete, reproducible defect in widely used developer tooling, corroborated by The Register and confirmed across at least eight related repository issues, then largely mitigated in Codex 0.142.0 by lowering the default log level from TRACE to INFO. Notable and instructive for practitioners running client-side agents on consumer SSDs, but limited in scope to one tool's logging path, placing it in the mid-Solid band.
Sources
Public references used for this report.
Practice interview problems based on real data
1,625 SQL & Python problems across 15 industry datasets — the exact type of data you work with.
Try 250 free problems

