Gemini Enterprise Agent Platform
Govern agents built on Google's Gemini Enterprise Agent Platform. One ADK plugin for the whole runtime, plus model-call guarding, card verification, and shadow-agent discovery.
Google's Gemini Enterprise Agent Platform is built on the Agent Development Kit (ADK), the Agent Runtime, and the A2A and MCP protocols. AxioRank governs all four surfaces, so a tool call is scored, held, or denied no matter which one carried it:
- ADK Runtime Plugin registers once on the Runner and governs every tool call across every agent.
- The Gemini model adapter guards the function-calling loop you run with the Gemini SDK.
- Card verification preflights the A2A agents and MCP servers your agents reach out to.
- Shadow AI discovery surfaces Vertex and Agent Engine usage from Cloud Audit Logs, so agents nobody registered still show up.
Govern the runtime with one plugin
This is the platform-native path. An ADK plugin runs
callbacks around every tool, model, and agent step for the whole Runner, so a
single registration governs every agent on the Agent Runtime with no per-tool
wrapping. AxioRankPlugin scores each tool call through AxioRank before it runs:
a require_approval hold is waited out by the client, and a deny becomes a
short refusal the model can re-plan around.
pip install axiorank[adk]from axiorank import AsyncAxioRank
from axiorank.integrations.adk import AxioRankPlugin
from google.adk.agents import Agent
from google.adk.runners import Runner
axio = AsyncAxioRank(api_key="axr_live_...")
runner = Runner(
agent=root_agent,
app_name="treasury",
session_service=session_service,
plugins=[AxioRankPlugin(axio, on_deny="return")],
)ADK invokes plugin callbacks by name, so the plugin is duck-typed and the adapter
never imports google.adk itself. Bring your own (pip install google-adk, which
axiorank[adk] installs for you).
Pass on_deny="raise" to fail the run on a denial instead of returning a
refusal the agent re-plans around. The plugin defaults to on_deny="return"
because a runtime-wide guard should keep the agent moving.
Inspect tool output for indirect injection
Pass inspect_results=True and an untrusted-source tool's OUTPUT (fetched pages,
emails, query results) is also scored for indirect prompt injection before the
agent ingests it. A deny on the output is handled like a denied call.
plugins=[AxioRankPlugin(axio, on_deny="return", inspect_results=True)]See Tool-output inspection for the full model.
Per-tool guarding without a plugin
If you would rather wrap individual tools (for example, to govern only the
high-risk ones), the same adapter exposes guard_tool / guard_tools. See the
Google ADK page.
Guard Gemini function calling
Agents that call the Gemini SDK directly (rather than through ADK) guard their
dispatch step with the Gemini adapter. It scores each functionCall before
you execute it and returns a ready-to-send functionResponse.
import { guardFunctionHandlers } from "@axiorank/sdk/gemini";
const dispatch = guardFunctionHandlers(myHandlers, axio.trace(), { onDeny: "return" });from axiorank.integrations.google_genai import guard_function_handlers
dispatch = guard_function_handlers(my_handlers, axio.trace(), on_deny="return")Full detail on the Google Gemini page.
Verify the agents and servers you reach
Gemini Enterprise leans on A2A for agent-to-agent calls and MCP for tools.
Preflight an external A2A agent or MCP server before your agent trusts it: AxioRank
resolves its card, verifies the signature, and returns a deny / review /
allow verdict.
result = axio.verify_card(url="https://partner.example.com/.well-known/agent-card.json")
if result.decision == "deny":
... # do not route to this agentDiscover shadow Gemini Enterprise agents
Model and Agent Engine calls on Vertex never cross a network egress proxy, so the
proxy channel cannot see them. Stream Cloud Audit Logs for
aiplatform.googleapis.com to AxioRank and every Vertex model invocation and
Agent Engine query lands in discovery beside your proxy and
CloudTrail findings, attributed to the principal that made the call.
Create a logging sink that forwards Vertex Data Access audit logs and post each batch to the GCP discovery endpoint with your workspace discovery token:
curl -X POST https://app.axiorank.com/api/discovery/gcp \
-H "Authorization: Bearer $AXIORANK_DISCOVERY_TOKEN" \
-H "Content-Type: application/json" \
--data @audit-logs.jsonThe payload is the Cloud Logging { "entries": [...] } shape (or a bare array of
log entries). Only invocation methods count as usage; control-plane calls are
dropped.