[BUG] Destructive and cost-affecting defaults are undisclosed: the metered user is the discovery mechanism for the vendor’s own behaviour
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
Several Claude Code behaviours that materially affect data retention and cost are not disclosed at install, not surfaced in /config, and not documented where a user would look. The only way to find them is to investigate — and on a token-metered product, that investigation is billed to the user.
This issue is about the disclosure gap itself, not any one of the behaviours. Each is filed separately; the pattern is what needs an owner.
The undisclosed behaviours, and how each had to be discovered
| Behaviour | How a user finds out | Filed as |
|---|---|---|
| Transcripts are deleted after 30 days by default | Notice history is gone, or audit the store against history.jsonl | #62476, #59248, #79758 |
| cleanupPeriodDays may be ignored even when set | Compare git-tracked settings against surviving sessions | #41458 (data-loss, regression) |
| /bug opens a public GitHub form and attaches no transcript | Extract the URL from the CLI binary | filed alongside this |
| Bash timeout sometimes hard-kills (exit 143) with no partial output, sometimes auto-backgrounds; criteria undocumented | Lose a long command and diff the two behaviours | #79879, #48861, #77645 |
| Session history is re-materialised up to ~11× by compaction | Parse the transcript store and count duplicate uuids | filed alongside this |
| Server-gated system-prompt sections change model behaviour, enabled by capability rather than user config, with no opt-out | Notice the model stop honouring your own configuration | #80988 |
| Default reasoning effort was reduced 2026-03-04 → 2026-04-07 | A postmortem published after the window closed | — |
Why the disclosure gap is the bug
Taken individually each of these is a papercut with a workaround. Taken together they describe a product where the user is the discovery mechanism for the vendor's own defaults, and pays per token for the privilege.
Concretely, in my case: establishing the retention behaviour, the write amplification, and the /bug destination required a full-corpus audit — 3,146 transcript files, 5.39 GB, multi-agent analysis costing millions of tokens, plus a working day of back-and-forth. Every one of those facts is something the vendor already knows and could have stated in one line of documentation or one first-run prompt.
The retention case is the sharpest. On this machine, history.jsonl references 13 sessions and 11 no longer exist on disk — nine from 2026-03-19 → 2026-04-08, one of them 117 prompts long. That data was destroyed by a default I was never shown, and I discovered it only because I happened to audit the store for an unrelated reason, one day before eight more sessions crossed the same threshold.
There is also no in-product path to report any of this privately, and no route to billing or support, so the cost of discovery cannot be recovered or even raised.
Expected Behavior
- First-run disclosure of destructive defaults. Retention in particular: state it, and surface
cleanupPeriodDaysin/configwhere it can be seen and changed. - A behavioural changelog. Not version numbers — the actual changes to defaults, system prompts, reasoning effort and tool behaviour, published when they ship, not in a postmortem afterwards.
- Document the undocumented tool behaviour already identified in the issues above, rather than leaving users to reverse-engineer it from failures.
- A private support/report path with a route to billing, so a user who has spent real money discovering vendor defaults can raise it somewhere other than a public issue tracker.
Environment
- Claude Code CLI 2.1.220
- VS Code extension 2.1.220 (auto-updated; 19 client versions in 5 weeks, no pinning)
- Linux (Debian)
- 67 sessions / 37 days of continuous use analysed
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗