All articles

AI Agents8 min readBy Petrică RădanReference guide

AI Agent Production Readiness Checklist for Google Cloud

Thirty checks across state, tool reliability, observability, cost, security and EU data residency that decide whether an AI agent is ready for real users

  • AI agents
  • Google ADK
  • Cloud Run
  • Production
  • Observability
  • GDPR
  • Checklist

An AI agent is ready for real users when it keeps working through restarts, slow dependencies and traffic spikes, when you can reconstruct what it did after the fact, and when its cost, access and data location were decided on purpose rather than by default. This checklist has thirty checks in six groups. Each one says why it matters and how to verify it, so a team can run through it against its own agent in an afternoon.

It is written for agents built with Google ADK or a Gemini function-calling loop and deployed on Cloud Run, but most checks apply to any agent that calls tools. The code behind several of them is in the article on deploying multi-agent systems with Google ADK. A check you cannot verify is a check you have not passed: treat "we think so" as a fail.

Does the agent keep its state across restarts?

Cloud Run instances are replaced on every deployment and during scaling, so anything held in process memory is eventually lost. These checks make sure a restart is invisible to the user and a duplicate request is harmless.

CheckWhy it mattersHow to verify
Session state lives outside process memoryAn in-memory session store loses every active conversation on restartRestart the service in the middle of a conversation; the next turn continues with full context
The session store has backups and a retention periodSessions are user data, not scratch spaceRestore a backup into a test instance; the retention period is written down
Tools with side effects are idempotentRetries and duplicate requests must not charge, book or email twiceSend the same write request twice; exactly one effect results
Shared resources are protected against concurrent claimsTwo users can request the same slot at the same moment, and check-then-insert is a race conditionFire two parallel requests for the same resource; one succeeds. The booking article uses a PostgreSQL advisory lock for this
Conversation history is boundedUnbounded history raises cost on every turn and eventually exceeds the context windowRun a 50-turn session; the behaviour at the limit is defined and tested

Do tool calls fail safely?

Most production incidents with agents start in a tool, not in the model. A tool that hangs, errors quietly or returns stale data lets the agent report success on something that did not happen.

CheckWhy it mattersHow to verify
Every external call has a timeoutA hanging dependency stalls the whole conversationBlock a dependency in a test; the agent answers within the timeout and says what failed
Retries use backoff and only wrap safe operationsRetrying a non-idempotent write can repeat its effectReview each tool and mark it read or write; only reads retry by default
A circuit breaker protects flaky dependenciesOne slow API should not stall every conversation at onceForce repeated failures; calls fail fast, then recover when the dependency does
Tool errors reach the agent as structured errorsA swallowed exception turns into a confident wrong answerMake a tool return an error; the agent tells the user it could not complete the task
There is a hard cap on tool iterations per requestA runaway loop burns tokens and timeSet the cap (the booking agent stops after five iterations) and test what the user sees when it is hit

Can you reconstruct what the agent did?

The question that decides whether you can operate an agent is "why did it do that on Tuesday at 14:32?" If the answer needs a guess, the agent is not observable.

CheckWhy it mattersHow to verify
Every model call and tool call is logged with session, agent, inputs and outputsWithout it a wrong answer cannot be traced to a stepPick a past conversation and rebuild its steps from the logs alone
Requests are traced across the agent and its toolsYou need to see which sub-agent produced a wrong resultOpen the trace of one request in Cloud Trace and follow it end to end
Log retention and access are decidedLogs hold user data and must not be kept or read by defaultA written retention period and a named list of readers
A set of real conversations is replayed before each releaseBehaviour regressions are invisible until a user hits themRun the set on a release candidate and compare answers with the last release
Alerts exist for error rate, latency and spendYou should hear about a failure from monitoring, not from a userTrigger each alert on purpose once

Is the cost of running the agent predictable?

Agent cost is mostly tokens, and tokens grow with conversation length and with the size of the tool results you put back into the context. Cost that nobody measures is cost that surprises.

CheckWhy it mattersHow to verify
Token usage is measured per session and per toolYou cannot control what you do not measureA dashboard shows input and output tokens per session
History is windowed or summarisedEach turn re-sends the history, so cost per turn grows with session lengthCompare input tokens at turn 1 and turn 20 of the same session
Repeated tool results and large static prompts are cachedPaying twice for identical workThe cache hit rate is visible and non-zero
Cloud Run concurrency and maximum instances are setThey cap spend and downstream load during a spikeLoad test up to the cap and watch what happens beyond it
Budget alerts exist on the project and the model APIA runaway loop or a leaked key shows up in hours, not at month endThe alert threshold is set and the recipient is a real person

Are access and secrets handled properly?

An agent turns model output into actions, so treat the model like any other untrusted caller: it should only be able to do what the user is allowed to do, and the check belongs in the tool, not in the prompt.

CheckWhy it mattersHow to verify
Each service runs under its own least-privilege service accountIt limits what a compromised component can reachList the roles of every service account; none is broader than the service needs
Secrets live in Secret Manager, not in code or repository filesKeys committed to a repository are leaked keysA repository scan is clean, and a key can be rotated without a code change
Internal agent endpoints require IAM authenticationAn open endpoint is an open agentAn unauthenticated call is rejected
Tool arguments are validated and model output is treated as untrustedThe model can produce wrong or malicious parameters, including through prompt injectionSend malformed and hostile arguments to each tool; read tools cannot write
Tools enforce which data the current user may seeA prompt instruction is not an access controlAsk for another user's data; the tool refuses, not the prompt

Is EU data handling decided on purpose?

These checks support GDPR and EU AI Act obligations; they do not replace legal advice. The article on EU AI Act and GDPR controls for RAG systems goes through the architecture in more detail.

CheckWhy it mattersHow to verify
Resource locations are restricted to EU regions by organisation policyResidency by accident is residency you cannot proveTry to create a resource outside the allowed regions; the policy refuses
Every store of personal data is inventoried: prompts, logs, vector index, cachesErasure has to reach every copyA written list of stores, each with an owner and a retention period
The erasure path is tested, including the vector indexGDPR Article 17 applies to data embedded in an index tooErase a test user and confirm nothing remains in the index, caches or logs
Users are told they are talking to an AI systemThe AI Act requires this for systems that interact directly with people (Article 50)The interface shows the disclosure before the first answer
The legal basis and the AI Act classification of the use case are confirmed with counselArchitecture cannot decide eitherA dated written note from your legal or data protection team

How should you use the checklist?

Score each check as pass, fail or unknown, and treat unknown as fail. Fix the failures that can lose data, money or customers first: state, side effects and access. Then close the observability and cost gaps, because they decide how quickly you can find and contain the next problem. Re-run the list whenever the agent gains a new tool or a new data source.

If you would rather have someone else run these checks against your agent and give you a ranked plan with estimates, that is what an agent production review is.

Sources

Request a discovery call

30 minutesGoogle MeetFree