[BUG] Destructive and cost-affecting defaults are undisclosed: the metered user is the discovery mechanism for the vendor’s own behaviour

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 1 comment · opened Jul 29, 2026

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

  1. First-run disclosure of destructive defaults. Retention in particular: state it, and surface cleanupPeriodDays in /config where it can be seen and changed.
  2. 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.
  3. Document the undocumented tool behaviour already identified in the issues above, rather than leaving users to reverse-engineer it from failures.
  4. 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

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗