[FEATURE] Reflect session state (awaiting permission / working / idle) in the browser tab favicon for Claude Code on the web
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
When running many Claude Code sessions on the web at once, each in its own browser tab, there is no way to tell which tab needs attention without clicking into each one. The most common case is a session that has paused for a permission prompt: it does nothing until it is answered, but from the tab strip every tab looks identical.
Browser notifications do not solve this at scale. When several sessions are active, multiple prompts arrive at roughly the same time, the notifications stack, and it becomes impossible to tell which tab each one belongs to. The signal that is supposed to help instead adds noise, and a prompt that goes unnoticed can stall a session for a long time before it is spotted.
Proposed Solution
Reflect each session's current state in that tab's favicon, so the browser tab strip shows at a glance which sessions need input. Changing a favicon dynamically is a standard, well-supported browser capability, and browsers already use favicon changes to signal attention (loading spinners, the audio indicator).
Minimum viable version:
- A distinct favicon for "awaiting input / permission" versus the default idle favicon.
Fuller version:
- Distinguish the main states, for example working, awaiting permission, and idle or done.
- Reuse the state vocabulary the session-list sidebar already uses (the colored dots and icons), so the tab strip and the sidebar tell the same story rather than introducing a second, conflicting convention.
- Optionally mirror the state in document.title (for example a prefix on the tab label), since the title is often easier to read than a 16px icon.
- A settings toggle to enable or disable the behavior, matching the request in #21014.
An animated favicon (for example a color-cycling Claude mark) could be reserved for the highest-urgency state, "awaiting permission", so it stands out in a dense tab strip while calmer states use static markers.
Why the favicon specifically
The tab strip is already where you scan when juggling many tabs, so it is the natural place for a per-tab signal. Unlike notifications, this scales cleanly with the number of sessions: N sessions waiting on you show up as N marked tabs you can go to directly, rather than N stacked, indistinguishable notifications. It complements notifications and remote approval rather than replacing them.
Alternative Solutions
None I am aware of.
Priority
High - Significant impact on productivity
Feature Category
Other
Use Case Example
Example scenario:
- I'm running six Claude Code sessions on the web at once, each in its own browser tab, working across a few different repos.
- I switch away to review a PR while they run. A few minutes later, two of them have paused for permission prompts, but from the tab strip every tab looks identical, and the browser notifications for both arrived stacked together so I can't tell which tabs they belong to.
- With this feature, the two tabs waiting on me would show a distinct "awaiting permission" favicon (mirroring the session-list sidebar's state colors), so I'd spot them instantly in the tab strip and click straight to them - while the tabs still working stay on their normal icon.
- This would save me time because today I have to click into each session one by one to find the ones that are blocked, and a prompt I miss can stall that session indefinitely until I happen to notice it.
Additional Context
Related issues (for context)
#21014 - proposes browser notifications and a favicon badge for _task completion_ in the Claude Code web version. This request extends that idea from completion to permission and needs-input state, which is arguably more urgent, since a completed session has at least finished its work while a blocked one does nothing until noticed.