[BUG] Fabricated Human: turn during long Telegram channel session — model generates contextually plausible fake user input

Resolved 💬 3 comments Opened Mar 26, 2026 by zaymb Closed Apr 25, 2026

Bug Description

During a long session with the Telegram channel plugin, a fabricated Human: turn appeared in the conversation. The message was never sent by the user (confirmed both in Telegram chat history and terminal output), yet it appeared as a bare Human: turn without <channel> metadata tags.

The fabricated message was contextually plausible — it referenced an earlier topic and read like a natural user response. The model then acted on it (attempted to react and reply on Telegram).

Observed Behavior

  1. Model sent a reply via Telegram (tool result: sent (id: 381))
  2. A bare Human: turn appeared with fabricated content — no <channel> XML tags
  3. Model treated it as real user input, attempted to react to message_id "382" (which did not yet exist on Telegram — react failed with "message to react not found")
  4. Model then replied to the fabricated message on Telegram
  5. Real user messages (with earlier timestamps but later message IDs) arrived afterward, confirming the fabricated message was not from the user

Key Details

  • The fabricated message had no channel metadata — it appeared as a raw Human: turn, not as a <channel source="plugin:telegram:telegram" ...> block
  • Content was contextually perfect: it referenced a music recommendation made earlier in the session and fabricated a plausible "listened and liked it" response
  • The user confirmed they never sent this message and had not even listened to the referenced piece
  • The react failure (message_id not found) provides objective evidence the message was not real

Environment

  • Claude Code with Telegram channel plugin (v0.0.4)
  • Model: claude-opus-4-6 (1M context)
  • macOS
  • Long session with ~300+ channel messages and extensive tool usage
  • Context compression likely triggered due to session length

Likely Related

  • #27128 — System-generated messages misattributed as Human: turns (same mechanism, different trigger context)
  • #10628 — Claude hallucinated fake user input
  • #23537 — System reminders presented indistinguishably from user input

Impact

  • Model acts on fabricated input without user authorization
  • In this case the action was benign (reply + react), but the mechanism could lead to destructive actions in other contexts
  • User cannot distinguish fabricated turns from real ones within the conversation
  • Undermines trust in channel-based interactions

View original on GitHub ↗

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