[FEATURE] Desktop app: count unread (completed, not yet viewed) sessions in the Dock badge
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
I run several Code sessions in parallel in the Claude desktop app (macOS) and switch to other apps while they work. When I'm in another app, I have no persistent way to tell how many sessions have finished and are waiting for me to read them.
Today the Dock badge only counts sessions that are blocked on me (a permission request or a question). A session that simply finishes its turn only produces a transient banner. If I miss the banner, nothing on the Dock icon tells me there is something to look at. The per-session unread dot in the sidebar has exactly the information I need, but it is only visible once I'm already back in the app.
Every other messaging-style app on my Dock (Outlook, Teams, WeChat, Lark) shows an unread count on its icon, so the Claude icon staying empty while three sessions are done and unread is easy to misread as "nothing happened yet".
Proposed Solution
Let the Dock badge optionally include unread sessions, i.e. sessions that completed a turn that I have not opened since:
- Count = sessions currently showing the unread dot in the sidebar (plus the existing blocked-on-user count).
- Opening a session clears it from the count, the same way the sidebar dot clears.
- A session that finishes while I am looking at it is not counted.
In settings terms, this could be a badge level for "Task complete notifications", matching what already exists for permission requests and questions (which have off / badge / banner, while task complete only has off / banner).
Alternative Solutions
- Hooks + a helper app. I built a small helper that listens to
Stop/UserPromptSubmit/SessionEndhooks and shows the count on its own Dock icon. It works, but the number lives on a second icon next to Claude, because macOS only renders a Dock badge that the app sets on itself. - Third-party "notch" apps for Claude Code. They are built around terminal sessions and don't map well onto desktop sessions (no session titles, "jump to terminal" instead of jumping to the session).
- Relying on banners. They disappear, and they are easy to miss when I'm focused elsewhere.
Priority
Medium - Would be very helpful
Feature Category
Other
Use Case Example
- I start three Code sessions on different tasks in the desktop app.
- I switch to my IDE and browser and work there for 20 minutes.
- Two sessions finish; one is still running. I missed both banners.
- With this feature, the Claude Dock icon shows
2. I click it, open the first finished session, and the badge drops to1. - Without it, the icon shows nothing, and I only find out by switching back and scanning the sidebar.
Additional Context
- Claude desktop 2.31226.0, macOS 26, Apple Silicon, Code tab with local sessions.
- Related observation while testing: with "Question notifications" and "Permission request notifications" left at their default (never explicitly set), I got banners but no Dock badge at all, even though macOS "Badge app icon" was enabled for Claude. After the levels were explicitly set to
banner, the badge appeared as expected. My Settings UI only exposes on/off toggles for these, with no way to pick a level, so I could not get the badge from the UI. If that default is intentional it may be worth surfacing the level picker; happy to file it separately if useful.