Minimum Viable AgentOps for Agentic Engineering SLAs

Disclosure: This article may contain affiliate links. We may earn a commission at no extra cost to you.

8 min read

You’ll ship agentic workflows that are economically repeatable and operationally governable—without defaulting to expensive autonomy, unbounded tool access, or prompt-only “safety.”

TL;DR

  • Implement dual-mode execution: use a constrained single-shot path for low-risk tasks and reserve an autonomous harness for multi-step work.
  • Route by risk (blast radius + tool scope + change type) so cheaper models and fewer QA passes handle straightforward work while high-risk changes get stronger models and verification.
  • Meter QA passes as a budgeted resource; don’t let verification loops dominate run cost (e.g., $4.26 for a single QA pass can exceed core reasoning).
  • Enforce guardrailed tooling (allowlists, scopes, approval gates, sandboxes, audit logs) because an unguarded tool-using agent is a distributed incident waiting to happen.
  • Track cost/run (median ≤ $0.25, p95 ≤ $1.00), tool-call budgets (p95 ≤ 6; hard stop 10), and eval gates (offline pass ≥ 90%, safety ≥ 99%) with rollback ≤ 15 minutes.

Core Model: The Dual-Mode + Risk Router + Metered QA Control Plane (where cost and safety are enforced, not hoped for)

Stop treating cost and safety as “model behavior.” Enforce them in a control plane that decides mode, model, and verification depth per run—then hard-stops when budgets or policies are violated. AI doesn’t fail in production—it fails in planning, and the planning failure is usually this: no one owns the router.

The control plane has three knobs, and each one needs to be policy-driven rather than left to model judgment.

The first knob is dual-mode execution. A constrained call (.ai()) is single-shot with bounded context and no tool writes—use it for low-risk work like summaries, refactors, and documentation updates. An autonomous harness (.harness()) wraps multi-step planning, recovery loops, and tool use, and should be reserved for integration work and genuinely ambiguous requirements. The decision criterion is straightforward: if the task can be expressed as one bounded prompt and produces a deterministic artifact, default to .ai(). Entering .harness() should require an explicit risk flag, not a developer preference.

The second knob is the risk router, which selects model, tools, and permissions in proportion to blast radius. Low-risk work goes to cheaper models; high-blast-radius work goes to stronger models with stricter gates. The non-negotiable controls live here too: tool allowlists, scoped actions, approval gates, sandboxes, and per-action audit logs. Without those, you aren’t running an agent—you’re running a distributed incident waiting to happen.

The third knob is metered QA, which treats verification as a budgeted cost center rather than a default ritual. A single QA pass can cost $4.26, which can exceed the core reasoning cost—an architect agent running nine turns of real work might come in at $0.83. The proposed defaults are a cost-per-run cap of ≤ $0.25 median and ≤ $1.00 p95, with a tool-call budget of p95 ≤ 6 and a hard stop at 10.

Why does this need to be enforced rather than guided? A real build hit 200+ invocations and cost $116. That isn’t a model-price problem. It’s orchestration without routing and QA budgeting—exactly what happens when no one owns the control plane.

The operational takeaway: make the router the product. Ship it with tracing and evaluators, and refuse to run outside policy. If you can’t answer “what mode, model, and QA budget ran, and why?” for any given run, you don’t have governance. You have hope.

Three control-plane knobs as linked cards. Dual-Mode: constrained single-shot .ai() for bounded low-risk work, autonomous .harness() only on an explicit risk flag — default to .ai(). Risk Router: selects model, tools, and permissions by blast radius, with allowlists, scopes, approval gates, sandboxes, and audit logs — model by blast radius. Metered QA: verification is a budgeted cost center, one pass can cost $4.26 versus $0.83 for nine turns of reasoning — p95 cost at or below $1.00.
Figure 1: The control plane has three knobs — mode, model, and verification depth — decided per run, then hard-stopped on breach.

Sequence diagram showing user submission, control-plane risk classification, LLM execution, tool requests mediated by a tool gateway with scope and approval checks, and QA evaluation passes before returning output or stopping.
Figure 2: The operational loop — tools are mediated, QA is metered, and the control plane decides when to stop.

Patterns vs Anti-Patterns: What keeps agents cheap, safe, and shippable vs what drives 200+ invocations and $116 builds

Five control-plane patterns paired against the anti-pattern each replaces, with the metric to hold: dual-mode execution vs one-mode autonomy (avoids 200+ calls); risk-proportional routing vs uniform model selection (95/100 quality holds on cheap models); QA pass budgeting vs always-on heavy QA ($4.26 one pass vs $0.83 nine turns); guardrailed tooling vs unrestricted tool access (audit every action); control plane as product vs prompt-only safety (cost/run p95 at or below $1.00).
Figure 3: What keeps agents cheap, safe, and shippable vs what drives 200+ invocations and $116 builds — five patterns and the anti-pattern each one replaces.

One pattern doesn’t fit the grid but matters at cutover: move dev multi-tenant → prod single-tenant by attaching enterprise services (Key Vault, VNet, Storage, Search) rather than replatform-by-rewrite. Rewrites delay isolation and compliance controls; attach the enterprise boundary first and refactor later when telemetry shows where it pays.

Takeaway: If your agent can’t stay under a defined invocation/tool-call budget and you can’t audit every action, it’s not “almost ready.” It’s stuck in purgatory—expensive, unsafe, and unshippable.

Implementation Playbook: Stand up routing, budgets, guardrails, and evaluators with preconditions, gates, and rollback switches

Before starting, three preconditions must be in place. First, define a risk taxonomy for agent work along three dimensions: read-only vs write, single-file vs multi-module, and no systems-of-record vs touches systems-of-record. Second, inventory every tool and data path the agent can reach, and name an owner for each tool and each approval gate. Third, establish baseline targets you will gate against: offline eval ≥ 90%, safety compliance ≥ 99%, cost/run median ≤ $0.25 and p95 ≤ $1.00, tool-call p95 ≤ 6 with a hard stop at 10, time-to-rollback ≤ 15 min, and a canary exposure of 1–5%.

The build then runs in seven steps across four phases (numbering is continuous so dependencies stay obvious): Routing stands up dual-mode execution and risk-based model selection; Budgets meter invocations and QA and enforce hard stops where cost actually explodes; Guardrails apply allowlists, scopes, sandboxes, audit logs, and human-in-the-loop approval on irreversible actions; Evaluators trace and score quality, safety, cost, and latency so the control plane — not the prompt — decides what ships. Figure 4 gives each step its verification gate.

Seven-step rollout grouped into four phases, each step with a verification gate. Routing: implement two execution modes (low-risk via .ai() in one call, harness only for tagged classes); route by risk (tool calls p95 at or below 6, cost/run p95 at or below $1.00, quality at or above 90% offline). Budgets: meter invocations and QA as budgets (no drift toward 200+ calls / $116 builds); enforce hard stops (cap tool calls at 10, no partial writes). Guardrails: allowlists, scopes, sandboxes, audit logs; gate irreversible actions with human-in-the-loop (HITL rate trends at or below 15%). Evaluators: trace and evaluate, promote on results (offline at or above 90%, regression at or below 2%, safety at or above 99%, latency p95 at or below 8 seconds).
Figure 4: The 7-step rollout, phase-banded — Routing, Budgets, Guardrails, Evaluators — with a verification gate on every step.

Rollback switches (design them before launch)

Three rollback switches should exist before the agent sees production traffic, not after the first incident. Safe Mode forces a stronger model, extra QA, and read-only tools when evals regress or incidents spike. Tool disablement by policy revokes a single tool or scope instantly and defaults to read-only. Version revert pins model, prompt, and tool schemas so a rollback completes within ≤ 15 minutes based on tracing evidence.

Decision criterion: if you cannot route by risk, cap QA and tool calls, and prove safety and quality with evaluators, you’re not stuck in purgatory—you’re shipping an outage with a chat UI.

Metrics & Instrumentation: Cost/run caps, tool-call budgets, eval pass rates, incident thresholds, and review cadence

Treat agent behavior like any other production workload: meter it, cap it, and page on it. AI doesn’t fail in production—it fails in planning, and metrics are where planning becomes enforceable.

Three hero threshold cards. Cost per run p95 at or below $1.00 (median at or below $0.25; page when QA spend exceeds core spend or median rises more than 20% week-over-week). Tool calls per run p95 at or below 6 (hard stop at 10, fail closed and require approval). Safety compliance at or above 99% (offline eval at or above 90%, regression at or below 2%, block release below threshold).
Figure 5: The hero thresholds — meter it, cap it, page on it. If you can’t hold these without manual cleanup, the agent isn’t production-eligible.

Cost-per-run caps (unit economics you can defend)

Define cost-per-run as the sum of model tokens, tool execution, QA passes, and retries—anything less and you’re hiding the parts that actually blow up. The hard caps are median ≤ $0.25 and p95 ≤ $1.00, and the two alerts that matter most are a >20% week-over-week increase in median cost (which usually means routing drift or prompt bloat) and any run where QA spend exceeds core spend—a common shape when a single QA pass at $4.26 dwarfs core reasoning at $0.83 for nine turns. Decision criterion: if a workflow needs 200+ invocations to ship and real builds are landing at $116, treat that as an orchestration defect, not as “model pricing.”

Tool-call budgets (blast radius control)

A tool call is any external action: API, database, CI system, ticketing, or cloud control plane. The budget is p95 ≤ 6 tool calls per run with a hard stop at 10—fail closed at the hard stop and require human approval to continue. Two alert conditions are non-negotiable: any tool call outside the allowlist or scope, and any write action without both an approval artifact and an audit-log entry. These aren’t metrics for a dashboard; they’re paging conditions.

Eval pass rates (release gates, not dashboards)

Releases gate on three numbers: offline eval pass rate ≥ 90%, regression tolerance ≤ 2% absolute drop, and safety compliance ≥ 99%. Track the unknown-outcome rate—the share of runs without a ground-truth label—and drive it to ≤ 20% within 30 days, or accept that you’re flying blind on quality.

Incident thresholds (page like you mean it)

Operational limits are SEV2+ incidents ≤ 2/month, time-to-rollback ≤ 15 minutes, and change failure rate ≤ 10%. Pages should fire on budget breaches, safety-gate failures, and tool-scope violations. Waiting for user reports is how you discover an incident in week three of a SEV2.

Review cadence (cross-functional accountability)

Reviews run on three rhythms. The daily review covers cost/run p50 and p95, tool-call p95, rollback time, and the top three failure reasons. The weekly review tracks eval pass-rate trends, the routing mix between .ai() and .harness(), and QA-pass utilization. The monthly review covers incidents, policy updates, and budget resets—and budget resets should be tied to business value delivered, not token counts.

Pitfalls & Edge Cases: Runaway verification loops, tool misuse, prompt-only safety regressions, and fine-tuning drift

Four failure modes recur once an agent can call tools — runaway verification loops, tool misuse, prompt-only safety regressions, and fine-tuning drift. Figure 6 gives each one its detection signal and mitigation; the throughline is the same: budget verification as policy, contain tool blast radius, make safety an evaluated gate, and keep lineage so you can roll back.

Four pitfall field cards, each with Pitfall, Detection, and Mitigation. Runaway verification loops: QA loops dominate the bill; detect via invocations rising week-over-week and a $4.26 QA pass outweighing $0.83 of reasoning; mitigate with tool-call p95 at or below 6, hard stop 10, and routing low-risk to .ai(). Tool misuse — the distributed incident waiting to happen: access drifts beyond approval; detect via calls outside the allowlist and writes without approval; mitigate with allowlists, scopes, gates, sandboxes, and audit logs plus read-only defaults. Prompt-only safety regressions (prompt hope): safety assumed but never measured; detect via user tickets and unreconstructable runs; mitigate by making safety an evaluated release gate that blocks below 90% offline pass or over 2% regression. Fine-tuning drift: fine-tuning without lineage shifts behavior silently; detect via accuracy shifts after minor updates and no version pinning; mitigate by using retrieval first and a governed pipeline with a 15-minute rollback SLO.
Figure 6: The four pitfalls as field cards — each with its detection signal and mitigation. The fine-tuning fix is a governed pipeline: PII removal → offline eval → shadow → controlled rollout.

Decision criterion: if you can’t cap cost (median ≤ $0.25, p95 ≤ $1.00) and enforce tool and safety gates, you’re not ready for autonomy in production. AI doesn’t fail in production—it fails in planning.

Asset: Agentic Workflow Governance Checklist (Routing Policy + QA Budget + Tool Guardrails + Eval/Tracing Release Gates)

Use this asset as a release-blocking governance artifact for any agentic workflow that can call tools, change systems, or ship code. Agents don’t fail in production—they fail in planning: routing, QA depth, and tool access are where cost and incident risk compound. The router is the product — if risk classification, mode, and model selection aren’t enforced in policy, every control downstream is decorative. QA is a cost center allocated by blast radius, not a default ritual (treat “always-on heavy QA” as the bug). Releases gate on measured behavior, not dashboards.

Agentic workflow governance checklist grouped into four sections, each item a checkbox with its target. Routing Policy: .ai() for bounded tasks and .harness() only for true multi-step work (at least 95% match); risk-tier label in trace metadata; cheaper model on low-risk, stronger on high-risk (at least 90% offline); budget breach terminates with no partial writes (p95 at or below 6 calls). QA Budget: tag each QA pass by type; cap QA loops per risk class (at or below 40% share on low-risk); block promotion below the offline eval pass rate (at least 90%). Tool Guardrails: explicit allowlist denied by default; read vs write resource-bounded scopes; human approval gate for write actions (0 unapproved); sandboxes plus least-privilege identity per tool; per-action audit logs who/what/when/inputs/outputs (replay within 24 hours). Eval/Tracing Release Gates: per-run provenance; safety compliance gate (at least 99%); drive unknown-outcome rate down within 30 days (at or below 20%); time-to-rollback drill with canary 1 to 5% (at or below 15 minutes).
Figure 7: The governance checklist as a release-blocking gate — four control groups, each item with its target threshold.

For the tool-guardrail and release-gate controls, hold each one to its threshold, verification method, and the failure signal that should trip an alert:

Tool guardrails and release gates table with four columns — control, threshold, verification, failure signal. Tool allowlist: explicit tools only, else denied; disallowed call blocked and logged; failure is free-form tool registration. Action scopes: read vs write, resource-bounded; out-of-scope action blocked; failure is scope drift between runs. Approval gates: required for write or irreversible; no write without an approval artifact; failure is writes shipping unapproved. Per-action audit logs: who/what/when/in/out; replay any incident run within 24 hours; failure is incidents that can't replay. Safety compliance gate: at least 99%; block release below threshold; failure is safety found via user tickets. Rollback readiness: 15 minutes with canary 1 to 5%; quarterly drill against staging; failure is the first rollback attempted during an incident.
Figure 8: Tool guardrails and release gates — threshold, verification, and the failure signal that should page you.

Decision rule: if you can’t enforce routing, QA budgets, and tool scopes in policy (not prompts), keep the agent in read-only mode and block production write access.