[BUG] Model emits Cyrillic homoglyphs in generated identifiers (branch names)
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?
Environment: Claude Code on the web (remote execution); model claude-opus-4-8[1m].
What happened: While generating git checkout -b commands, the model produced branch-name suffixes containing a Cyrillic small letter "м" (U+043C) in place of ASCII "m" (U+006D) — visually identical, different codepoint. Observed twice in one session:
claude/yfinance-seam-Lм4dp (intended ...-Lm4dp-style ASCII)
claude/edge-metamorphic-tests-Wм (intended an ASCII suffix)
Both were caught at creation and recreated as pure-ASCII branches before anything was pushed, so no corrupted ref reached the remote.
Why it matters: A homoglyph in an identifier looks correct to a human reviewer but is a distinct string — it can break branch lookups, grep, CI matching, and any tooling that assumes ASCII refs, and is hard to spot in review. Same risk applies to any generated identifier (filenames, variable names, env-var keys).
Frequency: 2 occurrences in one long session; appeared when the model was improvising an identifier suffix rather than copying a provided one.
Suggested mitigations: (a) constrain/normalize generated identifiers to ASCII; (b) the model should prefer a provided suffix over inventing one; (c) consider a homoglyph guard on tool-call arguments that are shell/git identifiers.
Cannot confirm: whether this is new vs. longstanding behavior — reporting observed facts only.
What Should Happen?
The branch names should use the encoding for the project, and not look alike but distinct encodings.
Error Messages/Logs
Steps to Reproduce
While generating git checkout -b commands, the model produced branch-name suffixes containing a Cyrillic small letter "м" (U+043C) in place of ASCII "m" (U+006D) — visually identical, different codepoint. Observed twice in one session:
claude/yfinance-seam-Lм4dp (intended ...-Lm4dp-style ASCII)
claude/edge-metamorphic-tests-Wм (intended an ASCII suffix)
Both were caught at creation and recreated as pure-ASCII branches before anything was pushed, so no corrupted ref reached the remote.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude code on the Web
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
Android client. Github repo.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗