You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
OpenCode database grew to ~72 GB in roughly two weeks of normal use #47022
OpenCode Desktop’s local database grew to approximately 72 GB after roughly two weeks of use, consuming a significant portion of my Mac’s storage.
I investigated the database because macOS was suddenly running very low on disk space. The database breakdown was approximately:
opencode.db: ~72.1 GB allocated
Database payload: ~67.1 GiB
event table: ~64.3 GiB
message table: ~2.38 GiB
part table: ~0.44 GiB
event therefore accounted for roughly 95.8% of the measured database payload
The event data appeared to contain extremely large/repeated message and part update payloads, including message.updated.1 / message.part.updated.1 data.
I am a heavy OpenCode user, but ~72 GB of local database growth in around two weeks seems abnormal and effectively caused OpenCode to fill my disk.
There appears to be no effective retention/compaction mechanism preventing this data from growing indefinitely.
Ideally OpenCode should prune/compact redundant historical event data or provide a configurable retention/storage limit.
Adding data from a normal single-user Windows install (opencode desktop 1.18.30) that matches this pattern. Not a power-user/huge setup.
Database size breakdown (opencode.db):
Total DB: ~2.36 GB
event table alone: ~2.03 GB (149,137 rows)
Rows / bytes by event type:
type
rows
size
message.updated.1
37,664
~1,487 MB
message.part.updated.1
99,943
~538 MB
session.updated.1
11,318
~6 MB
message.removed.1
119
~0.01 MB
session.created.1
95
~0.04 MB
Key observations:
Orphaned events = 0. Every event's aggregate_id still exists in session, so a prune that only removes orphaned events (as proposed in feat(opencode): add db stats, prune, and vacuum CLI commands #43456) would reclaim nothing here. The growth is live-session historical snapshots, not orphans.
A single session dominates: one session accounts for ~1,309 MB across 2,126 events (~616 KB/event average) — a handful of very large snapshots drive most of the size.
The event table has no timestamp column, so time-based retention is not possible without a schema change; only superseding-snapshot compaction (keep the newest snapshot per aggregate, drop superseded ones) helps.
This is consistent with the "full message snapshots stored on every streaming update with no retention" root cause, and confirms ~2 GB is reachable in ordinary use, not just the 13–51 GB reports.
Separately (context, not DB size): long sessions also get slow because the full history is resent each turn; compaction.prune defaults to false. Setting it to true mitigates the slowdown.
Thanks for the report! OpenCode 2.0 is now out and development is focused on V2, so we're closing issues filed against OpenCode 1. Please upgrade (opencode upgrade --major, details: https://anoma.ly/notes/opencode-2-0), and if this is still relevant on 2.0, reopen this issue or open a new one with your 2.0 version.
Activity
github-actions commentedon Sep 3, 2026
This issue might be a duplicate of existing issues. Please check:
eventtable: opencode.db reaches 13GB+, mostlymessage.updated.1snapshots (no retention/compaction) #33356: Unbounded growth of theeventtable: opencode.db reaches 13GB+, mostlymessage.updated.1snapshots (no retention/compaction) — the primary tracking issue for this problem (which you already referenced)message.updated.1event snapshots — same root cause, similar scalemessage.updatedevent #43551: OOM and ~30 GB database: huge workspace-file diffs embedded in message summaries are re-serialized in full on everymessage.updatedevent — related unbounded growth via the same event tableYuepixel commentedon Sep 10, 2026
Adding data from a normal single-user Windows install (opencode desktop 1.18.30) that matches this pattern. Not a power-user/huge setup.
Database size breakdown (
opencode.db):eventtable alone: ~2.03 GB (149,137 rows)Rows / bytes by event type:
message.updated.1message.part.updated.1session.updated.1message.removed.1session.created.1Key observations:
aggregate_idstill exists insession, so a prune that only removes orphaned events (as proposed in feat(opencode): add db stats, prune, and vacuum CLI commands #43456) would reclaim nothing here. The growth is live-session historical snapshots, not orphans.eventtable has no timestamp column, so time-based retention is not possible without a schema change; only superseding-snapshot compaction (keep the newest snapshot per aggregate, drop superseded ones) helps.This is consistent with the "full message snapshots stored on every streaming update with no retention" root cause, and confirms ~2 GB is reachable in ordinary use, not just the 13–51 GB reports.
Separately (context, not DB size): long sessions also get slow because the full history is resent each turn;
compaction.prunedefaults tofalse. Setting it totruemitigates the slowdown.thdxr commentedon Oct 11, 2026
Thanks for the report! OpenCode 2.0 is now out and development is focused on V2, so we're closing issues filed against OpenCode 1. Please upgrade (
opencode upgrade --major, details: https://anoma.ly/notes/opencode-2-0), and if this is still relevant on 2.0, reopen this issue or open a new one with your 2.0 version.— from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊