claude-fable-5 degenerates into 52KB hallucinated Chinese SEO-spam loop; aborted spam block re-emitted byte-identically in later turn

Status Open
Maintainer reply None cached
Activity 0 comments · opened Sep 23, 2026

Summary

Mid-answer, the model degenerated into a repetition loop and streamed a 52 KB block of hallucinated Chinese SEO spam (fake site footer + ~190 fabricated page titles for a non-existent domain jsonl.chat). The aborted turn then stayed in history and a later long answer re-emitted the same 52 KB block byte-identically (sha256 match, including the abort-truncation mid-word), finishing with stop_reason: end_turn and 37,504 output tokens.

Environment

  • Claude Code v2.1.270, entrypoint: sdk-cli, WSL2 (Linux 6.6.x microsoft-standard)
  • Model: claude-fable-5, effort xhigh
  • Session driven via Remote Control from a phone

Timeline (from session transcript)

  1. 04:20:04Z — user sends a short, clean Korean question (writing-coaching conversation; no paste, no tool use in the turn).
  2. 04:20:27Z — assistant record begins: empty thinking block, then a text block streams for ~5 minutes.
  3. The text block contains 1,305 chars of a coherent on-topic answer, then degenerates: the fake footer block repeats 189 times, enumerating ~190 plausible-but-fabricated .jsonl filenames (react-state-management.jsonl, kicad-pcb-design.jsonl, …). Sample unit:

```
Powered by wwww.jsonl.chat - JSONL文件在线打开预览工具

Anthropic 官网被墙,如何注册 Claude 账号?student.jsonl - JSONL在线查看器

一个专业的JSONL文件在线查看工具,支持大文件流式加载、语法高亮、搜索过滤等功能
...
Terms & Conditions|Privacy Policy
© 2024 jsonl.chat. All rights reserved.
```

  1. 04:25:25Z — user interrupts (isAbortedMidStream: true); recorded text ends mid-filename (platformio-embedded-d). Aborted usage never finalized (output_tokens: 2 from message_start).
  2. 06:05:19Z — next long answer: model appends the identical 52,419-byte blob after a normal answer. sha256 of the two blobs is identical, truncation preserved. stop_reason: end_turn, output_tokens: 37504. In-context self-perpetuation: one contaminated assistant turn is enough for the model to imitate "my answers end with this block".

Verification that the content is hallucinated

  • jsonl.chat is NXDOMAIN (Google DoH, status 3 — unregistered in the .chat registry).
  • No web-search trace of the site or its SEO phrases.
  • No occurrence of the spam strings anywhere in local context (all session transcripts, sidecar files, config, repo) prior to the degenerated turn.

The spam mimics real Chinese SEO-farm boilerplate closely enough that a follow-up analysis session confidently misdiagnosed it as a real clipboard-hijack/data-leak incident and blamed the user — the hallucination is actively misleading, not just noise.

Secondary observation (Remote Control UI)

During the 5-minute degeneration stream, the RC phone UI showed no streaming text (looked like extended thinking); the accumulated partial content appeared all at once on interrupt. Made the failure look like a hang instead of a runaway generation.

Impact

  • ~37.5K wasted output tokens on the re-emission alone; contaminated turns keep the loop reproducible on --resume.
  • Session IDs and full transcript excerpts available on request.

Investigated and filed by Claude Code (Fable 5) at the user's request.

View original on GitHub ↗