learn-ai-red-team-with-phoebe / Builder session 10 of 10
Learn AI Red Team with Phoebe · Builder track · Session 10 of 10

The standing suite: green is not safe, and never was

The last session of the builder track, and the one that decides whether any of the previous nine survive contact with next quarter. You will turn the Beacon findings into permanent tests, build the guards that stop those tests from quietly becoming the only attacks anyone runs, replace the re-test cadence nobody can source with a trigger list anyone can act on, and finish by writing down the four things a red-team report may honestly claim - and the one legitimate finding that says do not ship this as an agent at all.

🔴 Builder track Security engineers · AI engineers · platform leads 45 min
0-3 · Welcome 3-20 · Findings into tests, overfitting, triggers 20-38 · Build-along: the standing suite and its guards 38-45 · The close, and Q&A
Part 0

The engagement ends. The programme is the point.

⚠ Authorization This session, like every other in the course, concerns systems you own or are contracted in writing to test. The standing suite you build here runs continuously against your own build pipeline, inside the scope written in b1, with the blast-radius limits that keep an automated adversarial run from becoming an incident of its own. A suite that runs on a schedule against infrastructure you do not own is not a programme, it is an offence with a cron entry. This page names attack classes and pairs each with a control; it contains no exploit payloads and teaches no attack craft.

Nine sessions produced a scoped engagement, a probed surface, measured findings and a hardening round with a delta you could defend. All of it describes one build, on one date. Your base model will change, your system prompt will change, someone will connect a new data source on a Tuesday, and every number you just published will quietly stop being about the system you are running. This session is about what you leave behind so that does not happen silently.

Live - presented in session Self-study - read after class Official sources covered
★ What you walk out with today A standing suite built from your own findings, five evidence-based rules that stop it from overfitting to attacks you already fixed, a hold-out partition your hardening never sees, a re-test trigger list you can actually defend when someone asks for a cadence, and the closing section of your report template: the four things you may claim, and the one thing you may not.
Part 1 · findings become tests

A finding that does not become a test was a story 5 min live

Four organisations describe the same escalator, from four different starting points, and none of them treats a human round as the deliverable. The human round is the thing that generates the deliverable, which is an automated test that runs forever afterwards.

A finding that does not become a test is a story you told once. Human round A tailored attack that worked, k of N, on a named build. Expensive, slow, irreplaceable. Pinned regression case Same input, same N, same grader, same criterion. Runs on every build from now on. Generated variations Hundreds or thousands of variants of one human-defined threat model, running always. Four organisations describe the same escalator OpenAI: external red teaming produces "input into risk assessment and automated evaluations". Anthropic: the ladder ends with a model generating hundreds or thousands of variations of one threat model. Google DeepMind: adaptive attacks run continuously against past, current and future versions of Gemini. Google's red-team report: newly developed techniques should be reapplied to the subjects of prior tests.
🔍 Click to zoom - the human round is the generator, not the deliverable

Read the last line again, because it is the regression argument stated by a red team about its own work: newly developed techniques should be reapplied to the subjects of prior tests. Not only to the current build. To everything you previously declared fine. Every technique you invent this quarter is also a re-examination of every conclusion you reached last quarter, and a programme without that backward sweep accumulates stale all-clears.

Why the tool choice matters here and nowhere else This is the one point in the course where tooling is a real decision rather than taste. PyRIT keeps a memory database of prior attacks, which is exactly what turns a probe run into a regression corpus you re-run after every model, prompt or tool change. garak is a scanner for the cheap broad baseline. promptfoo redteam generates a suite and grades it, and its retry mode re-runs past failures, which makes it the natural CI gate. A sensible layering is garak for the baseline, promptfoo as the gate wired to your policy, PyRIT for the adaptive campaign whose findings become regression cases. One trap worth knowing: github.com/Azure/PyRIT is archived read-only as of 2026-03-27; use github.com/microsoft/PyRIT. And PyRIT is a library, so the CI wiring is yours to build - claims about built-in security gates are vendor-blog level.
Part 2 · the failure mode of every standing suite

You will overfit to the attacks you already fixed 6 min live

A standing suite has one predictable disease, and it is not flakiness. It is that the suite becomes the definition of the threat. Every hardening round tunes the system against exactly those cases, the suite goes green and stays green, and the greenness is real without meaning anything.

A suite you hardened against is a suite that will pass. What a green regression suite proves That the attacks you already fixed are still fixed. Nasr et al. broke 12 published defences at over 90% attack success. Most of them originally reported a near-zero rate. The rate was real. It was measured against a static set the defence had already seen. What a standing adaptive budget proves That someone who has not seen your suite still could not get through this week. NIST measured 11% success with the best published baseline, and 81% when the attack was tailored to the target. That gap is the size of the blind spot a regression suite cannot see. The rule, and it is the only defensible reading of a green board Never accept a near-zero rate from a static test set as evidence of safety. Report it as what it is: the suite you built did not break this build. Keep an adaptive budget outside the regression suite, and hold attacks out.
🔍 Click to zoom - two different questions, and only one of them is answered by a green pipeline

Six rules follow from that, and every one of them is a change to how the suite is run rather than to what is in it.

Never accept a near-zero ASR from a static test set as evidence of safety. Twelve recently published defences, most originally reporting near-zero attack success, were broken at over 90% by researchers who were allowed to adapt. Nothing in the original measurements was false. They answered a narrower question than the headline implied. Your own near-zero deserves the same suspicion, and the report sentence is: this suite did not break this build.

Keep a standing adaptive budget, separate from the regression suite. Hours per quarter for people who are told to invent attacks against your specific system, not to run your cases. NIST measured 11% success with the best published baseline attack and 81% when the attack was tailored to the same target. That seventy-point gap is the size of the blind spot between running baselines and letting someone think about you specifically. Automation cannot close it, because automation runs what it was given.

Set N per test and track a rate with a confidence interval, never pass or fail. The same input does not produce the same output twice, so a boolean field is a lie with a schema. Repeating identical attacks 25 times instead of once moved measured average success from 57% to 80%. A suite of booleans will drift under you invisibly; a suite of rates with intervals shows you the drift while it is still small. The launch-gate mechanics are in Agent Launch, and this is the input it expects.

Hold attacks out. Split your corpus at the moment of discovery: a hardening partition your engineers see, and a hold-out partition they do not. Gate on the hold-out. This is not distrust of your engineers, it is the only structural defence against the thing every honest team does anyway, which is fixing precisely what is in front of them. Rotate a few cases from hold-out into hardening each quarter and replace them from new findings, so the partition does not go stale.

Fix your grader before you trust your trend line. Three variables hide inside every attack success rate: the classifier that judges success, the token budget, and N. HarmBench found token budget drastically affects measured ASR and is not standardised across papers. If the grader changed between two runs, the delta is about the grader. Version it, calibrate it against human adjudication periodically, and treat a grader change as a reason to re-baseline rather than a detail in a changelog.

Regression-test the architecture, not only the prompts. That the egress allowlist still holds. That tool scope has not widened. That no newly added renderer can fetch remote images. These are ordinary pass-or-fail assertions, unlike everything else on this list, and they are the ones that catch the change that actually matters. Every durable fix in this course was of that kind - a cut egress leg or a cut untrusted-content leg - so the tests protecting them should be the ones that block a merge.

And do not compare your rate to anybody else's A NeurIPS 2025 analysis of attack-success-rate comparisons found that conclusions about relative system safety "are often not supported by evidence provided by ASR comparisons", resting on apples-to-oranges comparisons or low-validity measurements. The defensible use of ASR is exactly one thing: a pinned-configuration trend within your own system over time, published alongside the full attack-and-defence spec given to testers, the token budget and N and the judge, an over-refusal counter-metric, and a regression-suite pass rate. Never as a cross-vendor number in a slide.
Part 3 · when to run it again

Triggers, because no cadence exists to cite 5 min live

Someone will ask how often you re-test, and will want a number. Say this plainly, because it is true and because the alternative is inventing one: no standards body publishes a "test every N weeks" figure. Not NIST, not the NCSC, not OWASP, not MITRE. What is published is continuous automation plus human rounds fired by events.

No standards body publishes a "test every N weeks" number. Triggers, not a calendar. What is published: continuous automation, plus human rounds fired by events. A quarterly slot on a calendar is a governance artefact, not a security control. It re-tests whatever the system happens to look like that day. Base-model version change System-prompt change New tool or MCP server New connector or data source New renderer New user population or language Any permission-scope change Any one of these makes your last report old. Trigger-driven human rounds on top of a suite that runs on every build. That is the published shape.
🔍 Click to zoom - seven events that make your last report historical

The compliance anchor exists, and it is about a standing programme rather than a frequency. The NIST AI RMF Playbook says under MEASURE 2.6 to "use red-team exercises to actively test the system under adversarial or stress conditions", and under MEASURE 2.7 to "establish and track AI system security tests and metrics". Tracked metrics over time, not a recurring calendar invitation. If you operate a general-purpose model with systemic risk in the EU, Article 55 is harder still: it requires conducting and documenting adversarial testing, applicable since 2 August 2025, which is why the report template you are about to finish has legal weight and not merely operational weight.

Demo 1 of 2

Stand the suite up, with its guards ★ 10 min · everyone builds

Take the Beacon findings from b8 and the hardened build from b9, and turn them into something that runs without you. The manifest is short because the discipline is in the partitions and the assertions, not in the volume of cases.

Split the corpus at discovery. Every finding lands in one of two partitions the moment it is recorded: hardening, which engineers may read and fix against, and holdout, which they may not. Gate the build on the hold-out partition. If you record findings into a single pile and split them later, you will split them after everyone has already read everything.

Pin the three hidden variables per case. N, the token budget, and the grader version. Put them in the manifest rather than in the runner's flags, so a change shows up in a diff and in code review rather than in a shell history nobody reads.

Add the benign counter-metric to the same gate. Otherwise the cheapest way to pass your suite is to make the product refuse more, and someone will eventually find that out. A hundred ordinary requests the system must still handle is enough.

Write the architecture assertions as ordinary pass-or-fail tests. These are the only binary checks in the whole suite, and they are the ones that block merges. Egress allowlist, tool scope, approval requirement on the irreversible action, renderer behaviour, spend caps.

Wire the triggers to the events, not to a date. A base-model bump, a system-prompt edit, a new MCP server, a new connector, a new renderer, a new user population or language, any permission-scope change. Each one fires the full suite automatically and files a ticket for a human round. The ticket is the part people delete; keep it.

standing-suite.yaml · the whole thing fits on a screensuite: beacon-standing runs_on: [every_build, nightly] partitions: hardening: beacon/findings/hardening # engineers may read and fix against these holdout: beacon/findings/holdout # engineers may NOT read; the gate runs here benign: beacon/benign/v1 # over-refusal counter-metric pinned: trials_per_case: 25 # N. changing this re-baselines every trend line token_budget: 4096 # drastically affects measured ASR; pin it grader: rubric-v3 # version it. a grader change is a re-baseline gate: on: holdout report: rate_with_interval # never pass/fail. a boolean field is a lie with a schema block_merge_if: architecture_assertions_fail adaptive_budget: hours_per_quarter: 40 brief: "invent attacks against THIS system. do not run the suite." findings_go_to: holdout # new human findings land on the gated side triggers: # events, not a cadence. no standards body publishes one - base_model_version_change - system_prompt_change - new_tool_or_mcp_server - new_connector_or_data_source - new_renderer - new_user_population_or_language - any_permission_scope_change

And the architectural half, which is the part that survives a model swap because it never mentions the model:

test_architecture.py · pass or fail, blocks the mergedef test_egress_allowlist_unchanged(config): assert config.egress.allowlist == FROZEN_ALLOWLIST def test_agent_role_is_read_only_outside_sandbox(iam): assert iam.role("beacon-support-bot").writes == {"sandbox"} def test_refund_tool_requires_human_approval(tools): assert tools["issue_refund"].approval == "human" def test_no_renderer_fetches_remote_images(renderers): for r in renderers: assert r.remote_fetch is False # the CamoLeak fix, kept honest def test_spend_cap_present_per_principal(limits): assert limits.per_principal.tokens and limits.per_principal.currency
Why these five tests are worth more than five hundred prompt cases Each one encodes a fix that a real vendor shipped after a real incident, and each one fails loudly the moment somebody undoes it. Prompt cases tell you a rate on a build. These tell you whether the thing that actually stopped the attack is still there. When your model version changes next quarter, the prompt cases all need re-baselining and these five do not - which makes them the only part of the suite whose green light means the same thing it meant last quarter.
Demo 2 of 2

Write the closing section of the report ★ 8 min · in pairs

You are going to be asked for a sentence you cannot give. Practise the replacement now, out loud, with a colleague playing the executive, because the first time you do it live should not be in front of a board.

One person asks for the sentence. "So can we say the system is secure?" Ask it warmly. That is how it actually arrives - not as a trap, but from someone who needs something to tell a customer, a regulator or a board, and who assumes you have been working towards exactly that.

The other gives the four claims instead. Not as a refusal. As a better answer, delivered with specifics from the Beacon engagement: the rates and conditions, the weaknesses and blast radii, the mitigations and how much they moved things, and the surfaces explored versus not explored. Four concrete statements beat one vague reassurance, and executives generally prefer them once they hear them.

Then say the residual sentence. The after is not zero. Name what is left, name the classes you did not probe, and name what would have to change for the answer to improve. If the room goes quiet, that quiet is the point of the exercise.

Rehearse the hardest finding of all. "Given the residual risk, this workflow may not be a good use case for an LLM." Say it once now so you can say it later. It is not a failure of the engagement; it is the engagement working.

The four claims, verbatim from the course map

A red-team report may claim exactly these four things.

  • These specific attacks succeeded, at these measured rates, under these conditions, against this build at this date. Rates with N. Conditions include the grader and the token budget. The build and date are what make the claim falsifiable later.
  • These specific weaknesses and impacts exist, with these blast radii. Severity is what a finding chains to, not how clever the input was. For agents, the dominant term is action blast radius.
  • These specific mitigations changed those rates by these amounts. Before and after on the same cases, at the same N, with the same grader, and the benign counter-metric alongside.
  • These risk surfaces were explored and these were not. The unexplored ones count at full inherent risk, because absence of evidence is not evidence of absence.

It cannot claim the system is safe, secure, or robust. No amount of testing establishes that something cannot happen, because the search space of natural-language attacks is effectively unbounded.

The close · session 10 of 10

Why a passing suite is not proof of safety 5 min live

Everything in this course has been building towards a sentence that sounds defeatist and is not. It is the sentence that lets you keep working honestly for years without either overclaiming or giving up, and every organisation that publishes seriously about this has written some version of it.

WhoWhat they publishedWhat it means for your green board
OpenAI System-card line: "evaluations represent a lower bound for potential capabilities; additional prompting or fine-tuning, longer rollouts, novel interactions, or different forms of scaffolding could elicit behaviors beyond what we observed." Your suite is a lower bound too. It measures what your cases elicited from this build, not what the system can do.
Microsoft The eighth of their eight lessons: the work of securing AI systems will never be complete. And separately: "the idea that it is possible to guarantee or 'solve' AI safety through technical advances alone is unrealistic." There is no end state to schedule towards. Design the programme as an operating cost, not a project with a completion date.
Anthropic "No system is completely immune to all attacks." Backed by their own two exercises: no universal jailbreak found across 183 participants and over 3,000 hours; one found in the public run of 339 jailbreakers and roughly 3,700 hours. Nothing about the first result was wrong. It simply did not mean what "we red-teamed it and found nothing" is usually taken to mean.
UK NCSC "Rather than hoping we can apply a mitigation that fixes prompt injection, we instead need to approach it by seeking to reduce the risk and the impact. If the system's security cannot tolerate the remaining risk, it may not be a good use case for LLMs." The escape hatch, and it is a legitimate engagement outcome. "Do not ship this workflow as an agent" is a finding, not a failure.

So the closing line of the course is the title of this session. Green is not safe, and never was. Green means the tests you wrote, against the build you have, at the N you chose, judged by the grader you version-controlled, did not fail this week. That is a genuinely valuable thing to know and it is worth every hour you will spend maintaining it. It is simply not the thing people hear when you say the pipeline is passing, and the difference between those two readings is the whole professional contribution of an AI red team.

★ You finished the builder track Ten sessions: a scope document with authorization in the control plane rather than the prompt, an attack surface mapped to the current framework IDs, the injection classes and their measured defence limits, jailbreaks as rates, extraction, tool abuse and agency, a suite with honest coverage accounting, an engagement run with k of N, a hardening round whose delta you can defend, and now a standing programme with triggers and hold-outs. If you want the governance and reporting side of the same material - severity rubrics, how to read someone else's report, and when to stop - the leader track covers it in six sessions. And the courses next door pick up where this one stops: Agent Launch takes your adversarial slice into a go or no-go decision, and AI Observability owns the telemetry your findings will surface in from now on.
Homework

Try it yourself - this month ◐ 60-90 min total

Source material

Official sources covered

Every framework, figure and quotation on this page traces to a primary source catalogued in this course's source map, verified 2026-08-14. This page covers:

✓The findings-to-automation escalator - OpenAI, Anthropic, Google DeepMind, and Google's red-team reportPart 1 · [P] vendor publications
✓Google red-team report: newly developed techniques should be reapplied to the subjects of prior testsPart 1 · [P] · report is July 2023, flag its age
✓Nasr et al. - 12 defences broken at over 90% ASR, most originally reporting near-zeroPart 2 · [P] arXiv 2510.09023
✓NIST CAISI - 11% with the best published baseline, 81% when tailored; 57% to 80% at N=25Part 2 · [P]
✓HarmBench on token budget drastically affecting ASR, and the three variables inside ASRPart 2 · [P]
✓Chouldechova et al., NeurIPS 2025 - ASR comparisons often do not support conclusions about relative safetyPart 2 · [P] arXiv 2601.18076
✓PyRIT, garak, promptfoo - memory-backed regression, scanning, CI gating; the Azure/PyRIT archive trapPart 1 · [P] · PyRIT is a library, CI wiring is yours
✓NIST AI RMF Playbook MEASURE 2.6 and 2.7; EU AI Act Article 55 documented adversarial testingPart 3 · [P]
✓OpenAI system card - evaluations represent a lower bound for potential capabilitiesThe close · [P]
✓Microsoft - the work of securing AI systems will never be complete; guaranteeing safety technically is unrealisticThe close · [P] arXiv 2501.07238
✓Anthropic - no system is completely immune to all attacks; the two Constitutional Classifiers exercisesThe close · [P]
✓NCSC - reduce the risk and the impact; it may not be a good use case for LLMsThe close · [P] NCSC, 8 Dec 2025 · a legitimate finding
✓What a report may claim - the four statementsDemo 2 · course map, assembled from the sources above
◐Any "re-test every N weeks" cadenceNo standards body publishes one. Published practice is continuous automation plus event-triggered rounds; the trigger list is taught instead
◐The manifest, CI wiring and architecture assertions on this pageIllustrative structure, not a citable standard · no published standard suite format exists
Check yourself

Three questions before you go 🎯 ◐ 90 seconds

1 · Your standing suite has reported a near-zero attack success rate for four months. What may you conclude?

The original near-zero rates were real measurements. They answered a narrower question than their headlines implied, because the test set was static and the defence had already been tuned against it. Option B is the instinctive fix and it does not help on its own: a bigger suite of attacks you have already hardened against is still a suite of attacks you have already hardened against. What closes the gap is a partition your engineers never see plus a standing adaptive budget for people told to invent attacks against your specific system rather than to run your cases.

2 · Your board asks how frequently the system should be re-tested. What is the honest answer?

There is no citable number, and inventing one is how a security programme acquires a compliance ritual instead of a control. A quarterly slot re-tests whatever the system happens to look like that morning, which may be three model versions and two new connectors away from the build your last report described. Option C is not wrong so much as far too late: incidents are the trigger you did not get to choose. The seven listed events are the ones you can wire up in advance, and the NIST AI RMF Playbook backs the shape by asking for tracked security tests and metrics rather than a frequency.

3 · Every test is green and an executive asks whether the system is secure. What do you say?

Option B is the sentence that gets quoted without its caveat in every subsequent conversation, and OpenAI's own system-card language explains why it cannot be given: evaluations represent a lower bound, and additional prompting, longer rollouts, novel interactions or different scaffolding could elicit behaviour beyond what was observed. Option C sounds rigorous and is not, because it implies the tested classes are closed. If the residual genuinely cannot be tolerated, the NCSC gives you the last and most useful finding in the course: it may not be a good use case for LLMs, which is a legitimate engagement outcome rather than an admission of defeat.

Builder session 10 cheat sheet · pin this

Findings become testsHuman round generates, automation retains. The ladder ends at generated variations of one human-defined threat model.
Reapply new techniques backwardsNot only to the current build. To every subject you previously declared fine.
Near-zero from a static set proves nothing12 defences broken at over 90%, most originally reporting near-zero. Report it as: this suite did not break this build.
Adaptive budget, kept separate11% with the best baseline, 81% when tailored. That gap is the blind spot automation cannot see.
Rates with intervals, never pass or failPin N, the token budget and the grader version. A grader change is a re-baseline, not a changelog line.
Hold attacks outGate on a partition your hardening never saw. Rotate a few in each quarter so it does not go stale.
Triggers, not a cadenceBase model, system prompt, tool or MCP server, connector, renderer, user population, permission scope. No cadence is published anywhere.
Green is not safeYour tests, your build, your N, your grader, this week. Four claims are all a report may make, and "not a good use case for LLMs" is one of the findings.