[Bug] Opus 5.5 ignores the CLAUDE.md language rule: 33% of replies in English vs 0% on Opus 5 (same session, same CLI)

Status Open
Reported on v2.1.283
Maintainer reply None cached
Activity 2 comments · opened Oct 5, 2026

Summary

Since switching to claude-opus-5-5, about one in three assistant messages shown to the user is written in English, even though both the global and the project CLAUDE.md require all answers in Korean, and I asked for Korean again more than 20 times in the same session.

The same session on claude-opus-5 with the same Claude Code version (2.1.283) and the same instructions produced zero English replies. This looks like a model regression, not a CLI change.

Measured (one long session, same CLAUDE.md, same CLI 2.1.283)

I counted every assistant text block in the session transcript (~/.claude/projects/<project>/<session>.jsonl).
A block counts as English when, after removing code blocks, inline code, URLs and file paths, it has no Hangul and at least 3 English words.

| Model | Period (UTC) | Korean blocks | English blocks | English share |
|---|---|---|---|---|
| claude-opus-5 | 2026-09-28 – 2026-09-30 | 108 | 0 | 0% |
| claude-opus-5-5 | 2026-10-01 – 2026-10-05 | 943 | 469 | 33% |

Earlier models in the same session (same instructions): claude-opus-4-7 133 / 10, claude-opus-4-8 464 / 4, claude-opus-5 (all versions) 522 / 0 (Korean / English).

Instructions in effect

  • Global ~/.claude/CLAUDE.md: 모든 답변은 한글, 존댓말로 합니다. ("Every answer in Korean, polite form.")
  • Project CLAUDE.md: 모든 답변은 한글로 해줘. 반드시 존댓말을 써줘. ("Answer everything in Korean. Always use the polite form.")
  • An auto-memory feedback file describing this exact failure, loaded every session.
  • 22 user messages in the session explicitly asking for Korean.

What it looks like

English shows up mostly in short progress lines between tool calls and at the start of final summaries — often right after an apology in Korean. Examples copied from the transcript:

  • It goes into the repo's handoff document (…), updated to the latest state. I'll read the current content first.
  • Yes. On my side, everything is done.
  • The file changed since I read it (because of the branch switch) …

The transcript stores these blocks in English, so this is not a terminal rendering problem.

Expected

Every user-facing message in Korean, as CLAUDE.md says — the way claude-opus-5 behaved in the same session.

Related: safeguards stop benign messages in the same session

Several benign turns were cut off by the safeguards in this session (9 "stopped by a safety classifier" notices). One example — the user message was only AI 추정 은 뭐야? 한글로 대답좀 해. ("What does 'AI estimate' mean? Please answer in Korean.") with a screenshot of our own app:

API Error: Opus 5.5's safeguards flagged this message (https://www.anthropic.com/legal/aup).
Details: [reasoning_extraction]
Request ID: req_011CfjLNUofNDx4Ft9FBkzqe
Message ID: msg_011CfjLNWEERKdi9qwd1Pv2M

Workaround tried (did not work)

A PreToolUse + Stop hook that read transcript_path and blocked when the latest assistant text was English. It never fired: when the hook runs, the text the model wrote just before the tool call (or just before stopping) is not yet in the transcript file. Example: text block timestamp 15:43:01.893Z, PreToolUse hook at 15:43:02 found no assistant text after the last tool result. The hook input has no field with that text either.
I removed the hook — a user should not need one for this.

Environment

  • Claude Code 2.1.283 (all numbers above), now 2.1.289
  • Model: claude-opus-5-5
  • macOS (darwin 25.3.0), tmux
  • Long agentic session with 24 auto-compactions
  • Feedback ID: fdd4fb33-7834-4550-86b6-089cbc63183d

View original on GitHub ↗

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