A support assistant can be talked into pasting an internal note into a reply. A booking agent with a payment tool can be argued into issuing the same refund twice. Neither failure shows up in a normal quality check, because normal checks ask whether the system works — red teaming asks how it breaks.
If you are new to adversarial testing, the good news is that you do not need a research lab to start. You need permission, a clear idea of what failure looks like, a handful of deliberate tests, and a habit of writing down what you find. Here is how to do that without wasting a week on tools you do not yet need.
What red teaming means in practice
Red teaming is structured, authorised, adversarial testing. You take the attacker's mindset — curious, patient, willing to try the boring idea ten times — and you point it at a system you are allowed to test.
It differs from benchmarking in intent. A benchmark asks how the system performs on average. Red teaming hunts for a specific failure you care about, and it keeps going when the first attempt fails.
It also differs in scope. The model is only one layer. A real system includes retrieval sources, tool permissions, session memory, the interface, logging, and the humans reading the output. Most serious findings live in that glue, not in the model weights.
Start with goals, not tools
Before you type a single prompt, write one page that answers four questions:
- What is in scope? Name the exact system, version, and environment. Say what is off limits.
- What counts as a failure? Data leakage, unauthorised actions, unsafe content, cost blowups, reputation damage. Be specific enough that two people would agree.
- Who authorised this? Get it in writing. Testing a system you do not own or have permission to test is not red teaming; it is just an incident.
- What happens when you find something? Name the person who gets the report and how fast.
A useful goal sounds like: "Can a user with no special privileges cause the assistant to reveal another customer's order details, or trigger a refund above 50 units?" That is testable. "Make sure it's safe" is not.
Map the attack surface
Walk the request path and note every place untrusted text can enter the system. Most beginners underestimate how many there are.
The model layer
Direct instruction override, role-play framing, encodings, other languages, translation chains, and long multi-turn setups. Single dramatic prompts rarely work; five polite turns often do.
The retrieval layer
Anything the system reads can carry instructions: uploaded documents, support tickets, wiki pages, web pages an agent fetches. If a retrieved paragraph can tell the system what to do, that is a finding. Try planting a line in a document you control and see whether the output changes.
The tool layer
List every tool and every permission. Then ask whether the agent needs write access, or a wide parameter range, to do its job. An agent that can send email and read a customer database has a data-exfiltration path even if the model itself refuses to leak anything directly.
The human layer
Who approves the output? What happens at 2 a.m. when nobody does? Social engineering the operator is part of the surface too.
Test cases worth trying first
Keep a running log with the exact input, the observed output, the expected output, and a timestamp. Ten documented tests beat a hundred untracked ones.
- Instruction override. Ask it directly to ignore its instructions and print its configuration. Note the refusal, then try again with a different framing — a role, a story, a translation task.
- Indirect injection. Place an instruction inside a document or page the system will read, phrased as a normal business request rather than an obvious attack.
- Exfiltration through allowed channels. Ask the system to summarise data into a format it can legitimately produce, such as a link, a table, or an image reference, and check whether sensitive values travel with it.
- Authority claims. Claim to be the developer, an auditor, or a new admin. Watch whether the system verifies anything.
- Tool misuse. Push parameters past sensible limits. Try highly unusual but valid values, again and again.
- Multi-turn escalation. Start benign, build context over several messages, then make the request that matters.
- Obfuscation. Encode the request, split it across messages, or switch languages midway.
- Resource abuse. Look for loops, runaway retries, or prompts that make cost explode without producing value.
- Memory and cross-session leakage. Check whether one session's data appears in another, or whether a summary persists longer than intended.
Write down the failures that did not happen, too. Knowing which guardrails held is as useful as knowing which ones fell.
Tools, and where they fit
Automated scanning frameworks are useful as a smoke test: they run a large library of known attack patterns and flag the obvious. Treat their output as a starting list, not a verdict. They cannot know your business rules, and they will miss the attack that is specific to your product.
What pays off sooner is a small regression suite. Every confirmed finding becomes a test case with a fixed input and a pass/fail assertion. Run it on each change to the prompts, the retrieval index, and the model version. Add a tracing tool so you can see which retrieved chunks and tool calls produced an answer — without that, you are guessing at causes.
Budget most of your time for human judgement. Boring, patient attempts find more than clever ones.
Reporting findings so they get fixed
Write for two readers at once: the engineer who will patch it and the manager who will decide whether to pause a release.
Lead with impact, not cleverness. "An unauthenticated user can retrieve another customer's shipping address in three messages" lands. "Interesting prompt injection bypass" does not.
For each finding, include the environment and version, the exact reproduction steps, the observed behaviour, the expected behaviour, and a suggested severity based on impact and likelihood rather than how exotic the technique was. Add a short "what would have prevented this" line — a tighter permission, an input filter, a confirmation step. Then track every finding to closure and retest. Verifying the fix is part of the job.
Your first afternoon
Pick one system you are authorised to test. Write the one-page scope. Choose five test cases from the list above that match your worst realistic outcome. Spend two hours, log everything, and write up two findings properly, even if they are minor.
Then run your regression suite again next month, and the month after. Systems drift when prompts, indexes, and models change, and the guardrail that held in January is not guaranteed to hold in June. If your testing would affect real users, real money, or real data, get a second pair of eyes and sign-off from whoever owns the system before you begin.
Photo: Vitaly Gariev / Pexels
Related posts
More stories you’ll love reading