[FEATURE] Terminal window title settings
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 have set up zsh to title my terminal windows (alacritty in this case) with the working directory and git branch. This helps me manage multiple windows a lot more easily. ...but it doesn't work in Claude Code because it renames the windows.
There are two problems here: one is that I find the current window naming to be generic and not very useful (for me). Some users may like this, but I would really prefer to have more useful information there.
The other more general problem is lack of any sort of control as to what the window titles are.
Here is a demonstration of a few windows – can you figure out which one is which from the title?
Proposed Solution
I'd like to be able to set the window title, either using a hook or a config item. Ideally I'd be able to recreate my own naming convention of
If that is not possible, however, I would love more useful names for the window titles.
Alternative Solutions
I don't have a current workaround because Claude Code takes over the naming for the window title when running. I mostly just have to open various windows with names like "git directory" or "code development" until I find the one I want. This makes parallel development more cumbersome.
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
I open a window and claude -c to continue work on a project. Once that's working on a task, I ctrl-n to open a new window and continue a separate project. (etc. – I have 8 windows open right now.)
Especially when on a smaller laptop screen, I can only actively view 3 or so windows at a time, so I need to check in on other open windows by selecting view all – this is where I get a small unreadable thumbnail and a title. The title names rarely provide enough context to know which window is which, so I maximize each one in turn unitl I find what I'm looking for.
Additional Context
I'm a big fan of Claude Code. I just wish it were a bit more extensible.
+1 I've been pulling my hair out trying to get CC to set tab titles. It just doesn't work.
Does this help ? https://github.com/anthropics/claude-code/issues/3396
No it didn't :(
I tried putting it in both settings.json
"env": {
"CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1"
}
and running it with
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 claude
they both still take over the title
Does you terminal not have an option to set a static window title? I start my terminal with a static title before starting Claude as a workaround for this.
I do agree that there should at least be an option to disable dynamic window titles in Claude, and a command to set the window title would also be nice.
For iTerm2 you can prevent applications from changing the window title like so:
This is how I solved it for iTerm2 (might work with other terminals, untested).
~/.zshrc
# If you use oh-my-zsh, stop it from managing titles
export DISABLE_AUTO_TITLE="true"
# Function to set iTerm2 title to current directory name
function set_iterm_title() {
echo -ne "\033]0;${PWD##*/}\007"
}
# Run before each prompt
autoload -U add-zsh-hook
add-zsh-hook precmd set_iterm_title
Then like @mthaak said, change the Title, but instead uncheck all options, CHECK "Applications in terminal may change the title" and put \(session.jobName) as the Subtitle.
You'll then you'll always have your working directory as the title with the job it is working on below it. Ends up looking like:
I've been trying to figure something out for this too.
If I say: "lets talk about Cats" → "* Cat Discussion" If I say: "lets talk about Dogs" → "* Dog Discussion" If I say: "see the problem " → "* = Terminal window titles" etc.
It's nice it's trying to help. But I can't tell what any of my tabs are for at a glance - and being able to just set it as "Feature name" or "Discussion subject" --- would be very helpful.
I can use a different terminal program that lets me name the tab - but in my case, I'm teaching and creating videos and Hyper is the only terminal that lets me zoom in and out without changing it's window size. (I know that's a very niche dependency)
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
would this help? https://github.com/bluzername/claude-code-terminal-title
Adding my voice here - this feature becomes critical when using multi-agent frameworks.
I'm using BMAD which runs multiple specialized agents in parallel (PM, Architect, Dev, Infrastructure Sage, etc.). Each agent runs in its own Claude Code session, but all terminals show generic names like claude - infrastructure.
The pain point: When 4-5 agents are running simultaneously, there's no way to identify which terminal contains which agent without clicking into each one.
Ideal solution for agent frameworks:
- A
/titleslash command for manual setting - OR automatic title from skill/agent name when loaded via the Skill tool
- OR a programmatic API like
claude.setTerminalTitle()for custom commands
I investigated workarounds extensively:
- Bash escape sequences don't work (subprocess captures them as text)
-
/dev/ttyis not available - Hooks run in isolated subprocesses with same limitation
-
/renameonly affects--resumesession name, not terminal tab
Closing my duplicate issue #15802 and adding support here. 👍
My experience is that CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 is not honored when using either of these:
-
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 claude -c -
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 claude -r
I'm using Bash with:
$ claude --version
2.0.76 (Claude Code)
This is clearly a [BUG] but decided to add it here for now.
Also when starting with CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 claude (which does NOT overwrite the title), using the /resume command and selecting a session does overwrite the title.