The Outer Loop, Insights First: An Ambient Quality Agent That Diagnoses Your Production Agent Google released AQuA (Ambient Quality Agent) as open-source composable building blocks in its adk-recipes GitHub repository, a tool that runs unattended alongside a production agent in a Google Cloud project to diagnose recurring failure patterns. AQuA sweeps production trajectories from Cloud Trace, Cloud Logging, or BigQuery on a schedule, after each deployment, or on demand, and runs each sample through a five-stage pipeline that writes structured actual/expected findings labeled NEW, RECURRING, or auto-RESOLVED after 14 days unseen. By default AQuA uses the single-pass session_review judge, which evaluates each conversation against a developer-written goal.md checklist in one model call per session, and never sits in the request path or writes back to the agent. Your agent returns HTTP 200, stays inside its latency budget, and no tool call raises an error. Yet it still records seat 3A as confirmed without ever asking the seat-selection sub-agent whether 3A is free, or recommends a Florentine steakhouse to a traveler whose profile says vegan. Every team we work with that runs an agent in production is trying to answer the same three questions: How is my agent doing? What are its loss patterns, the ways it fails that keep coming back? And how do I climb: change something, know it helped, and keep it from sliding back? Getting an agent to the first 80%, where it handles the test cases you anticipated, can be relatively straightforward and fast today. An evaluation dataset, a coding agent, and a tight inner loop of run, grade, fix, and compare usually get you to task success on known scenarios in days. Then you launch, and the quality curve flattens or degrades. What makes the remaining 20% harder is that the ground moves after launch. Usage shifts as users discover what the agent can actually do, and live traffic stops resembling your initial eval set. At the same time, the system underneath also changes: when you upgrade a model, update your harness, or change a tool or skill, everything still runs and health checks stay green Figure 2 , but conversation quality and task success may shift in ways a standard deploy pipeline never warns you about. And when a session does go wrong, working out why means separating several layers that can look nearly identical from the outside. For example: Those failure modes can have different owners and different fixes. A raw trajectory records what happened next to what, not what caused what. Telling those layers apart requires reading the failing trajectories alongside the exact code revision that produced them. Online evaluation dashboards tell you that a score moved, and a coding agent can inspect a trace once you know where to look, but at production volume nobody can read every conversation by hand. In our June post https://developers.googleblog.com/driving-the-agent-quality-flywheel-from-your-coding-agent/ , we walked that pre-launch inner loop end to end on travel-concierge. This post covers the outer loop, released in the open https://github.com/google/adk-recipes/tree/main/core/python/ambient-quality-agent as composable building blocks you can run in your own project, adapt to your stack, and help us shape as we explore how teams run continuous agent quality in production. AQuA Ambient Quality Agent runs unattended beside your agent in your Google Cloud project, sweeping production trajectories from Cloud Trace, Cloud Logging, or BigQuery on a schedule, after each deployment, or on demand while your laptop is closed. Raw session transcripts, source snapshots, and BigQuery tables stay inside your project boundary, and AQuA never sits in the request path or writes back to your agent. Each run reads a sample of recent sessions and puts it through a five-stage pipeline: goal.md in view. When a session fails, it writes a structured actual / expected finding. NEW , RECURRING , or auto- RESOLVED after 14 days unseen. Think of it as a junior quality engineer doing the first pass : reading conversations, filtering out noise, and preparing the case file with evidence sessions for whoever is on rotation. To steer Stage 2 toward your domain, you write a plain-English developer goal goal.md that is appended to every review prompt; deterministic Python custom metrics eval config.yaml run alongside the judge to trend pass rates. By default, AQuA uses the single-pass session review judge, which evaluates the conversation against that checklist in one model call per session keeping scheduled sweeps economical and producing the actual / expected diffs that drive clustering . You can also opt in to the Gemini platform's managed trajectory AutoRaters task success , tool use quality , trajectory quality , which run dedicated per-metric evaluators for example, if you want to score sessions against standardized out-of-the-box rubrics or align metrics with offline evaluations . When an insight is worth investigating, you trigger root-cause analysis from the dashboard Chat or agents-cli aqua run . AQuA reads the failing trajectories alongside the immutable source snapshot captured at deploy time: when the defect is in your repo, it cites