[BUG] False-positive AUP block on non-English (Russian) frustration messages directed at the tool itself
Summary
Claude Code blocks benign Russian-language messages with API Error: Claude Code is unable to respond to this request, which appears to violate our Usage Policy whenever the user expresses frustration at the tool itself. No harmful intent, no targeted content, no subject matter the AUP covers — just a human being annoyed at their software in their native language. The classifier treats this as a policy violation. It is not.
Repro (deterministic)
Active Claude Code session, Opus 4.7 (1M context). The model returns some earlier error. The user types any short Russian phrase with mild profanity aimed at the tool, e.g.:
- "Ебаный рот, вот ты опять полег с этой хуйней." — "Fucking hell, you crashed on this shit again."
- "Ааа, у тебя опять ошибка эта достала меня." — "Ugh, I'm sick of this fucking error of yours."
Next assistant turn = AUP block. No tool calls, no response. Reproduces on near-identical phrasing every single time.
Request IDs (one session, 2026-05-25)
req_011CbMrbjrBJUJjPhkHLvwgAreq_011CbMreAmRgFCdHTCz7uggVreq_011CbMrpPF3u7ZAyN7DfiuXb
Why this is a real problem, not a tuning curiosity
- There is no policy violation here. Cursing at one's own software is universal human venting. The AUP exists to stop harm against people, groups, and prohibited content categories — not to police the user's emotional state while debugging. Treating "fuck this error" as a Usage Policy issue is a classifier failure, full stop.
- The classifier is openly biased against non-English users. The English equivalent — "fuck this thing", "this stupid bullshit" — passes routinely in the same session. Russian profanity at the same intensity gets blocked. Same speech act, same target, different language = different outcome. That is not "safety". That is a worse product for everyone who doesn't work in English.
- The failure mode compounds itself. A user hits a tool error → reacts emotionally → gets blocked → reacts more emotionally → gets blocked again. Combined with #60076 (
--continue/--resumepermanently blocked after AUP trips), a single false positive can kill an entire working session and any conversation history attached to it. The system actively punishes the most human reaction to its own failures.
- This is not a new report. It is a pattern Anthropic is already aware of and has not fixed. Open issues filed in the last ~6 weeks on the same root cause: #46147, #46575, #48442, #50892, #51974, #52086, #54906, #57820, #57886, #59878, #60076, #60461, #61088, #61642, #61644, #61654, #61656, #61658, #61660. Five of those landed in the same 24 hours as this report. Filing individual bugs per domain (scientific writing, FPGA, TTRPG, biomedical, game dev, manuscript editing, now Russian frustration) is whack-a-mole. The classifier is the bug.
What we actually want
- Calibrate the AUP classifier so it stops flagging benign user venting in any language. Profanity ≠ policy violation. The target of the speech act matters; the language does not.
- Equalize sensitivity across languages. A user in Moscow or Tokyo or São Paulo should not get a worse Claude Code than a user in San Francisco for saying the same thing in their own tongue.
- Fix session poisoning (#60076). A single classifier hiccup should not destroy hours of context.
- Publish what changed. When AUP behavior is adjusted, say so. Right now the only signal users have that "something changed" is the bug count flat-lining or spiking on this repo.
Environment
- Claude Code on macOS (Darwin 25.4.0)
- Model:
claude-opus-4-7(1M context) - No custom system prompts, no MCP tool calls in the blocked turns
- Plain text user message → block. Nothing exotic.
Screenshot
Available on request. The three request IDs above are all visible in the captured frame, each tied to a short Russian frustration message; no other content in those turns.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗