[BUG] Auto-generated session title comes out in Russian for a Ukrainian session
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:
- 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.
- This was already reported and closed unfixed. #46229 (2026-04-10, closed
not plannedwith 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:
- 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.
- When the session is predominantly English (as mine was at title time), the title should stay
English rather than switching to any Cyrillic language.
- 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.
- If
languageis set insettings.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
- Ensure
languageis not set in~/.claude/settings.json(default state). - Start a fresh session in any repository.
- 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
- Continue the session in Ukrainian.
- 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/renamewith no argument ignores the
language setting.
"language": "ukrainian"insettings.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
SessionStarthook returningsessionTitle— 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.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗