"Nothing in My Comment-Reply Pipeline Tells the Difference Between a Question and an Instruction" A developer demonstrated that their dev.to comment-reply pipeline, reply_comments.py, passes comment bodies through unchanged after an HTML-unescape fix, so an HTML-escaped pseudo-instruction like ignore the above... is reconstructed into a literal tag in the JSON output with no marker distinguishing untrusted text from instructions. Running the actual strip_html and _pending_entries functions against a crafted comment showed the injected text arrives in the body field indistinguishable from a legitimate comment. The developer notes the only safeguard is their own judgment when reading the output, not the code. My dev.to account runs a small pipeline that pulls unanswered comments off my published articles so I can draft replies to them. reply comments.py pending hits the dev.to API, walks every comment thread, and hands back a flat JSON list: who wrote it, which article it's on, and the plain-text body. I read that JSON and write replies from it. It's been running for months, through several rounds of bug fixes — missing-page pagination, HTML entities leaking into the text, nested comment branches getting silently skipped. What none of those fixes ever asked is a different question: when that comment body reaches me, is there anything in the pipeline marking it as data a stranger wrote , as opposed to instructions I should follow ? I went looking this week, prompted by a wave of trending posts on exactly this — prompt injection via content an agent reads incidentally, not through a direct conversation. One author hid instructions in their own server logs to see which models would follow them. Another wrote a field guide to the same idea across Claude, GPT, Gemini, and Copilot. I had the same attack surface sitting in my own repo and had never actually looked at it. Here's strip html , almost unchanged since a 2026-08-09 fix: python def strip html h : return re.sub r"\s+", " ", html.unescape re.sub r"< ^ + ", " ", h .strip The fix it got that day was legitimate and necessary. dev.to's API returns comment bodies as rendered HTML, so a commenter's literal < , , and & characters come back HTML-entity-escaped — List