[BUG] Desktop (macOS): session header ⋮ menu loses every session-derived item — only pane items and Keep computer awake remain

Status Fixed / completed
Reported on v2.1.275
Maintainer reply None cached
Activity 6 comments · opened Sep 20, 2026 · closed Sep 24, 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

What's Wrong?

On Claude Desktop 2.2553.1 (macOS), the session header ⋮ menu has collapsed to four entries. This affects every session, not one.

Still rendered:

  • Files (⇧⌘F)
  • Background tasks
  • iOS Simulator
  • ─────────
  • Keep computer awake — "Only for this session" (toggle)

Gone:

  • Rename
  • Export
  • Copy link
  • Fork
  • Detach to top level
  • Transcript view
  • Output style
  • Archive
  • Delete
  • Debug (submenu)
  • Open in CLI / Open in Desktop

The sessions themselves are fully functional — transcripts, tool calls, working directory, Remote Control all behave normally. This is a UI-layer failure only.

The split is the diagnostic signal: everything that survives is view-scoped; everything that vanished is session-scoped.

Secondary symptom

Settings → Claude Code still shows the Output style dropdown with the help text:

"How Claude structures its responses in Code sessions. Applies to new sessions; the session menu can override it for a single session."

That text now points at a menu item that no longer renders, so the global setting appears to contradict the app's actual state. It is the same defect seen from a second angle, not separate copy rot.

What Should Happen?

The ⋮ menu should list the session actions (Rename, Export, Copy link, Fork, Detach, Transcript view, Output style, Archive, Delete) as it did previously.

Steps to Reproduce

  1. Open any Code session in the desktop app (macOS).
  2. Open the ⋮ menu on the session header.
  3. Observe only Files / Background tasks / iOS Simulator / Keep computer awake.
  4. Repeat on a different session — identical.

Full quit (Cmd+Q) and relaunch does not help. Signing out and back in does not help.

Environment

  • Claude Desktop: 2.2553.1 (macOS, Darwin 27.0.0, Apple Silicon)
  • Backend Claude Code: 2.1.275, desktop-managed at

~/Library/Application Support/Claude/claude-code/2.1.275/claude.app/Contents/MacOS/claude

  • Terminal CLI 2.1.270 installed separately, unaffected
  • Remote Control enabled (remoteControlAtStartup: true)
  • Sessions affected regardless of whether they have a project folder

Timeline

  • Sep 18, 00:50 — desktop 2.2553.1 installed. Menu working.
  • Sep 19 — menu working on this same build.
  • Sep 20, 01:34 — backend rolled 2.1.274 → 2.1.275.
  • Sep 20 — menu collapsed.

The app build did not change across the break, which rules out the desktop update as the trigger.

Ruled out

| # | Hypothesis | Evidence against |
|---|---|---|
| 1 | Feature intentionally removed | The app's embedded release notes contain no removal entry. Comparable removals are documented there ("Removed the Summary transcript view from the session's Transcript view menu"; "Removed the 'Mark as unread' action for chats"). All the menu code, strings and RPC methods are present in the shipped bundle. |
| 2 | Desktop app update | 2.2553.1 installed Sep 18, unchanged; the menu worked on Sep 19 on this exact build. |
| 3 | Backend update (2.1.274→2.1.275) | Both binaries byte-compared around output-style handling: logic identical, differences are minifier identifier renames only. available_output_styles: e.availableOutputStyles ?? ["default"] unchanged. |
| 4 | Plugin output-style bug (#93284) | Fixed in this build — the all-or-nothing validator and its settled as empty log line are gone, replaced by per-entry filtering. No style-shipping plugins installed. |
| 5 | Stale plugin/marketplace state | A third-party plugin and every leftover (marketplace registration, cache, data dirs, state files) were fully removed and verified. Symptom persists. |
| 6 | Auth / token renewal | 2.110.0 documents a fix for "the Code tab's agent detection, output styles, and other desktop features sometimes needing you to sign in again." Signed out and back in. Symptom persists. |
| 7 | Session-scoped | Reproduces on every session. |
| 8 | Shared / read-only session flag | Keep computer awake renders, and its gate is !isShared && keepAwake — so that flag is false. |
| 9 | Null props bundle | Self-refuting: paneItems and keepAwake live inside the same props object as the missing items. If it were null they would be gone too. |

Code-level analysis (from the shipped renderer bundle)

Menu component (ion-dist/assets/v1/ce4f4374c-v9EYE7W1.js) renders in this fixed order:

Transcript view    →  gate: Me && Me.length > 0
Output style       →  gate: (B && B.length > 0) || Pe !== undefined
Edit cloud env     →  gate: Nt
Release runner     →  gate: Pt
Keep computer awake→  gate: !V && z
[separator] pane items
[separator] Archive / Unarchive / Delete

Props supplier (ion-dist/assets/v1/c360a9e1c-GPs-MV9u.js):

kt = useMemo(() => !t || !Pe ? null : {
  onRename:    qe ? void 0 : ye,
  onArchive:   qe ? void 0 : ut,
  onDelete:    qe ? void 0 : dt,
  onFork:      K && !W && !a ? st : void 0,
  onExport:    Ge && !W ? Qe : void 0,
  onCopyLink:  Re ? Ze : void 0,
  keepAwake:   W || qe ? void 0 : q,
  outputStyles:        Ke ? void 0 : Dt,
  onCreateOutputStyle: Ke || !Z ? void 0 : gt,
  paneItems:   Ot,
  ...
}, [...])

What the observed state implies:

  1. kt is not null. keepAwake renders and lives inside kt, so t and Pe both resolved. The header did identify the session.
  2. isShared and isLifecycleBlocked are both false, since keepAwake: W || qe ? void 0 : q produced a value.
  3. Therefore onRename reduces to ye, onArchive to ut, onDelete to dt — and those, plus onFork, onExport, onCopyLink, onOpenInCli, onOpenInDesktop, outputStyles and the transcript-view list, are all arriving undefined independently.
  4. The one survivor provably independent of session state is paneItems:

``js
Ot = useMemo(() => { if (je.length !== 0) return je.map(...) }, [je]) // pane state only
`
keepAwake is q = Lp(t, k && {isArchived, isCloudRun, manualKeepAwake})` — it reads session-meta fields but may still return a usable value when meta is absent.

Open question: why every session-derived handler resolves to undefined while the bundle itself is built. The session meta object (k) failing to reach this component would fit points 3 and 4, but I could not confirm it — see below.

Diagnostic gap

The desktop logs nothing about session-menu construction. ~/Library/Logs/Claude/main.log shows no warning, error, or trace when the menu renders empty. Related-sounding lines were checked and cleared:

  • LocalSessions.setFocusedSession: sessionId=null — counted across 12 days; the null ratio is flat (63–92%) including days the menu worked. Normal blur/focus behaviour.
  • No [CCD] output-style list, initializationResult read failed, or applyFlagSettings: dropping… warnings.

A log line when the header renders without its session props would have made this diagnosable from disk.

Related

  • #91210 (open) — same failure class in a different menu: the desktop slash menu built with sessionId=undefined, cwd=undefined, so only non-session-scoped entries render. That exact log line is present on this machine, so both defects are firing here.
  • #61671 (closed) — Pin vanished from this same session header dropdown for newly-created sessions on Windows. Prior art for conditional-omission regressions in this menu.
  • #87844 (open) — "Show background tasks" missing from the kebab menu until app relaunch (macOS).
  • #69677 (closed) — Background tasks missing from the session menu under a specific condition.
  • #95400 (open) — documents the Settings/session-menu relationship and that the per-session override lives in desktop-only state.

Search performed

2,208 unique issues collected across 29 query anchors (menu-phrased and consequence-phrased), no date restriction, open and closed, scored on issue bodies for co-occurring missing session-menu items. No existing report of this symptom.

View original on GitHub ↗

3 Comments

allegradav · 23 days ago

Same problem here. Claude Desktop 2.2553.1, macOS (Apple Silicon), Max plan, Code tab.

The session header ⋮ menu only shows Files / Background tasks / iOS Simulator / Keep computer awake. Rename, Export, Fork, Output style, Archive and Delete are missing in every session.

It worked on Saturday 19 Sep during the day, and I found it broken on Monday 21 Sep. The app itself was not updated in between (2.2553.1 was installed on 18 Sep). A full Mac restart and a Cmd+Q relaunch do not fix it. main.log shows no error, and status.claude.com reports no incident.

morganavr · 23 days ago

Same problem on Windows 10

<img width="384" height="150" alt="Image" src="https://github.com/user-attachments/assets/f27664d7-2de3-49ea-9e24-3006647572e4" />

BluFinSolutions · 23 days ago

Confirming this on Windows as well, corroborating morganavr's report above with more detail.

Environment

  • Claude Desktop: 2.2553.1 (c38127), 2026-09-18T00:41:58.000Z
  • OS: Windows 11 Pro, build 10.0.26300

Symptom
Session header ⋮ menu collapsed to just: File, Attività in background (Background tasks), Mantieni il computer attivo (Keep computer awake) — UI language is Italian, but same three survivors as the macOS reports. Rename, Export, Fork, Transcript view, Output style, Archive, Delete are all gone.

One extra data point not yet in this thread: the /output-style [style] slash command still autocompletes and works fine from the chat composer — so the command path is intact, only the ⋮ menu entry is missing. This lines up with the 'secondary symptom' in the OP (Settings → Claude Code still showing the Output style dropdown correctly): the setting/command plumbing is fine, it's specifically the session-menu rendering that's broken.

Showing cached comments. Read the full discussion on GitHub ↗