Autonomous SRE agents like AWS DevOps Agent can already investigate and remediate incidents — the unsolved problem is the boundary: which actions run unsupervised. A first-principles framework for drawing that line by reversibility, evidence-based confidence, and metered cost, with a reproducible lab behind every claim.
The full lab — the blast-radius router, the Terraform guardrails, the fault-injection scripts, and the capture tooling behind every figure above — is at
Originally published on the AWS Builder Center:
Every number in this article traces to a test, a captured log, or the budget model in that repo.
The claim, up front
Autonomy is no longer a capability problem. Your agent can already investigate an incident and act on it. AWS DevOps Agent went generally available on March 31, 2026, built on Amazon Bedrock AgentCore, and it correlates telemetry, code, and deployment data to triage issues without a human driving each step. The interesting question moved somewhere else.
The binding constraint is now a decision boundary: which actions may an agent execute unsupervised, which must it escalate, and how do you encode that line so it survives change-management policy, a budget ceiling, and a 2 a.m. failure? Almost every "look, it self-healed" demo skips this. Industry data for 2026 puts it bluntly — only about one in five organizations has a mature governance model for autonomous agents. That gap, not model capability, is where production incidents and surprise bills come from.
This article gives you a first-principles framework for drawing that boundary, and it insists on a second axis most treatments ignore: the boundary is simultaneously a reliability decision and a cost decision. An autonomous investigation triggered by a flapping, false-positive alert burns error budget and agent-minutes. If you draw the line using reliability logic alone, you will leak money; if you draw it using cost logic alone, you will suppress investigations you needed. You have to price both.
First principles: why this is a decision-theory problem, not a tooling problem
Strip away the vendor framing and every autonomous remediation reduces to one comparison. For a given detected condition, you weigh the expected cost of the agent acting on its own against the expected cost of escalating to a human.
Acting alone has an expected cost of roughly P(agent is wrong) × (blast radius of a wrong action). Escalating has a cost too, and it is not zero: human response latency, on-call toil, and — the part people forget — the agent-minutes and tokens already spent investigating before the escalation. AI SRE agents make far more model calls than a chatbot because a single incident triggers planning, tool selection, evidence gathering, hypothesis revision, and reporting. That work has a meter running on it.
So the boundary is defined by three quantities, and you can reason about all three concretely:
Reversibility and blast radius of the action. Restarting a crash-looping pod is contained and reversible. Scaling a Karpenter node group within a ceiling is reversible. Modifying a production database, deleting a volume, or rolling a schema is neither.
The agent's confidence — defined as evidence completeness, not model self-report. A hypothesis backed by a specific file, line, log record, and a clean before/after correlation is high-confidence. "The model said 87%" is not evidence; agents hallucinate, and a confidently wrong root-cause analysis is the dangerous failure mode.
The economic weight of investigating. Investigation-based pricing punishes noisy alerts: an agent investigating a false positive still costs you. Alert quality is therefore a direct input to agent spend, which couples your SLO hygiene to your FinOps.
Everything below is just these three quantities, made operational.
The framework: a blast-radius router, not a self-healing switch
Do not ship an on/off "autonomy" toggle. Ship a router that classifies each candidate action into one of four dispositions, parameterised by the three quantities above.
Agent confidence (evidence completeness) Reversible + contained blast radius Irreversible or wide blast radius
High (specific evidence, clean correlation) Auto-execute, then log an immutable audit record and open a prevention item Execute-with-preview: agent proposes the exact change; human approves before it runs
Low (thin or conflicting evidence) Auto-investigate under a budget cap, gather evidence, act only if confidence crosses the threshold; otherwise escalate Escalate immediately. Do not act. Attach evidence and page a human
Two design rules make this router safe rather than decorative:
Confidence is a gate, not a suggestion. Below your threshold, the disposition can never be auto-execute regardless of blast radius. The threshold is a policy value you tune from measured calibration, not a vibe.
The router's ceilings are enforced below the agent, in infrastructure, not inside the agent's own logic. This is the single most important architectural decision in the whole design, and I will justify it next.
Deep mechanics: guardrails as code, enforced beneath the agent
An agent that polices its own limits is a single point of failure — the same LLM that might hallucinate the root cause is the thing deciding whether it is allowed to act. Put the hard limits where the agent cannot reason its way past them.
Scope IAM so the blast radius is physically bounded. The agent's execution role should be able to restart pods, cordon a node, or trigger a rollback of a specific deployment, and should have no path to delete persistent volumes, alter a production database, or touch IAM. If the router mis-classifies, the permission boundary is the backstop.
Encode budget and scale ceilings in Terraform / policy, not prose. A Karpenter provisioner gets a hard node ceiling. A cost guardrail caps agent-minutes per incident and per day. The failure this prevents is real: a misconfigured AI agent can generate in hours a bill that would take months to accumulate under ordinary provisioning, and there is at least one publicly reported near-half-billion-dollar AI-misconfiguration incident on record. The ceiling is the difference between a bounded experiment and an unbounded liability.
Encode change-freeze windows as policy. An agent that scales or patches outside an approved change window has produced a governance violation even if the action itself was correct. This is one of the named risks in the 2026 governance-gap data — autonomous actions that conflict with change-management policy — and it is trivially preventable with a deny window the agent honours.
Keep an immutable audit trail. Every auto-executed action writes an audit record the agent cannot later modify. AWS DevOps Agent produces immutable investigation timelines for exactly this reason; if you are wiring your own remediation layer, replicate the property. Auditability is what lets you widen autonomy later with evidence instead of hope.
Route the low-severity and known-noisy alerts away from auto-investigation. This is the cost-hygiene mechanism. Deduplicate first, suppress flappers, and only spend agent-minutes on signals that clear a quality bar. Then feed the noise metrics back into tightening your SLOs, closing the loop between reliability and spend.
The failure modes (this is the part your readers actually need)
Anyone can show the happy path. Credibility comes from the failure modes, and there are four worth naming.
Auto-resolution that masks the root cause. The most seductive failure. The alarm returns to OK, the graph looks clean, and the underlying defect is untouched and will recur. This is not hypothetical — AWS's own AgentCore observability walkthrough shows an incident that self-resolved in about a minute while the triggering vulnerability remained live. Mitigation: every auto-resolve must still open a prevention-backlog item. Recovery is not resolution.
The noisy-alert cost trap. Investigation-based billing means an agent chewing on false positives is a silent budget leak. Mitigation: gate investigations on alert quality and dedupe aggressively before the meter starts. Your alert hygiene is now a line item.
Change-management conflict. A technically correct scale-up during a freeze is still an incident of its own kind. Mitigation: freeze windows as enforced policy, not documentation.
Confidence miscalibration. The agent is confidently wrong. Mitigation: require concrete evidence artifacts — the specific file, line, and log record — as a precondition for auto-execute, and treat the model's self-reported confidence as untrusted input.
A note on metrics — read this before you quote anyone
The market is saturated with unverifiable numbers. You will see claims of 90%-plus alert-noise reduction, 40–60% MTTR improvement across enterprise deployments, and one vendor advertising 94% root-cause accuracy with up to 75% MTTR improvement. These are third-party and vendor-reported figures. Cite them as such or not at all, and never present them as your own results.
The only numbers you should attach your name to are ones you measured, with a stated baseline, a stated method, and a stated time window. A senior reviewer — or a senior interviewer — will ask you all three, and a borrowed figure collapses under the first follow-up. This is why the rest of this article is a lab you run, not a benchmark I assert.
Reproduce this: the autonomy-boundary-lab
Everything above is buildable at low cost. The repo is deliberately named to stand apart from generic "golden path" demos, because its contribution is the policy layer, not the platform.
What you build:
A small service on a kind cluster (or a single-node EKS if you want the DevOps Agent integration end to end), instrumented so a CloudWatch alarm fires on a defined failure.
A reproducible fault-injection script — a crash loop, a bad deploy, a dependency timeout — so the same incident is repeatable and your logs are real, not staged.
The blast-radius router as a small policy component: it reads the alarm and the agent's evidence, classifies the action into one of the four dispositions, and enforces the confidence gate.
The guardrails as code: a scoped IAM role, a Karpenter node ceiling, an agent-minute budget cap, and a change-freeze deny window, all in Terraform.
What the lab actually produced (this run)
The fault-injection script moves the app's listen port to :9999 while the readiness and liveness probes still target :5678. That is a single, locatable configuration change — the high-evidence path the router routes to auto_execute. The captured Kubernetes event stream shows the root cause in plain text:
Warning Unhealthy Liveness probe failed: dial tcp 10.244.0.7:5678: connect: connection refused
Warning Unhealthy Readiness probe failed: dial tcp 10.244.0.7:5678: connect: connection refused
Normal Killing Container app failed liveness probe, will be restarted
The failing pod's restart count climbed on a clean cadence — 1, 2, 3, 4 at roughly 30-second intervals, matching the probe's periodSeconds: 10 × failureThreshold: 3 — before Kubernetes backed it off into CrashLoopBackOff. This is the two halves of high-confidence evidence in one capture: an exact location (probes hitting a port the app no longer serves) and a clean before/after correlation (the failure begins precisely at the config change).
Equally important is what did not break. The previous ReplicaSet held its two Ready replicas throughout, so the service stayed up while the bad revision failed to roll out. The incident was reversible and contained — exactly the quadrant the router sends to auto_execute. The lab's behaviour and the router's classification agree, on the same run.
The cost dimension (modeled, not measured)
Investigation is metered, so the boundary has a price. The rate is AWS-official — $0.0083 per agent-second, i.e. $0.498 per agent-minute, per AWS's DevOps Agent pricing page, billed only for active agent time (idle is free). AWS's own example puts a typical 8-minute investigation at about $3.98. What is modeled below is how many agent-minutes a given incident consumes, since these figures come from the lab's budget.py ceilings rather than a live agent run — read them as a model of the dynamics, not a measurement of this specific fault:
A per-incident ceiling of 15 agent-minutes caps a single investigation at about $7.47 — a deliberate ceiling set above AWS's ~$3.98 typical, not a prediction of typical spend. A per-day ceiling of 240 agent-minutes caps a runaway day at about $119.52. The ceiling is the difference between a bounded experiment and an unbounded liability.
The router suppresses a known-noisy alert before the meter starts, spending $0.00 on it. An ungated agent investigating the same false positive spends up to the per-incident cap. So each suppressed false positive avoids up to $7.47 — which is why alert hygiene is a FinOps lever, not just a reliability one.
That is one measured claim (the incident timeline, reproducible from the repo) and a modeled cost claim at an AWS-official rate (clearly labelled, traceable to real code output). Both are smaller and less flashy than the vendor headlines, and that is exactly why they hold up. The measured version — real agent-minutes from a live DevOps Agent investigation of this same fault — is the subject of the follow-up.
Tradeoffs, stated plainly
When full autonomy is correct: contained, reversible, well-understood operations where the cost of a wrong action is low and recovery is trivial — pod restarts, in-ceiling scaling, rollbacks of a specific known-bad deploy. Some domains already run closed-loop remediation in production, notably patch management and certain automated security responses.
When full autonomy is negligent: irreversible or wide-blast-radius actions, anything touching the data plane, low-confidence situations, and anything inside a change freeze. Here the correct disposition is escalate-with-evidence, and "the agent was confident" is not a defence.
The multi-cloud wrinkle. The GA release of AWS DevOps Agent extended investigations beyond AWS into Azure and on-premises workloads. If your estate is hybrid, your boundary policy has to be cloud-agnostic — the router classifies by blast radius and evidence, which are portable concepts, while the guardrail enforcement is implemented per-environment. Do not hard-wire the policy to one provider's primitives.
The one-line version
The agents can act. The engineering that separates a production-grade AIOps posture from a demo is the boundary — drawn from reversibility, evidence-based confidence, and the metered cost of investigation — and enforced in infrastructure the agent cannot override. Draw that line well and the autonomy is an asset. Skip it and you have automated your way into a governance violation with a bill attached.
The full lab — the blast-radius router, the Terraform guardrails, the fault-injection scripts, and the capture tooling behind every figure above — is at github.com/PradeepKandepaneni/autonomy-boundary-lab. Every number in this article traces to a test, a captured log, or the budget model in that repo.
Top comments (0)