[FEATURE] Expose Terminal Title Customization (like statusLine)

Resolved 💬 3 comments Opened Feb 6, 2026 by donvince Closed Feb 10, 2026

Problem Statement:

Claude Code already sets terminal titles to "Claude Code" (added in v2.1.6) and has terminal title animation capability (v2.1.7 changelog). Please expose this as a user-configurable setting similar to statusLine.

When running multiple Claude Code sessions, I want to quickly identify:

  • Which model is being used (Sonnet 4.5, Opus 4.6, etc.)
  • Session state (thinking, ready, waiting for input)
  • Which repo/project the session is working in

This helps identify when Claude is blocking on my input vs working autonomously.

https://github.com/user-attachments/assets/87dc9165-da2d-46e5-aa67-9efa2c506c5f

Proposed Solution:

Add a user-configurable setting similar to statusLine:

{
  "terminalTitle": {
    "type": "command",
    "command": "python3 ~/.claude/get_title.py"
  }
}

Or template-based:

{
  "terminalTitle": "Claude [{model}] - {repo}"
}

Use Case Example:

  1. Running multiple Claude Code sessions in different terminal tabs
  2. Want to see session state (thinking, ready, waiting) directly in tab titles
  3. Current workaround requires checking each tab individually, breaking focus

Would also be useful to identify which model is active in each tab (Sonnet 4.5 vs Opus 4.6).

With terminal title customization, the tab title would automatically update to show state and context.

Supporting Evidence:

  • v2.1.6: "Changed terminal title to 'Claude Code' on startup"
  • v2.1.7: "Fixed terminal title animation jitter by using fixed-width braille characters"
  • statusLine configuration already provides similar customization below the prompt

Additional Context:

The key insight: Claude Code already implements dynamic terminal titles (evidenced by the animation feature in v2.1.7). This feature request is asking to expose what already exists as a user-configurable setting, similar to how statusLine works today.

This significantly increases likelihood of acceptance because it's configuration of existing functionality rather than implementing new behavior.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗