[BUG] Auto-generated session title comes out in Russian for a Ukrainian session

Status Open
Reported on v2.1.100
Maintainer reply None cached
Activity 1 comment · opened Jul 30, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The auto-generated session name for a Ukrainian/English session is generated in Russian.

My session — a Ukrainian-language code documentation task in a Ukrainian-commented repository — was
named:

Что такое контракт и его название

Nothing in the session is Russian. My prompts were English and Ukrainian, Claude's answers were
Ukrainian, the repository's code comments are Ukrainian. The only Cyrillic token in my opening message
was the word контракт, which is spelled identically in Ukrainian and Russian — and the language was
resolved to Russian.

This name is not cosmetic: it is mirrored into the terminal tab title and the /resume picker, so it
stays visible for the whole session and, in a shared screen or a screenshot, misattributes the user's
language.

Two aggravating details:

  1. It is decided once and persisted. The title was produced from the first exchange and never

re-evaluated, even though everything that followed was unambiguously Ukrainian.

  1. This was already reported and closed unfixed. #46229 (2026-04-10, closed not planned with the

stale label on 2026-05-23) is the same misclassification on 2.1.100 — and in that report the user
had "language": "Ukrainian" explicitly set in settings.json and still got Russian. So the
documented setting is not a reliable workaround, and the behaviour has survived ~120 releases.

The open issues I could find on session-title language (#72004, #73111) are the opposite problem —
English titles for non-English sessions. This report is specifically about the wrong language being
picked within Cyrillic script
.

What Should Happen?

The title should never be written in a language for which the session contains no evidence.
Concretely:

  1. A single token shared between languages must not decide the language. контракт, банк, план

and similar are identical in Ukrainian and Russian; they carry no signal either way.

  1. When the session is predominantly English (as mine was at title time), the title should stay

English rather than switching to any Cyrillic language.

  1. When Cyrillic genuinely dominates but the specific language is ambiguous, the resolution should

consider the actual evidence available — repository content, CLAUDE.md, OS locale — rather than
defaulting to the statistically most common Cyrillic language.

  1. If language is set in settings.json, it must win outright (this is what #46229 reported failing).

Cyrillic is used by Ukrainian, Bulgarian, Serbian, Macedonian and Kazakh among others, so a
Russian-by-default resolution mislabels a large group of users.

Error Messages/Logs

No error is produced — the title is simply generated in the wrong language.

Steps to Reproduce

  1. Ensure language is not set in ~/.claude/settings.json (default state).
  2. Start a fresh session in any repository.
  3. Send a first message that is mostly English but contains one Cyrillic word that Ukrainian and

Russian share, e.g.: what is "контракт" and why it is called so

  1. Continue the session in Ukrainian.
  2. Look at the terminal tab title / the session name in /resume.

Observed: a Russian title (Что такое контракт и его название).
Expected: an English or Ukrainian title, per "What Should Happen?" above.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.220 (Claude Code)

Platform

Anthropic API

Operating System

macOS 26.5.2 (build 25F84), Apple silicon

Terminal/Shell

VS Code integrated terminal, zsh

Additional Context

Workarounds I am aware of, and why none of them closes this:

  • /rename — manual, per session, and #81565 reports that /rename with no argument ignores the

language setting.

  • "language": "ukrainian" in settings.json — per #46229 it did not fix the misclassification for

that reporter; and the setting is documented as "Preferred language for Claude responses and voice
dictation", so it also forces every assistant response into Ukrainian, which is not what I want.

  • A SessionStart hook returning sessionTitle — works, but it replaces the feature rather than

fixing it.

Related but distinct, so not filed here: there is no way to control the title language independently
of the response language. I am happy to open that as a separate feature request if it would be useful.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗