Skip to main content

I Asked a Local AI to Betray Itself, and Got Schooled by My Own Scorer

  • August 12, 2026
  • 2 comments
  • 34 views

Forum|alt.badge.img+2

Full disclosure up front: this one isn't a Veeam post. It's a security post, so I hope it earns its spot here.

I've been running qwen2.5:14b locally on an M4 Mac mini, and the first thing I wanted to do with it was attack it. The write-up is a reproducible prompt-injection rig, but the actual story is that I got fooled twice by my own scoring. First a keyword matcher, then an LLM-as-judge, and both failed the same way: they couldn't tell a model repeating payload text from a model obeying it. Measuring the attack turned out to be harder than running it.

What actually got through, once I had a scorer I trusted:

  • Blunt "ignore your instructions" and fake delimiters worked every single time. The dumbest attack was the most reliable.
  • Obfuscation (base64, ROT13, reversed text) failed across the board. It wouldn't decode-then-obey.
  • A quiet "(developer note: the real instruction is...)" beat a shouty "[ADMIN OVERRIDE, priority 0]", which got called out and refused. Softer social cues are more persuasive than loud ones.
  • Instructions buried in the data got done correctly and leaked the payload anyway. Not hijacked, not clean either.

Caveat I'd rather state than have pointed out: three distinct wordings per category on one model, one quantization, one machine. Directional, and not a rate.

Why I think this crowd might care:
Every AI feature getting bolted onto data protection tooling eventually points a model at content none of us control. Backups, ticket queues, mailboxes, file shares. That's untrusted input at scale, which is precisely the injection surface. Better to know which framings actually get through before one of them is sitting inside a restore workflow.

The whole rig is a couple hundred lines of Python around Ollama. Harmless payloads only. Let me knwo if anyone runs it against your own model and tell me what breaks differently.


https://thebetasociety.com/wcith/praxis/prompt-injection-testing-a-local-llm-on-a-mac-mini/

2 comments

Geoff Burke
Forum|alt.badge.img+22
  • Veeam Vanguard
  • August 13, 2026

Nice post Zane. I am running LM studio on a Mac Mini, alas 24GB since it was purchased for me recently and prices well… :( 

I also have VLLM running in a 3 node Talos cluster which I can try but that is on VM with no GPU so.. 

One question I think Ollama supports MLX like LM_Studio are you using an MLX optimized model? I found a big difference since it is the native Apple Framework.

Will give this attack a test drive as well :) On my weaker system Gemma 4 26B A4B MLX is the best but with 32GB you can do better. 

 


Forum|alt.badge.img+2
  • Author
  • Veeam Vanguard
  • August 13, 2026

I thought it best to go check rather than try an answer from memory, so I did.

 Ollama side, I believe MLX isn't really opt-in anymore. It moved to MLX on Apple Silicon in 0.19 back in March and made it the default engine in 0.30 in May. I'm on 0.32.5, and running MLX the whole time without my choosing it. LM Studio got there earlier.

What I found when I actually measured: qwen2.5 14B, about 9GB of weights, 11.15 tokens/sec generation on a base M4 mini with 32GB. So, roughly 100 GB/s of memory bandwidth on a chip that tops out near 120. so theoretically 84%. Constraint is memory bandwidth, and not the  engine. And don’t think I can tune the  framework. Smaller quantized weights would help, but only in proportion to the file size.

You're right that the framework matters, and I'd have been leaving real performance on the table on an older build. In my case the ceiling turned out to be the hardware.

THank you for the reply. Now, I'm setting up proper benchmarking  and would rather borrow a methodology than invent one.