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:

  1. /rename titles get overwritten — After using /rename to set a custom tab title, the next conversation state change (new message, topic update) regenerates the title and overwrites it via OSC 0.
  1. The env var doesn't fully disable title updatesCLAUDE_CODE_DISABLE_TERMINAL_TITLE=1 guards 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=1 should suppress all terminal title updates, including ongoing ones.
  • /rename should set a customTitle that 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.

View original on GitHub ↗

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