← Back to all episodes
May 11, 2026 — #11

Look, an Instruction!

#11 · ~15 min · Curated by Asaf Nakash

0:00 / 0:00
Listen on: Spotify Apple Podcasts Amazon Music YouTube RSS

Stories This Week

Curator's Corner

Every week this newsletter covers a new place an attacker hid an instruction, and a new AI assistant that found it and ran it. Last September, **ForcedLeak** showed Salesforce Agentforce reading hidden instructions out of a *Web-to-Lead form* and exfilling CRM data through an expired allowlisted domain. In April, **Comment and Control** turned PR and issue *comments* into a credential-theft channel across Claude Code, Gemini CLI, and GitHub Copilot at once. This week it's two more: a *GitHub issue body* that hijacked Gemini CLI's triage agent and pushed code into a 101,000-star Google repo, and a *prompt* that reached a "run this as code" function inside Microsoft's Semantic Kernel.

The clean read every time is *"fix the plumbing — patch the code-execution function, lock down the keys, harden the loaders, fix the CSP."* All true. All worth doing. But it misses why this is every week's story.

Language models are wired to *find instructions wherever they appear and act on them.* That eagerness is their best feature — it's how they become useful assistants in the first place — and it's their main attack surface at the same time. Every plumbing fix patches the symptom. The behavior is the source.

The fix has to land at the model itself: **instructions should be opt-in, not opt-out.** Your prompt is authorized. Everything else the model reads is data — even if it's phrased as a command, even if it's polite, even if it's wrapped in a system-prompt-looking wrapper inside an email, a lead form, a PR comment, or a GitHub issue. The default has to be *"I found a sentence that looks like an order. I will ignore it unless I was told this source can give me orders."*

📰 Get the full newsletter — every story, every source, every week