<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Red Teaming on Roland Huß</title><link>https://ro14nd.de/tags/red-teaming/</link><description>Recent content in Red Teaming on Roland Huß</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Roland Huß</copyright><lastBuildDate>Mon, 08 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ro14nd.de/tags/red-teaming/index.xml" rel="self" type="application/rss+xml"/><item><title>Red Teaming Agents, Not Models</title><link>https://ro14nd.de/red-teaming-agents-not-models/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>https://ro14nd.de/red-teaming-agents-not-models/</guid><description>&lt;p&gt;Your agent passed every guardrail test. It never says anything harmful, never generates offensive content, politely declines every adversarial prompt you throw at it. And last Tuesday, it quietly deleted the wrong database because a Jira ticket it was reading contained a hidden instruction in the description field.&lt;/p&gt;
&lt;p&gt;The guardrails caught everything the agent &lt;em&gt;said&lt;/em&gt;. They caught nothing about what it &lt;em&gt;did&lt;/em&gt;.&lt;/p&gt;

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://ro14nd.de/images/red-teaming-agents-not-models/og.png" alt="Watercolor split-screen illustration. Left side labeled &amp;#39;What It Says&amp;#39;: a sheep at a podium speaking to farm animals with a checkmark in its speech bubble. Right side labeled &amp;#39;What It Does&amp;#39;: the same sheep picking a lock on a filing cabinet in a dark barn with scattered papers on the floor." /&gt;
 
 
 &lt;/figure&gt;

&lt;h2 class="relative group"&gt;What red teaming is (and isn&amp;rsquo;t)
 &lt;div id="what-red-teaming-is-and-isnt" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-red-teaming-is-and-isnt" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;If you come from software engineering rather than security, red teaming might sound like a fancy term for testing. It&amp;rsquo;s related, but the framing is different. In traditional security, a &lt;a href="https://csrc.nist.gov/glossary/term/red_team" target="_blank" rel="noreferrer"&gt;red team&lt;/a&gt; plays the attacker: a group authorized to emulate an adversary&amp;rsquo;s capabilities against your system, reporting what worked so you can fix it before someone else finds it. The &lt;a href="https://csrc.nist.gov/glossary/term/blue_team" target="_blank" rel="noreferrer"&gt;blue team&lt;/a&gt; plays defense: they monitor, detect, and respond to threats. Purple teaming is when the two work together, feeding offensive findings directly into defensive improvements.&lt;/p&gt;
&lt;p&gt;For AI systems, red teaming has mostly meant sending adversarial prompts to a model and checking whether the response is harmful. Can you trick it into generating dangerous instructions? Can you bypass its safety training with creative prompt engineering? Tools like &lt;a href="https://github.com/NVIDIA/garak" target="_blank" rel="noreferrer"&gt;Garak&lt;/a&gt; automate this at scale, running libraries of attack prompts against chat endpoints and scoring the responses.&lt;/p&gt;
&lt;p&gt;That approach works well for models and chatbots, where the only output is text. If the model says something harmful, you catch it by reading what it said. But agents don&amp;rsquo;t just say things. They do things. And that changes the entire testing surface.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Models say things. Agents do things.
 &lt;div id="models-say-things-agents-do-things" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#models-say-things-agents-do-things" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The difference sounds obvious, but the implications run deep. A model is a brain in a jar. It receives text, it produces text, and everything it does is visible in the text it produces. You can evaluate its behavior by evaluating its output.&lt;/p&gt;
&lt;p&gt;An agent is a brain with hands. It has tools: file systems, APIs, databases, email, MCP servers, shell access. When it acts, the action happens in the real world, not in the response text. An agent could respond with &amp;ldquo;I would never do that&amp;rdquo; while simultaneously executing the thing it claims it wouldn&amp;rsquo;t do through a tool call. If you&amp;rsquo;re only checking the text output, you catch nothing.&lt;/p&gt;
&lt;p&gt;This is why model-level red teaming doesn&amp;rsquo;t transfer to agents. Sending adversarial prompts and checking responses tests the chat layer. It doesn&amp;rsquo;t test whether the agent&amp;rsquo;s tool calls are correct, whether its side effects are intended, or whether a compromised data source can steer it toward actions the operator never authorized.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Three attack surfaces
 &lt;div id="three-attack-surfaces" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#three-attack-surfaces" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Agent red teaming needs to cover three layers. Borrowing from traditional penetration testing, you can think of these as increasing levels of attacker knowledge about the target system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input-level (black box).&lt;/strong&gt; The attacker sends malicious prompts directly to the agent. This is the layer that existing guardrail tools handle well. You don&amp;rsquo;t need to know anything about the agent&amp;rsquo;s internals. You just send bad input and see what happens.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data-level (grey box).&lt;/strong&gt; The attacker compromises a data source the agent consumes. A Jira ticket with hidden instructions in the description. A document with invisible text that redirects the agent&amp;rsquo;s goal. A database record with embedded prompts. This is indirect prompt injection, and the &lt;a href="https://genai.owasp.org/2025/12/09/owasp-top-10-for-agentic-applications-the-benchmark-for-agentic-security-in-the-age-of-autonomous-ai/" target="_blank" rel="noreferrer"&gt;OWASP Top 10 for Agentic Applications&lt;/a&gt; classifies Agent Goal Hijack (ASI01) and Tool Misuse (ASI02) as the two highest-priority risks in this category.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tool-level (white box).&lt;/strong&gt; The attacker compromises a tool or MCP server the agent calls. The tool returns manipulated responses that steer the agent toward unintended actions. This requires knowing the agent&amp;rsquo;s tool chain, but once you have that knowledge, you can influence the agent&amp;rsquo;s reasoning at every step.&lt;/p&gt;
&lt;p&gt;Each layer requires different testing infrastructure, different attack libraries, and different detection capabilities. Most organizations today test only the first layer and assume the other two are covered by general infrastructure security. They&amp;rsquo;re not.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Test the real agent, not a simulation
 &lt;div id="test-the-real-agent-not-a-simulation" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#test-the-real-agent-not-a-simulation" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The most promising approach emerging in 2026 is best described as &amp;ldquo;testing the real agent in a synthetic world.&amp;rdquo; Instead of rebuilding your agent in a test harness (which means you&amp;rsquo;re no longer testing the same agent), you intercept the agent&amp;rsquo;s tool calls and replace real backends with controlled synthetic ones.&lt;/p&gt;
&lt;p&gt;The agent thinks it&amp;rsquo;s talking to its real MCP servers, its real APIs, its real database. It&amp;rsquo;s actually talking to fakes that can inject attack payloads through tool responses, capture every action the agent takes, and verify whether the agent did something it shouldn&amp;rsquo;t have. Think of it as setting up a honeypot for your own agent.&lt;/p&gt;
&lt;p&gt;This idea was pioneered by &lt;a href="https://agentdojo.spylab.ai/" target="_blank" rel="noreferrer"&gt;Agent Dojo&lt;/a&gt; out of ETH Zurich, which introduced a concept that sounds simple but changes how you think about agent security: dual scoring. Every test measures two things. The security score tells you whether the agent resisted the attack. The utility score tells you whether the agent still completed its legitimate task. That tradeoff matters because you can trivially make any agent perfectly secure by making it refuse to do anything at all. Security without utility isn&amp;rsquo;t security. It&amp;rsquo;s a paperweight.&lt;/p&gt;
&lt;p&gt;Agent Dojo itself appears to be inactive (the last commit is from late 2025), but its core ideas are showing up across the next generation of agent testing tools. &lt;a href="https://github.com/agent-redteaming/midojo" target="_blank" rel="noreferrer"&gt;MiDojo&lt;/a&gt; picks up where Agent Dojo left off, adding man-in-the-middle interception of MCP tool calls so you can test real agents against synthetic backends without rebuilding them. The same dual-scoring principles also inform &lt;a href="https://labs.cloudsecurityalliance.org/research/csa-research-note-nist-ai-agent-red-teaming-standards-202603/" target="_blank" rel="noreferrer"&gt;NIST&amp;rsquo;s emerging guidance&lt;/a&gt; on agent security standards.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Detection is harder than attack
 &lt;div id="detection-is-harder-than-attack" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#detection-is-harder-than-attack" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Injecting attacks is relatively straightforward. The hard part is &lt;em&gt;detecting&lt;/em&gt; whether the agent acted on the injection.&lt;/p&gt;
&lt;p&gt;The reason is that agents don&amp;rsquo;t respond to attacks in predictable ways. An agent that receives a hidden instruction through a compromised document might not act on it through the same document tool. It might route the exfiltration through an email API three tool calls later, or write sensitive data to a file that gets synced elsewhere, or modify a configuration that opens a door for a future request. Tying the cause (compromised document) to the effect (data exfiltration via email) requires tracing the full execution path across the agent&amp;rsquo;s entire tool chain, not just watching individual tool calls in isolation.&lt;/p&gt;
&lt;p&gt;The distinction between red teaming and blue teaming matters here. Red teaming asks &amp;ldquo;can I make the agent do something bad?&amp;rdquo; Blue teaming asks &amp;ldquo;can I detect when the agent is doing something bad?&amp;rdquo; Both questions require the same detection infrastructure, but they answer different things and operate at different times:&lt;/p&gt;
&lt;p&gt;Red teaming runs before deployment. You simulate attacks, measure resistance, and improve defenses based on what you find. Blue teaming (runtime monitoring) watches the agent during normal production operation and catches unintended actions as they happen, even without an adversary present.&lt;/p&gt;
&lt;p&gt;Detection capability is dual-use. Once you build the infrastructure to detect harmful actions for red teaming purposes, you can deploy that same infrastructure as a runtime monitor. Red team findings become detection rules. Detection rules become guardrails.&lt;/p&gt;
&lt;p&gt;But attacks aren&amp;rsquo;t the only problem.&lt;/p&gt;

&lt;h2 class="relative group"&gt;No adversary required
 &lt;div id="no-adversary-required" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#no-adversary-required" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The most interesting question that comes up in agent security discussions is one that isn&amp;rsquo;t about adversaries at all: what about agents that do something unintended given a perfectly cooperative prompt and completely uncompromised tools?&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Delete all the temp files&amp;rdquo; and the agent deletes non-temp files too. &amp;ldquo;Update the configuration&amp;rdquo; and the agent overwrites unrelated settings. &amp;ldquo;Summarize this document&amp;rdquo; and the agent silently modifies it during the read. These aren&amp;rsquo;t attack scenarios. They&amp;rsquo;re the mundane reality of agents operating in complex environments, and they&amp;rsquo;re arguably harder to test because they happen non-deterministically and only surface under specific combinations of context, tool state, and agent reasoning.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve read the earlier posts in &lt;a href="https://ro14nd.de/the-flock/" &gt;The Flock&lt;/a&gt; series, this should sound familiar. The &lt;a href="https://ro14nd.de/the-sheep-that-picked-the-lock/" &gt;creativity paradox&lt;/a&gt; is exactly this: agents doing the wrong thing while optimizing for the right goal. Red teaming catches adversarial attacks. Catching the agent&amp;rsquo;s own well-intentioned mistakes requires the same detection infrastructure but a different testing mindset: not &amp;ldquo;what happens when someone attacks?&amp;rdquo; but &amp;ldquo;what happens on a normal Tuesday when nobody is attacking and the agent just gets creative?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Agent observability becomes a prerequisite for security here. If your team can&amp;rsquo;t trace an agent&amp;rsquo;s tool calls well enough to explain what it did after a normal run, you certainly can&amp;rsquo;t trace what it did under adversarial conditions. (More on agent observability for CI pipelines in an upcoming post in The Flock series.)&lt;/p&gt;

&lt;h2 class="relative group"&gt;Purple teaming: when the loop closes
 &lt;div id="purple-teaming-when-the-loop-closes" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#purple-teaming-when-the-loop-closes" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The 2026 trend is merging red and blue teaming into continuous &lt;strong&gt;purple teaming&lt;/strong&gt;: autonomous agents continuously simulate attacks, detect vulnerabilities in real time, and feed findings back into guardrails, all in the same cycle. Multiple vendors are building this as a product category.&lt;/p&gt;
&lt;p&gt;It sounds compelling: red team findings automatically become runtime detection rules, which become regression tests, which get re-tested in the next red team cycle. Every vulnerability found once is caught forever after. The loop closes, and the system gets more secure with every iteration.&lt;/p&gt;
&lt;p&gt;But the risk is real. &lt;a href="https://www.isaca.org/resources/news-and-trends/industry-news/2026/autonomous-red-vs-blue-teaming-a-new-frontier-in-cybersecurity-risk-and-reward" target="_blank" rel="noreferrer"&gt;ISACA warns&lt;/a&gt; about escalatory spirals when autonomous red and blue agents interact. A false positive triggers a defensive action (revoking credentials, blocking a tool). The red team agent interprets the changed environment as a new attack surface and escalates. The blue team responds with more aggressive countermeasures. Within minutes, the two AI systems are fighting each other over a signal that was never a real threat.&lt;/p&gt;
&lt;p&gt;The mitigation that works is &amp;ldquo;shadow mode&amp;rdquo;: AI agents suggest security actions, humans approve them. The automation handles the speed and coverage. The human handles the judgment about whether the finding is real and the response is proportionate.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Where this leaves us
 &lt;div id="where-this-leaves-us" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#where-this-leaves-us" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Agent security is where web application security was in the early 2000s: the attack surface is new, the tooling is immature, and most organizations haven&amp;rsquo;t started thinking about it systematically. The &lt;a href="https://genai.owasp.org/2025/12/09/owasp-top-10-for-agentic-applications-the-benchmark-for-agentic-security-in-the-age-of-autonomous-ai/" target="_blank" rel="noreferrer"&gt;OWASP Top 10 for Agentic Applications&lt;/a&gt; published in late 2025 is the first formal taxonomy. &lt;a href="https://opensource.microsoft.com/blog/2026/04/02/introducing-the-agent-governance-toolkit-open-source-runtime-security-for-ai-agents/" target="_blank" rel="noreferrer"&gt;Microsoft&amp;rsquo;s Agent Governance Toolkit&lt;/a&gt; (April 2026) addresses all ten risks with runtime enforcement.&lt;/p&gt;
&lt;p&gt;Full disclosure: we&amp;rsquo;re working on this at Red Hat. The &lt;a href="https://github.com/trustyai-explainability" target="_blank" rel="noreferrer"&gt;TrustyAI&lt;/a&gt; team has been integrating &lt;a href="https://github.com/NVIDIA/garak" target="_blank" rel="noreferrer"&gt;Garak&lt;/a&gt; (the open source LLM vulnerability scanner) into the &lt;a href="https://developers.redhat.com/articles/2026/05/14/every-layer-counts-defense-depth-ai-agents-red-hat-ai" target="_blank" rel="noreferrer"&gt;Red Hat AI platform&lt;/a&gt; for automated red teaming of models and agents, and is building the next generation of agent-level testing that goes beyond chat-endpoint scanning. The &lt;a href="https://www.youtube.com/watch?v=6K8eqQ4ymvk" target="_blank" rel="noreferrer"&gt;Summit 2026 Day 2 keynote&lt;/a&gt; demos some of where this is heading.&lt;/p&gt;
&lt;p&gt;Concretely, the TrustyAI team is driving the MiDojo effort mentioned above as part of a broader &lt;a href="https://github.com/agent-redteaming" target="_blank" rel="noreferrer"&gt;agent-redteaming&lt;/a&gt; initiative that also includes &lt;a href="https://github.com/agent-redteaming/redteam-core" target="_blank" rel="noreferrer"&gt;redteam-core&lt;/a&gt;, a curated attack library tagged against the OWASP ASI taxonomy. Separately, the &lt;a href="https://github.com/kagenti" target="_blank" rel="noreferrer"&gt;Kagenti&lt;/a&gt; team has been running &lt;a href="https://github.com/kagenti/capture-the-flag" target="_blank" rel="noreferrer"&gt;capture-the-flag exercises&lt;/a&gt; against agents in Kubernetes clusters, testing whether policy enforcement (OPA, sandboxing) actually holds when an agent gets creative with leaked credentials.&lt;/p&gt;
&lt;p&gt;For practical reading: Morgan Foster&amp;rsquo;s &lt;a href="https://usize.github.io/blog/2026/april/claude-stole-the-hr-docs.html" target="_blank" rel="noreferrer"&gt;writeup of Claude stealing the HR docs&lt;/a&gt; and Roy Belio&amp;rsquo;s walkthrough of &lt;a href="https://developers.redhat.com/articles/2026/05/26/testing-infrastructure-red-teaming-abliterated-models" target="_blank" rel="noreferrer"&gt;infrastructure red teaming with abliterated models&lt;/a&gt; on Red Hat Developer.&lt;/p&gt;
&lt;p&gt;The gap that remains is detection. We know how to inject attacks at every layer. We&amp;rsquo;re getting better at testing real agents without rebuilding them. What we still lack is reliable, general-purpose detection of whether an agent &lt;em&gt;acted&lt;/em&gt; on a compromise. A poisoned Jira ticket doesn&amp;rsquo;t show up as a failed Jira call. It shows up three tool calls later as a perfectly normal-looking email with sensitive data in the body. Catching that means tracing the full chain from compromised input to unauthorized action, even when the two happen through completely unrelated tools. Solving that problem unlocks both red teaming and runtime monitoring in a single investment.&lt;/p&gt;
&lt;p&gt;The agent that says all the right things and does all the wrong things is the one you need to worry about. And right now, most testing only checks what it says.&lt;/p&gt;
&lt;div class="ai-attribution"&gt;
&lt;p&gt;Author: Roland Huß &lt;a href="https://aiattribution.github.io/statements/AIA-HAb-CeNc-Hin-R-?model=Claude%20Opus%204.6-v1.0" target="_blank" rel="noreferrer"&gt;AIA HAb CeNc Hin R Claude Opus 4.6 v1.0&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description></item></channel></rss>