[FEATURE] Persist Transcript view mode (Desktop) across sessions

Status Open
Maintainer reply None cached
Activity 8 comments · opened Jul 11, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

In the Desktop app's Code tab, the "Transcript view" mode (Normal / Verbose / Detailed / Summary) always resets to "Normal" when starting a new session. I have to manually reselect my preferred mode every single time via the dropdown or Ctrl+O, which is repetitive and easy to forget. There's currently no way to set a default that persists across sessions.

Proposed Solution

Add a settings.json key (e.g. "transcriptViewMode") that lets users define a default Transcript view mode for the Desktop app's Code tab. This default would be read at session startup, similar to how other preferences like outputStyle or verbose are already persisted in settings.json. The dropdown/Ctrl+O toggle would still work for per-session overrides, but new sessions would start from the saved default instead of always resetting to "Normal".

Alternative Solutions

I've tried using Ctrl+O to cycle through modes at the start of each session, but this still requires a manual step every time and is easy to forget when jumping into a quick task. There's no CLI flag or environment variable that sets this either, as far as I could find in the current documentation.

Priority

Medium - Would be very helpful

Feature Category

Other

Use Case Example

Example scenario:

  1. I use Claude Code Desktop daily on Windows for Microsoft 365 / Power Platform development work
  2. I prefer "Verbose" mode to see detailed tool usage while Claude works, so I can follow what it's doing
  3. Every time I open a new session or window, the view resets to "Normal" and I have to manually switch it back
  4. This would save time and reduce friction across dozens of sessions per week

Additional Context

Related: the settings.json reference already supports persisting similar preferences (e.g. outputStyle, verbose for CLI). Extending this pattern to the Desktop Transcript view dropdown would be consistent with existing configuration conventions.

View original on GitHub ↗

3 Comments

rvanhorn · 1 month ago

I was wondering the same thing because I prefer the Thinking transcript view too. Here's hoping this gets added soon!

mplezier · 1 month ago

Adding a concrete data point, because the key this request asks for may already exist and simply not be wired up on Desktop.

The settings reference documents a viewMode key:

viewMode — Default transcript view mode on startup: "default", "verbose", or "focus". Overrides the sticky /focus selection when set. The --verbose flag overrides this for one session.

On Desktop it has no effect.

What I tested — Windows 11, Desktop app 1.24012.9, bundled runtime 2.1.219:

  1. Added "viewMode": "verbose" to the user settings.json and restarted the app.
  2. Opened a new session. The transcript still starts collapsed (Normal). Ctrl+O expands it as before, for that session only.

Two observations that may help locate it:

  • The Desktop bundle's own settings schema does declare viewMode (z.enum(["default","verbose","focus"])), so the file is parsed and the value accepted — it just never reaches the transcript view.
  • viewMode appears nowhere in the public CHANGELOG, which fits the pattern of a CLI-only setting that the shared settings schema exposes on Desktop without a consumer behind it.

So the fix may be smaller than adding a new transcriptViewMode key: honouring the existing documented viewMode in the Desktop transcript view would resolve this and keep one key across both surfaces.

UnrealYorik · 28 days ago

Adding the other half of the picture: I went looking for where the mode is actually stored, and it explains why there is no default to honour.

The Desktop app persists the choice in the renderer's localStorage (the claude.ai origin, under the react-query-cache-ls key), as a per-session map:

"transcriptModeBySession": {
  "local_<session-uuid-a>": "thinking",
  "local_<session-uuid-b>": "normal"
},
"currentSessionId": "local_<session-uuid-a>",
"transcriptMode": "thinking"

Two fields matter:

  • transcriptModeBySession is the real storage, keyed by session ID. A new session gets a new ID, finds no entry, and falls back to the built-in default. So the reset isn't a persistence failure — the value is saved, it's just scoped to a session that no longer exists.
  • transcriptMode looks like a global default at first glance, but it isn't. I verified it tracks currentSessionId: switching to a session that was on Normal flipped it from "thinking" to "normal". It mirrors the active session rather than storing a preference.

So there is no global key anywhere in the stored state, which lines up with @mplezier's finding that viewMode parses but never reaches the transcript view. Both halves point at the same gap: the Desktop transcript view has no notion of a default at all, only per-session state.

One more wrinkle for whoever picks this up — the mode sets have diverged between surfaces. The CLI schema's viewMode enum is default | verbose | focus (three values), while the Desktop dropdown offers Normal / Thinking / Verbose / Summary (four). Wiring viewMode through to Desktop would also need a representation for "Thinking", which currently has none at the settings level. (Docs side of that gap is tracked in #81979.)

Environment: macOS, Desktop app 1.24012.9, CLI 2.1.220.

Showing cached comments. Read the full discussion on GitHub ↗