Skip to content

AI Gateway Security: The New Attack Surface and the New Control Point

Gil RöderGil Röder, CPO & Co-Founder
Published July 30, 2026
View as MarkdownView this page as plain textOpen in ChatGPTAsk ChatGPT about this pageOpen in ClaudeAsk Claude about this page
Copied
Abstract

A server quietly mining cryptocurrency turned out to be a company's AI gateway: a LiteLLM gateway with standing access to Amazon Bedrock, its login exposed to the internet. Darktrace disclosed the incident in July 2026. The same gateway shape is going mainstream for AI agents at Google, AWS, Cloudflare and Okta. How bad a breach gets comes down to what the gateway was built to hold. Cakewalk builds its MCP Gateway so a breach finds no standing access, no credential an agent can use and every action still checked and recorded.

Keywords: AI gateway security, MCP gateway, AI agent access management, agent gateway, Model Context Protocol, LiteLLM, Open Policy Agent, MCP elicitation, credential injection, standing permissions, AI agent security, Runtime Governance.

A Light Slice Before You Taste the Rest3 takeaways · 20 seconds
1

In July 2026, Darktrace found attackers mining cryptocurrency on a company's server. That server was its AI gateway, holding permanent access to Amazon's AI models and checking nothing about who was calling.

2

Two kinds of gateway appear here. An AI gateway carries a company's calls to AI models, while an MCP gateway carries what its agents do inside the company's apps.

3

Cakewalk governs agent access at the MCP gateway because one place can check every call. Enforcing app by app only ever covers the apps that built the hooks themselves.

Bottom LineWhat the gateway is built to hold decides whether that single point is the softest target or the best place to enforce the rules.

1The Breached AI Gateway Held Standing Access

In July 2026, Darktrace disclosed a break-in at one of its customers. An attacker had installed a cryptominer on one of the company's servers, which is what Darktrace's monitoring caught. That server was the company's own AI gateway, a LiteLLM gateway wired to Amazon Bedrock.[1]

LiteLLM is an AI gateway, open-source software that routes an application's calls to language models. Every model call the company made went through this gateway. Its SSH port was open to the entire internet. Darktrace recorded a large number of login attempts against it, almost all from a single address, which is what an automated password-guessing attack looks like. Darktrace could not confirm how the attacker finally got in.

What made it worth taking was what the AI gateway carried. The AI gateway held standing access to Amazon Bedrock through an instance profile, which attaches AWS permissions to the server itself. Anything running on that server could call Bedrock without a password or a key file. The AI gateway also checked nothing about who was calling, because its job was to forward requests. One exposed login was therefore worth everything behind it.

The mining was the only damage Darktrace confirmed. The attacker also tried to invoke Bedrock models and to create new AWS users, though Darktrace found no evidence that either succeeded. The access they held was worth far more than the compute they took.

A compromise may provide attackers with access not only to compute resources, but also to cloud identities, model services, sensitive prompts, and other connected systems.

Darktrace

The LiteLLM AI gateway was worth taking because a gateway concentrates access by design. The same concentration makes a gateway the one place where every call can be governed. What a break-in is worth comes down to what the gateway was built to hold.

How the Ungoverned AI Gateway Is Built

Because the credential sits inside the AI gateway, everything behind it comes with the server.

Ungovernedapp → model
Caller
3Potential break-in
LiteLLM proxy
Request routing
app to model calls
Standing credential
always available to anything on the instance
1Cloud credentials
keys to the cloud account
EC2 instance-role creds
2Model services
the model APIs
Amazon Bedrock
Sensitive prompts
the prompt contents
Connected systems
downstream apps
Observed · Darktrace, Jul 2026
1EC2 instance-role credentials were reachable
2Amazon Bedrock was reachable via the instance profile
3Port 22 open to the internet; cryptomining observed from the server

2The Same Gateway Shape Is Going Mainstream

The largest cloud and identity platforms are converging on a single gateway for every agent call. They committed to the architecture before deciding what that gateway is allowed to hold.

Google's Gemini Enterprise Agent Platform places an Agent Gateway between agents and everything they access, with policy evaluated at the gateway.[2] Amazon Bedrock's AgentCore works the same way, with a policy layer that checks each call before it reaches the app.[3] Cloudflare routes agent traffic through Model Context Protocol (MCP) server portals that attach the credential and proxy the request on the agent's behalf[4] while Okta has opened its own Agent Gateway to customers as a research release.[5]

The convergence is correct: enforcing one policy across every agent action requires one place to enforce it, because the alternative scatters policy app-by-app until nobody can audit it. When every credential and every call runs through one gateway, it holds more access than any employee, service account or app in the company. Each new gateway also adds another single point of failure.

All four have committed to enforcement at the gateway, though what it keeps between calls is still an open question. Cakewalk answers it with zero standing access.

3A Governed Gateway Holds No Standing Access

Where the LiteLLM AI gateway carried model traffic, Cakewalk's MCP Gateway governs agent access to apps. The same risk reaches both, because it follows from concentrating access in one place rather than from any one product category.

An agent on Cakewalk never holds a credential of its own. It starts every call with nothing it can use and gets no blanket grant it could carry into the next one. Every tool call is evaluated fresh against policy before it runs and resolves to one of three outcomes: auto-approve, escalate to a human or deny. When a call escalates, the session suspends mid-task and waits. The approval request appears inline in the agent client through elicitation, a method the MCP spec defines and goes to the person the agent acts for. It resumes only if they approve. A refusal denies the call, as does silence: an unanswered request dies after five minutes and is logged as a timeout.

Every agent action lands in one of four types: read, write, destructive or external. The tool's vendor declares the MCP annotations and Cakewalk maps them onto those four types. A tool that declares none is treated as destructive, which the default policies deny until an admin classifies it. The type sets the default outcome. Reads are auto-approved, writes wait for human approval and destructive or external actions are denied outright. An admin can change any of those defaults and can add custom policies that outrank them.

Policies always produce a decision as the four defaults cover every action type and cannot be removed. If the engine itself is unreachable, the gateway denies rather than waving the call through. There is no fail-open path. The engine is Open Policy Agent (OPA), with policies expressed in its Rego language. Admins configure those policies in the Cakewalk policy builder while Rego runs underneath. Security teams already run OPA in front of Kubernetes and service traffic. In the gateway it evaluates every tool call before anything moves upstream. The evaluation is deterministic, which means the same call in the same context yields the same outcome every time. Runtime Governance: The Missing Layer for Agent Access walks through that decision flow in full, including why no language model sits anywhere in it.

The approval flow has one exception. It arises when an agent client does not yet support elicitation and so cannot show the approval prompt. The gateway then denies any call that requires approval, unless an admin deliberately opts to auto-approve those calls instead.

How Cakewalk governs every tool call
From zero standing permissions to automatic revocation
User
Delegates to agent
Agent
No standing access
Cakewalk Gateway
Intercepts all calls
App
Executes action
Policy Engine
action, user, app
Store
Encrypted at rest
Approver
Human decision
A user delegates a task
Every agent session starts with a human. The user delegates a task to an agent. The agent starts with no context at all: no tools, no credentials, no standing access. Its Dynamic Agent Context begins at zero and grows one tool at a time as each access request is approved.
Tool call intercepted
Every agent tool call routes through Cakewalk’s gateway. No agent code changes, no cooperation from the downstream app. The gateway sits in the protocol path between the agent and every tool it uses.
The policy engine evaluates
The gateway routes every tool call to the policy engine. The engine evaluates each call against three inputs: the action itself, the user behind the agent and the target app. It produces one of three outcomes: escalate, deny or approve.
Suspend-and-Resume
Escalate
The gateway holds the connection and routes the request to a human approver: manager, security team or whoever the policy designates. The agent experiences a slow tool call, nothing more.
Approval received
The approver decides. The gateway resumes the suspended call.
Structured response
Deny
The gateway returns a structured denial with context. The agent adapts its approach or surfaces the denial to the user.
Credential injection at runtime
Approve
The gateway decrypts the stored credential server-side and injects it into the outbound call. The agent never sees the real credential.
Response returned
The app executes the action and returns a response. The gateway intercepts the response, logs it in the Decision Trace and forwards it to the agent. The agent’s Dynamic Agent Context has grown by one tool.
Task complete
The session closes and the agent’s access returns to zero. The Decision Trace records the full chain: who delegated, which policy fired, what inputs matched, who approved, what executed and when access ended.

An agent never receives a real credential. The gateway resolves the token on the server side and injects it into the outbound request without ever showing it to the agent or the model. A prompt-injected agent cannot leak a token it never held. The credential itself is stored with envelope encryption, encrypted under AES-256-GCM with its own data key wrapped by an external key management service. One broken key exposes at most one credential. Cakewalk made that trade deliberately: the gateway persists the credential so the agent side holds nothing.

Every call the gateway allows produces one permanent audit event: who acted, what they did, against which connection, which policy fired and its outcome, with a timestamp. Each action traces to a named person. An agent inherits only what that person may use, which the gateway verifies on every call. Revoking their access denies the agents acting for them at the next call. The record also feeds forward, which is why a company can replay the last 30 days of recorded calls against a policy change and see which past decisions would flip before the change goes live.

A governed gateway is not unbreakable. It has to assume an attacker can get in. What changes is what that attacker walks away with. An attacker who breaks in the same way finds no standing access to inherit, no agent-usable credential to steal and every action still gated and recorded. Even in the worst case, the one Darktrace described, a break-in here is worth a fraction of what it was worth there.

How the Governed Gateway Is Built

Because the credential never reaches the agent, a break-in inherits nothing and every decision is still recorded.

Governedagent → apps
Caller
Potential break-in
Cakewalk gateway
Policy gate
OPA/Rego, re-evaluated every call
Credential store
KMS-wrapped, injected server-side
Audit
event per decision
Credential
injected
this call
This task's app
scoped and gated

4Concentration Becomes Control

Putting agent access in one place creates a target. Every control point does, which is why concentration itself is not the problem. What that target is worth to an attacker who seizes it is a design choice. The same concentration that made the LiteLLM AI gateway worth attacking is what makes a governed gateway the one place to govern. Governing here covers what the agent does in the company's apps. What it does inside its own runtime stays outside the gateway's view. Those app calls are where a break-in turns into damage.

That is why Cakewalk builds at the gateway rather than app by app, where enforcement waits on every app to ship its own hooks and only ever covers the ones that did. A gateway that holds nothing standing, checks every governed call as it happens and records the result turns that concentration into control. The position that could have opened everything up becomes the control point agent access has been missing.

References

  1. Darktrace (2026). When AI Infrastructure Becomes Part of the Attack Surface. darktrace.com
  2. Google Cloud (2026). Agent Gateway overview, Gemini Enterprise Agent Platform documentation. docs.cloud.google.com
  3. AWS (2026). Amazon Bedrock AgentCore Developer Guide: Policy. docs.aws.amazon.com
  4. Cloudflare (2026). MCP Server Portals, Cloudflare One documentation. developers.cloudflare.com
  5. Okta (2026). Okta Agent Gateway: Secure Runtime AI Agent Governance. okta.com