Skip to content

control-history journal and payloads grow forever, and the whole journal lives in memory #1274

Open

Description

@Juliusolsson05

FileControlHistory.ts appends every external-control/MCP control call to events.jsonl (+ payloads/*.json) with no retention, compaction or cap, and loads the whole journal into an in-memory array. On disk: 125 MB, 3,389 payloads, 5,885 events since 2026-09-05; largest payload 4.7 MB. Severity P2.

Found by the Stage 3 C6 hunt; lines are origin/main 9c6e48f. Findings file: temp/quality-loop/hunt-c6.md.

🤖 Generated with Claude Code

Activity

  1. Juliusolsson05 commented on Sep 27, 2026

    @Juliusolsson05
    OwnerAuthor

    PR #1330 prunes finished unkeyed calls older than 7 days, and their payloads, on load (owner's store: 126 MB → ~17 MB of payloads). Residuals that keep this issue open: (1) keyed calls, the executor's dedupe ledger, are never pruned (~40 rows/day); pruning them needs a request-key lifetime in the control contract, which is an owner decision. (2) Pruning runs only on load, so a process running for weeks grows until its next launch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingclass:C6-unboundedUnbounded growthprovider:claudeAffects Claude Code integrationprovider:codexAffects Codex integrationprovider:opencodeAffects OpenCode integrationprovider:piAffects Pi integrationsev:P2Real bug with a workaroundtype:bugSomething works wrong

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions