
SAS05 A bad prompt is a bad deploy
Cellular compute plus a globally shared prompt table gives you independent failure domains for code and a single blast radius for behaviour. This covers shipping prompts, model IDs, tool schemas and guardrails through the same staged waves as code, gating each wave on distribution-level metrics rather than error rates, canarying by tenant, and why a model version change alters the shape of your traffic and not only its quality.
Series: Secrets of Agentic Scale (6 articles)
- …
- 6SAS05 A bad prompt is a bad deploy This article
1. Agent config deployed as change
The change was one sentence. A product manager tightened the system prompt — "always confirm the user's intent before executing tool actions" — and the platform team shipped it the way they ship all prompt changes: an UPDATE to the prompt table, effective immediately, everywhere.
Nothing crashed. No error rate moved. But by the next morning, support tickets were up across every tenant at once: agents had started asking for confirmation twice, sometimes three times, before doing anything. Task completion rates sagged. Token spend per session climbed 40% — every clarifying round-trip is another model call. A handful of enterprise tenants with tightly-scripted integrations saw their automations time out waiting for confirmations no human was there to give.
The retro surfaced the uncomfortable part. This team had done the hard work of cellularising compute: ten cells, independent failure domains, deployments rolling one cell at a time with bake periods and automatic rollback. Code could not take the platform down globally. A one-line prompt change could — because the prompt store was global, shared, and updated in one shot. They had cells for their infrastructure and a single blast radius for their behaviour.
2. Why the published pattern stops working
The published pattern treats deployment safety as a code problem. Your pipeline stages code through waves, bakes each wave against alarms, rolls back automatically. Meanwhile everything that actually determines what your agents do — system prompts, model IDs, tool schemas, guardrail configs, tenant-tier tables — lives in data stores, edited by console, script, or admin API, taking effect everywhere at once.
That split made sense for classic SaaS, where config was mostly settings: feature flags, endpoints, limits. Risky, yes — misconfiguration is a well-documented outage class — but bounded. For an agent platform, the config is the behaviour. A prompt edit changes what every agent does on its very next session. A model-ID bump changes reasoning style, tool-calling frequency, and cost profile in one write. A tool-schema tweak changes what actions are even possible. None of these pass through your pipeline, and none of them trip the alarms your pipeline gates on — a bad prompt does not throw a stack trace.
There's a second trap: the fix for your last incident is itself a config change. A throttle rule, a guardrail tightening, a kill switch — each is a behaviour-changing write to a shared store, usually made under pressure, usually global. The mechanism you reach for during an incident can be the next incident.
At 100 tenants you get away with this: someone eyeballs the change, tenants are few enough that damage is visible fast, and rollback is an UPDATE statement someone remembers how to write. At 10,000 tenants, a bad behaviour change compounds silently across sessions for hours before the signal separates from noise — and by then it has touched every tenant you have. The blast radius of your most frequent change class is the one you never engineered. We have yet to meet a team who regretted putting config behind wave discipline; we have met several who wished they had done it sooner.
Before fixing anything, list what your behaviour changes actually are:
Behaviour change | Typical editor | Blast radius if global | Bake signal |
|---|---|---|---|
System prompt | PM / prompt engineer | every session, next turn | cost per successful session, completion rate |
Model ID | platform team | reasoning + traffic shape | delegation rate, fan-out, tokens/session |
Tool schema | feature team | action space | tool-error rate |
Guardrail config | safety team | refusals / permissiveness | refusal rate distribution |
Tenant-tier table | ops / billing | entitlements, quotas | throttle + error rates per tier |

3. How XXL ISVs build for this
Builders at scale erase the code/config distinction: a change is a change, and every change rides the same safety mechanism. AWS has documented that mechanism publicly, end to end.

Everything deploys in waves. The Builders' Library describes the full discipline: changes progress through staged waves — one box, one cell, one fraction of production at a time — with a bake period in each wave and automatic rollback wired to alarms, no human in the loop ( Automating safe, hands-off deployments ). The essential move for an agent platform is scope: configuration rides the same waves as code. Our prompt store, tool registry and tier tables need wave-aware delivery, not global writes. This is precisely what config delivery services are built for — AWS AppConfig, for example, deploys configuration gradually with validators, monitors and automatic rollback, treating a config push with the same ceremony as a code push ( AWS AppConfig ). The cost is speed: a prompt fix that used to land in seconds now takes as long as the waves we chose, which is a tradeoff worth making explicit with whoever edits prompts.
Rollback must be safe, and proven. Rolling back a behaviour change means old prompts meeting sessions the new prompt started. The Builders' Library's rollback-safety discipline — every change must be backward and forward compatible with its neighbours, verified before deploy ( Ensuring rollback safety during deployments ) — applies directly: we version prompts and tool schemas, pin in-flight sessions to the version they started with, and validate that N and N−1 coexist. Version pinning means running two behaviours at once for a while, which is more state to hold and more combinations to test.
Bake on distributions, not error rates. A code deploy fails loudly; a prompt deploy degrades statistically. The alarms that gate a wave must be distribution-level agent metrics — cost per successful session, p99 latency including cold start, tool-error and throttle rates — measured over a bake window long enough for the distribution to move, not a five-minute error alarm. We choose the bake signal per change class: a model swap needs different gates than a guardrail tweak. Longer bake windows are the price, and they are the reason this discipline has to be designed rather than bolted on.
Canary by tenant. Cells give us spatial staging; tenants give us a sharper unit. We route named tenants — internal ones first, then opted-in early adopters — to the new prompt or model version in production. The same routing primitive that makes rollouts safe is our tiering and pre-release-access feature: rollout safety and product packaging converge in one mechanism. Entitlements themselves — which tenant gets which model, tool, or feature — deploy the same way: staged, baked, alarm-gated, auto-rolled-back. Choosing canary tenants is a conversation with the business, not only an engineering decision.
The test of the whole system is not that rollback exists but that it fires: run a validation experiment that pushes a deliberately degraded prompt to a canary tenant and prove the gates catch it before we trust the machinery with 10,000 tenants.
4. The agent delta
Config-as-deploy is established doctrine. Agents raise the stakes twice.
Nondeterminism breaks naive bake signals. A bad config in classic SaaS produces deterministic failures: errors spike, alarms fire, wave halts. A bad prompt produces a shifted distribution over stochastic outputs. Any single session looks plausible; the damage only exists statistically. That has two consequences. Bake windows must be long enough to resolve a distribution shift at your traffic volume — a canary tenant with thin traffic may never reach significance, so pick canaries for volume, not just willingness. And pre-production evaluation (offline evals, shadow traffic) is systematically biased in a knowable direction: real users retry, rephrase and escalate in ways replayed traffic doesn't, so shadow results overestimate quality. Treat them as a floor filter, never as the gate.
A model swap changes the shape of traffic, not just its quality. Model version changes alter delegation behaviour: one upgrade makes supervisors stop delegating (your fan-out collapses, along with the specialist behaviour you designed for); another spawns runaway critic loops (fan-out explodes, and with it cost and session pressure — module 2's admission layer becomes the last line of defence). Quality evals catch neither. Bake gates for model changes must watch traffic-shape metrics — delegation rate, fan-out per request, tokens per session — alongside task success.
The compounding effect is the point: at 10,000 tenants, prompt and model changes are your most frequent deploy class — often daily, often made by people who have never heard of your deployment pipeline. The safety machinery has to meet them where they edit.
5. Design rules
- Ship behaviour changes in waves. Prompts, model IDs, tool schemas, guardrail configs and tenant-tier tables are deploys. They ride the same staged waves as code — first-wave cells, bake, expand — never a global one-shot write. Cells for compute with a single blast radius for behaviour is not cellular.
- Bake on distributions, not error rates. A bad prompt does not fail with a stack trace; it degrades statistically. Gate each wave on distribution-level metrics — cost per successful session, p99 including cold start, tool-error and throttle rates — over a real bake window.
- Canary by tenant. Route named tenants to the new prompt or model version in production cells. The same primitive is our tiering and pre-release access feature — rollout safety and product packaging converge here.
- Automate the rollback, then prove it fires. A bake gate that pages a human is not a gate. Validate auto-rollback with an experiment that triggers it, not an assertion that it exists.
- Watch the shape of traffic after model swaps. A model version change alters delegation behaviour — supervisors stop delegating, or spawn runaway critic loops. Bake gates must watch delegation rate and fan-out, not just quality metrics.
6. Key takeaways + next in series
- Prompts, model IDs, tool schemas, guardrails and tier tables are deploys — they ride the same staged waves, bake gates and auto-rollback as code, or your cells protect compute while behaviour keeps a global blast radius.
- Bake on distribution-level metrics over real windows; a bad prompt never throws a stack trace.
- Canary by tenant — the rollout-safety primitive and your tiering feature are the same mechanism. Prove rollback fires; don't assert it.
Wrapping up and saying thanks
This closes the series, I know it's been a marathon but scale often is.. I hope it's been interesting and informative. Building at scale is a unique challenge space, a special "gift" when your business is doing well, and one that organically grows over time.
The concepts discussed in this series will help prepare you for what is coming. Take these learnings and remove the agent platform as a blocker for your growth.
To discuss these topics, reach out to your account team or find me on the interwebs!
Dave
Series: Secrets of Agentic Scale (6 articles)
- …
- 6SAS05 A bad prompt is a bad deploy This article
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article