CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 doesn't suppress ongoing title updates; /rename titles get overwritten
Resolved 💬 2 comments Opened Apr 13, 2026 by georgeleonardo Closed May 24, 2026
Summary
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 only prevents terminal title changes at startup/shutdown, but Claude Code continuously sends OSC 0 escape sequences to update the tab title with auto-generated conversation topics (e.g., repo-name · topic-summary · session-id). This means:
/renametitles get overwritten — After using/renameto set a custom tab title, the next conversation state change (new message, topic update) regenerates the title and overwrites it via OSC 0.
- The env var doesn't fully disable title updates —
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1guards startup/shutdown title changes but not the ongoing conversation-driven updates from the React effect that syncs the title.
Expected behavior
CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1should suppress all terminal title updates, including ongoing ones./renameshould set acustomTitlethat takes permanent precedence over auto-generated topic titles for the rest of the session.
Current behavior
After /rename, the title briefly updates but then reverts to the auto-generated format on the next state change:
my-project · some auto generated topic · abc123...
Environment
- Terminal: Ghostty (with
shell-integration-features = no-title) - Shell: zsh with Oh-My-Zsh (
DISABLE_AUTO_TITLE="true") - OS: macOS
Workaround
Using Ghostty's prompt_tab_title action to set a terminal-level title override that ignores all subsequent OSC sequences from programs.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗