{"version":"2.1.259","anchor":"history-retention-prune-rewritten-to-a-two-pass-integrity-v","canonical_anchor":"history-retention-prune-rewritten-to-a-two-pass-integrity-v","heading":"History retention prune rewritten to a two-pass, integrity-verified streaming scan","tier":"internal","area":"Sessions","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.259\/e\/history-retention-prune-rewritten-to-a-two-pass-integrity-v","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.259","markdown":"### History retention prune rewritten to a two-pass, integrity-verified streaming scan\n\nHistory pruning now scans lock-free and verifies the file hasn't changed, deferring the prune instead of erroring if it has.\n\nPruning of `history.jsonl` under retention rules now runs a lock-free scan first, verifying the file's identity (inode\/birthtime) hasn't changed, and only takes the retention lock and rewrites the file if there's actually something to prune. If the file changes underneath the scan, pruning is deferred rather than erroring, logged as `History retention prune deferred: history.jsonl changed under the scan`.\n\n- Flag `tengu_hipaa_history_retention_prune`: Not enough to say (read for one account on one subscription tier against v2.1.259; this account: no value returned, anonymous baseline: no value returned, compiled default: on) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.\n- Area: Sessions\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}