Terminal tab title should update dynamically as conversation evolves
Resolved 💬 2 comments Opened Mar 30, 2026 by faisal-claude Closed May 3, 2026
Problem
The terminal tab title is set from the first user message in a conversation and never updates. As the conversation evolves across different topics (e.g., from financial analysis → email search → calendar check → debugging), the title remains stale and no longer reflects what's actually happening.
Additionally, there is no way to set a persistent custom tab title. A previous hook-based approach (using OSC escape sequences) worked but broke in a recent update — Claude Code now overrides the title on every render cycle, making any user-set title impossible to maintain.
Current Behavior
- Title is set once from the initial prompt (e.g., "Check steam revenue for February and March")
- Claude Code continuously resets the terminal title on every render cycle
- Any attempt to override via OSC escape sequences in statusLine or hooks gets immediately overwritten
- This means custom workarounds (e.g., UserPromptSubmit hook + statusLine OSC injection) don't work
- Regression: This used to work — users could set a custom tab title via hooks/OSC sequences before a recent update
Desired Behavior
One or more of:
terminalTitlesetting — Allow users to set a static or template-based title (e.g.,"terminalTitle": "Faisal Home"or"terminalTitle": "{cwd} - {model}")terminalTitle: false— Option to disable Claude Code's title-setting entirely, so users can manage it themselves via hooks/statusLine OSC sequences without being overridden- Dynamic title updates — Update the terminal title periodically to reflect the current conversation topic, not just the first message
- Expose
topic/conversation_summaryin statusLine JSON — Let the statusLine script access the current topic so it can set the title via OSC
Context
- Long-running sessions with multiple topics make the stale title actively misleading
- Users with multiple Claude Code tabs open rely on the title to identify which session is which
- A previous custom hook-based approach worked but broke in a recent update when Claude Code started overriding the title on every render cycle — this is a regression
Environment
- Claude Code CLI (macOS, iTerm2 / Terminal.app)
- Opus 4.6 (1M context)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗