Zero Credentials in the Sandbox: What Google's Agent Compute Engine Changes About Agent Blast Radius
Most agent deployments hand the agent a long-lived, broadly-scoped credential — so compromising the runtime compromises everything that credential can reach. Google's Agent Compute Engine, announced 22 October 2026, makes a different design concrete: each agent runs in its own isolated microVM that holds no credentials. Here is the credential-scoping ladder, and where per-agent isolation actually fits on it.
The security property that matters in an agent runtime is blast radius: if an attacker compromises the agent — most commonly through prompt injection — how much can they reach? The usual answer is 'everything the agent's credential reaches', because most deployments hand the agent a single long-lived, broadly-scoped key. Google's Agent Compute Engine, announced on 22 October 2026 and currently pre-release, makes a stricter design concrete: each agent runs in its own hardware-isolated microVM, and Google says the sandbox holds no persistent credentials — short-lived credentials are injected from outside it. This piece is architecture analysis of that documented design and the credential-scoping ladder around it; it is not a production review, because the product is not generally available.
Why Blast Radius Is the Right Lens
Traditional service-to-service security assumes a bounded, auditable set of callers. An agent breaks that assumption, because the agent decides at runtime which tools to call and with what arguments, driven by a language model that an attacker may be able to steer through injected instructions in a document, an email, or an API response the agent reads.
That makes the credential the agent carries the single most important variable in the system's security. If the agent holds a long-lived API key scoped to an entire CRM, then a successful prompt injection does not just produce a bad answer — it hands the attacker the agent's full reach: read every contact, export every record, call every endpoint that key permits, for as long as the key is valid. The model's reasoning is the vulnerability; the credential is the blast radius.
The engineering question is therefore not only 'how do we stop prompt injection' (you reduce it, you do not eliminate it) but 'when a step is compromised, how little can it reach?' That is a question about credential design, and it has a ladder of answers.
What Agent Compute Engine Actually Is
Google Cloud announced Agent Compute Engine on 22 October 2026 at the Linux Foundation's AGNTCon + MCPCon event in San Jose. The reported design is that each AI agent runs in its own hardware-isolated micro virtual machine, each with its own guest kernel, built on Cloud Hypervisor. Google says the platform already runs its own Gemini agents and that a customer preview is planned; it has not announced pricing or a firm preview date.
The property worth the article is the credential posture. According to Google's materials and launch-week reporting, the sandbox is designed to hold no persistent credentials: short-lived service credentials are injected from outside the microVM rather than stored inside it, and idle microVMs can be suspended and later restored. In blast-radius terms, that means a prompt injection running inside the sandbox has no long-lived key to exfiltrate, because one was never placed within its reach.
Treat the specifics as vendor-reported and pre-release — they may change before general availability. What does not depend on any one vendor is the underlying design pattern, which you can adopt today regardless of where your agents run. Google also open-sourced a related Kubernetes runtime, Agent Substrate, aimed at running large numbers of agents at high density and framework-agnostic across runtimes such as ADK, LangChain and Claude Code; its density figures are Google's own and are best treated as such.
The Credential-Scoping Ladder
Rung 1 — Long-lived, broadly-scoped key (the default, and the problem)
The agent is configured with a static API key or service-account credential that is valid indefinitely and scoped to a whole system. It is the easiest thing to wire up and the worst for blast radius: compromise the agent once and the attacker has durable, wide access. If your agent reads untrusted content and holds a key like this, treat it as the first thing to fix.
Rung 2 — Scoped key (least privilege, still long-lived)
The credential is narrowed to exactly the resources and actions the agent needs — read-only where it only reads, one data domain rather than the whole account. This bounds the damage but does not time-bound it: a leaked key still works until it is rotated, and rotation is usually slower than an attacker. Necessary, not sufficient.
Rung 3 — Short-lived token (time-bounds the damage)
Instead of a static key, the agent obtains a token that expires in minutes (via an identity broker, OAuth token exchange, STS-style role assumption, or workload identity). A token captured through injection is useful only for its short validity window and only for its scope. This is the point at which credential theft stops being a durable compromise and becomes a narrow, expiring one.
Rung 4 — Broker pattern (the agent never sees the secret)
The long-lived secret lives in a broker outside the agent. The agent asks the broker to perform or authorise a specific action, and the broker mints a scoped, short-lived token — or performs the privileged call itself and returns only the result. The agent never holds the root credential at all, so there is nothing durable to exfiltrate even if the agent process is fully owned.
Rung 5 — Per-agent runtime isolation (where Agent Compute Engine sits)
Even a short-lived token has to exist somewhere while it is used. If many agents share a process or host, a compromise of one can read another's in-flight tokens and memory. Per-agent isolation — a microVM or equivalent sandbox per agent, holding no persistent credential and receiving short-lived ones from outside — closes that lateral path. It does not replace rungs 2 to 4; it is the substrate that makes them hold under a real compromise.
What Leaks on Compromise, by Rung
| Credential design | What an attacker gets from a compromised agent | Blast radius |
|---|---|---|
| Long-lived broad key | A durable key to an entire system | Everything the key reaches, indefinitely |
| Scoped long-lived key | A durable key to one domain/action set | That domain, indefinitely until rotated |
| Short-lived token | A token valid for minutes, within its scope | That scope, for the token's lifetime only |
| Broker pattern | No root secret; at most one in-flight scoped action | A single action's scope, no durable key |
| Per-agent isolation + no stored creds | No persistent credential; no access to peers' tokens | One agent's current action, not the fleet |
The Broker Pattern, Illustrated
# Illustrative and vendor-neutral. This is NOT Agent Compute Engine's API
# (that product is in preview); it shows the design property the product
# embodies, and which you can apply on any runtime today.
#
# The agent never holds a long-lived secret. It asks a broker for a
# short-lived, least-privilege token for ONE specific action. Per-agent
# runtime isolation (e.g. a microVM per agent) is complementary: it keeps
# even that short-lived token out of a process other agents could read.
from dataclasses import dataclass
from datetime import datetime, timedelta, timezone
@dataclass(frozen=True)
class ScopedToken:
value: str
scope: str # e.g. "crm:contacts:read"
expires_at: datetime
class CredentialBroker:
"""Holds the long-lived secret OUTSIDE the agent and mints short-lived,
least-privilege tokens on demand. The agent calls this; it never sees
the root credential."""
def __init__(self, allowed_scopes: set[str]):
self._allowed_scopes = allowed_scopes
def issue(self, scope: str, ttl_seconds: int = 300) -> ScopedToken:
if scope not in self._allowed_scopes:
raise PermissionError(f"scope '{scope}' not permitted for this agent")
# In production, exchange the root secret for a scoped, short-lived
# token here (STS AssumeRole, Workload Identity, OAuth token exchange).
# The root secret stays in the broker, never in the agent.
token_value = mint_from_secret_manager(scope, ttl_seconds)
return ScopedToken(
value=token_value,
scope=scope,
expires_at=datetime.now(timezone.utc) + timedelta(seconds=ttl_seconds),
)
def agent_step(broker: CredentialBroker) -> None:
# The agent requests exactly the access this step needs, nothing more.
token = broker.issue("crm:contacts:read", ttl_seconds=120)
# ... make a single scoped call with `token`; it expires in two minutes ...
# A prompt injection that hijacks this step cannot exfiltrate a long-lived
# key, because one was never within the agent's reach. At most it gets a
# 2-minute, read-only contacts token — a narrow, expiring compromise.
_ = tokenThe broker pattern keeps the long-lived secret outside the agent and mints short-lived, least-privilege tokens per action. Per-agent runtime isolation (such as a microVM per agent) is complementary — it keeps even the short-lived token out of a process other agents share. `mint_from_secret_manager` is a provider-specific helper (STS, Workload Identity, or an OAuth token-exchange endpoint).
Per-agent isolation reduces one class of blast radius; it does not eliminate blast radius. 'No credentials in the sandbox' defeats the theft of a durable static secret via the runtime — a real and common failure. It does not stop a compromised agent from acting within the scope of whatever short-lived token it legitimately holds during a step, nor does it fix an over-broad token. Isolation is the substrate, not the strategy: you still need least-privilege scoping (rung 2), short lifetimes (rung 3), and ideally the broker pattern (rung 4) on top of it. And because Agent Compute Engine is pre-release with no published pricing or general-availability date, treat its specifics as subject to change and do not design a production system around unverified capabilities.
What to Do Now, Regardless of Runtime
- Inventory every credential your agents hold and classify each by rung. Any agent that reads untrusted input while holding a long-lived, broadly-scoped key (rung 1) is your highest-priority fix.
- Narrow scopes to least privilege (rung 2): read-only where the agent only reads, one data domain rather than the whole account, per agent role rather than one shared service account.
- Move to short-lived tokens (rung 3) via your identity provider's token exchange or workload identity, so a stolen credential expires in minutes rather than persisting until manual rotation.
- Adopt the broker pattern (rung 4) for the most sensitive actions, so the agent never holds the root secret and at most carries one in-flight scoped token.
- Treat per-agent runtime isolation (rung 5) — whether Agent Compute Engine when it is generally available, or a microVM/gVisor sandbox you run yourself — as the substrate that makes the rungs above hold under a real compromise, not as a replacement for them.
- Document the blast radius of each agent role explicitly: if this agent were fully compromised mid-step, what is the worst reachable action? That single sentence per role drives the scoping decisions above.
How Inductivee Approaches Agent Credentials
We treat the credential-scoping ladder as a design decision made before any agent code is written, not a hardening pass afterwards. Every agent role gets an explicit blast-radius statement — the worst reachable action if the role were fully compromised mid-step — and that statement sets the scope, the token lifetime, and whether a broker sits between the agent and the secret. Per-agent isolation, where the deployment target supports it, is the substrate we build that on, not a substitute for it.
This is the same discipline we apply to prompt-injection defence and tool-permission scoping in our agentic security threat model: assume the model can be steered, and engineer the system so that a steered step reaches as little as possible. If you are deploying agents against real systems and want that reviewed before it ships, that is a conversation worth having early — credential design is far cheaper to get right before launch than to retrofit after an incident.
Sources & Further Reading
Primary and launch-week sources for Agent Compute Engine, plus the Inductivee practice that turns these patterns into production systems. Product specifics are vendor-reported and pre-release.
Frequently Asked Questions
What is agent 'blast radius' and why does it matter?
What does Google's Agent Compute Engine change about agent security?
Does 'zero credentials in the sandbox' mean an agent can't be abused?
What is the broker pattern for agent credentials?
Should we adopt Agent Compute Engine now?
Written By
Inductivee Team
AuthorAgentic AI Engineering Team
The Inductivee engineering team — multi-agent orchestration, RAG pipeline architecture, and data liquidity engineering. Our writing is grounded in what we actually build, break, and operate in production.
Inductivee is a remote-first agentic AI engineering studio. Our engineering content is written by active practitioners and technically reviewed before publication.
Engineer This With Inductivee
The engineering patterns in this article are what our team builds into production every day. Explore the related service to see how we deliver this capability at enterprise scale.
Agentic Custom Software Engineering
We engineer autonomous agentic systems that orchestrate enterprise workflows and unlock the hidden liquidity of your proprietary data.
ServiceAutonomous Agentic SaaS
Agentic SaaS development and autonomous platform engineering — we build SaaS products whose core loop is powered by LangGraph and CrewAI agents that execute workflows, not just manage them.
Related Articles
AI Security: Threat Modeling for Agentic Systems in Production
Agent Design Patterns: ReAct, Reflexion, Plan-and-Execute, and Supervisor-Worker
Enterprise AI Governance: Building the Framework Before You Desperately Need It
Ready to Build This Into Your Enterprise?
Inductivee engineers agentic systems, RAG pipelines, and enterprise data liquidity solutions. Let's scope your project.
Start a Project