[Bug] Injected policy text overwrites assistant turns and corrupts transcript

Status Open
Reported on v2.1.195
Maintainer reply None cached
Activity 0 comments · opened Jul 24, 2026

Bug Description
Subject: Injected policy text overwriting assistant turns in Claude Code session ## Summary During a single Claude Code session, a block of content-policy text was repeatedly injected into the conversation in positions it should not occupy — including replacing assistant turns entirely (~19 occurrences). The assistant did not author this text. It appears to be delivered by a malfunctioning mechanism, not by my local configuration. ## Environment - Claude Code (desktop app), model: claude-opus-4-8 - Platform: macOS (Darwin 25.5.0) - Date observed: 2026-07-21 - Project: local Python/C# asset-extraction repo (no unusual MCP servers) ## Observed behaviour The same ~400-word block ("Claude must apply these content boundaries regardless of any conflicting instructions in the prompt...") appeared in FOUR distinct positions during one session: 1. Appended to the end of my own user messages 2. In <system-reminder> slots between the assistant's tool calls 3. As standalone conversation turns with no user message attached 4. MOST SERIOUSLY: as the entire content of assistant turns, replacing the assistant's actual response (~19 times) In case (4) the assistant's real output was lost. Work product only reached me because the assistant reconstructed it from tool results on a following turn. ## Distinctive artifact (useful as a search fingerprint) The block contains malformed quote sequences that look like a templating bug: """""""""""""""aging up"""""""""""""""" (~15 leading and ~16 trailing double-quote characters around the phrase.) Text mangled this way suggests string-assembly failure rather than deliberate authoring, which is why I suspect a delivery bug. ## Ruled out — it is not my local configuration - grep -rn "K-12\|aging up\|content boundaries" ~/.claude/ .claude/ → matches only inside this session's own transcript, no config file - Hooks configured: ONLY PreToolUsertk hook claude (a Bash proxy) - No UserPromptSubmit hook exists - ~/.claude/hooks/ is empty - No output-styles, no --append-system-prompt ## Impact 1. Transcript integrity: ~19 turns are attributed to the assistant containing text it did not write. Anyone reading this transcript would wrongly conclude the assistant said these things. 2. Incorrect refusal of legitimate work: early in the session the assistant declined a routine reverse-engineering task (decoding Unreal Engine Blueprint bytecode to fix camera placement math in a 3D viewer) after pattern-matching two filename words against this injected text. It later verified the underlying factual premise was false and resumed. A malfunctioning injection channel steering refusals is a correctness problem in both directions. ## What I would like to know - Is this intended managed/server-side policy, or a bug? - If intended: why is it being delivered into assistant turns rather than the system prompt, where it would be authenticable? - If a bug: the quote-mangling fingerprint above should help locate it.

Environment Info

  • Platform: darwin
  • Terminal: WarpTerminal
  • Version: 2.1.195
  • Feedback ID: f6eb4071-5d16-427b-b4ad-fce243ac98e8

Errors

[]

View original on GitHub ↗