Enterprise Deployment Guide: Ensuring Complete Agent Coverage
How to guarantee every agent request flows through SatGate — MCP, HTTP, and network-level enforcement.
The Problem
In enterprise environments, AI agents have multiple ways to make API calls: through configured MCP tools, through built-in client tools (Cursor, Claude Desktop), or through direct HTTP. If SatGate only covers one path, agents can bypass governance by using another. This guide explains how to close every gap.
Three Layers of Enforcement
Complete coverage requires three complementary layers. Each one closes a different bypass path.
Tool-Level Governance
API-Level Governance
Guarantee
Layer 1: MCP Proxy — Tool-Level Governance
- In Cloud mode, add your MCP server as an upstream — governance is automatic. In self-hosted mode, configure a route with MCP parsing enabled.
- SatGate parses every JSON-RPC
tools/calland attributes cost per tool automatically - No per-tool route configuration needed
- Gives you: which tool was called, what parameters, projected cost, delegation chain
- Supports all policy modes: Observe for visibility with no enforcement, Control for budget enforcement per tool call
- Budget enforcement works at the per-tool granularity — each tool call is individually governed via ToolCosts
When to use
When agents are configured to use MCP tools and you want per-tool governance, cost attribution, and budget enforcement.
☁️ SatGate Cloud
- Open MCP → Upstreams in the dashboard and add your MCP server
- Set enforcement mode in MCP → Settings
- Connect your agent's MCP client to the SatGate MCP endpoint
- Configure per-tool costs in MCP → Cost Profiles
No route configuration needed — governance is automatic.
🔧 Self-Hosted Gateway
- Add your MCP server as an upstream in
gateway.yaml - Create a route with
mcp.enabled: true - Set policy to Observe or Control
- Configure
toolCostsfor per-tool cost attribution
Route parses JSON-RPC bodies for tool-level governance.
Layer 2: HTTP Proxy — API-Level Governance
- One route per upstream API (e.g.,
/openai/,/anthropic/,/internal-api/) - Each route gets its own policy and cost-per-request configuration
- Route transforms can inject API keys via headers — agents never see the real credentials
- Budget enforcement happens BEFORE the upstream call is made
- Governs agents that call APIs directly — built-in tools,
curl, SDKs, or any HTTP client - Independent from the MCP proxy — covers a different traffic path (HTTP requests vs JSON-RPC tool calls)
When to use
Always. This governs direct API calls — REST, HTTP, any non-MCP traffic. Agents using built-in tools, SDKs, or direct HTTP clients are covered here, independent of MCP proxy.
Setup
- Add each API provider as an upstream (OpenAI, Anthropic, your internal APIs)
- Create a route per upstream with appropriate path prefix
- Configure Strip Prefix in Advanced settings
- Set policy and budget per route
- Point agent traffic to SatGate's address instead of the API directly
Layer 3: Network Policy — Guarantee
- Block direct outbound access from agent hosts to LLM provider IPs
- Only the SatGate gateway gets outbound access to upstream APIs
- Same pattern as a corporate web proxy or egress firewall
- Agents can attempt ANY path (MCP, built-in, direct HTTP) — network policy routes all traffic through SatGate. Without a valid token, requests are rejected (401)
When to use
Production enterprise deployments where bypass prevention is a requirement.
Implementation options
Network policies that restrict pod egress to SatGate's cluster IP only.
Firewall rules blocking direct access to api.openai.com, api.anthropic.com, etc. from agent subnets.
The goal is simple: agents cannot reach LLM providers without going through SatGate. Once traffic arrives at SatGate, deny-by-default handles the rest — no valid token means no access, preventing ghost spend at the infrastructure level.
Coverage Matrix
| Scenario | MCP Proxy | HTTP Proxy | Network Policy | Covered? |
|---|---|---|---|---|
| Agent uses SatGate MCP tools | ✅ Full governance + attribution | N/A | N/A | ✅ Per-tool governance + enforcement |
| Agent uses native tool, traffic through proxy | N/A | ✅ Budget enforced | N/A | ✅ Enforced |
| Agent uses native tool, direct internet | ❌ | ❌ | ✅ Blocked / redirected | ✅ Guaranteed — blocked without token, governed with token |
| All three layers active | ✅ Tool-level governance | ✅ API-level governance | ✅ Guarantee | ✅ Complete coverage |
Recommended Enterprise Configuration
MCP + HTTP proxy in Observe mode. Zero disruption.
Understand agent traffic patterns before enforcing anything.
Activate budget enforcement. Agents exceeding budget get HTTP 402.
Production hardening. Block direct outbound to LLM providers.
Visualize the full delegation hierarchy. See every agent, every token, every budget.
Ensuring MCP Tool Priority
Even with SatGate MCP configured, AI coding assistants may choose built-in tools over SatGate tools. The model picks whichever tool seems most relevant — there's no protocol-level "force MCP" switch. These techniques ensure SatGate tools are used consistently.
Tier 1: Client Rules (Most Practical)
Each client supports project-level rules that steer tool selection toward SatGate MCP tools:
Cursor — .cursor/rules/satgate.mdc
Claude Desktop / Claude Code — .claude/settings.json or system prompt
Or in .claude/CLAUDE.md:
Windsurf — .windsurfrules
⚠️ Note
These are prompt-level instructions — the model follows them ~95% of the time. For guaranteed enforcement, combine with Layer 3 (Network Policy).
Tier 2: Tool Naming Optimization
When SatGate MCP tool names and descriptions closely match the user's intent, models prefer them over built-in alternatives.
- Use clear, action-oriented names:
search_web,call_api,query_database - Write descriptions that match natural language: "Search the web for information" beats "Execute web search query via proxy"
- If SatGate exposes a tool that overlaps with a built-in (e.g., both have
web_search), make the SatGate description more specific and useful - Include "governed" or "audited" in descriptions — models learn these signal compliance requirements
Tier 3: Network Policy (Backstop)
DNS override and firewall rules from Layer 3 above catch the calls that slip through prompt-level steering. When an agent ignores client rules and uses a built-in tool to call an API directly, network policy redirects that traffic through SatGate anyway.
See the Layer 3: Network Policy section above for implementation options including DNS override, cloud network policies, and firewall rules.
💡 Best Practice
Use all three tiers together. Client rules handle 95% of cases. Tool naming improves selection. Network policy guarantees no bypass.
Preventing Ghost Spend
"Ghost spend" — API costs from agents bypassing governance — is a top enterprise concern. SatGate's deny-by-default architecture eliminates it without any additional features. Here's how the existing layers work together.
The Attack Scenario
A developer (or their agent) tries to skip SatGate MCP and call OpenAI/Anthropic directly — using a built-in tool, curl, or a custom HTTP client. Without governance, this spend is invisible and unbudgeted.
How SatGate Prevents It
# What happens when an agent tries to bypass SatGate:
Agent → direct call to api.openai.com
↓ (network policy intercepts)
Network Policy → routes to SatGate Gateway
↓ (check for macaroon token)
SatGate → valid token?
❌ No token
401 Rejected — ghost spend = $0
✅ Valid token
Policy enforced → budget checked → request proxied
The Three-Layer Defense
Steer agents to use SatGate MCP tools. 95% of bypass attempts never happen because the model follows the rules.
All LLM traffic routes through SatGate regardless of which tool made the call. The agent can't reach OpenAI/Anthropic without going through the gateway.
Every non-public route requires a valid macaroon token. No token = 401. No exceptions. The API key never reaches the upstream provider.
✅ Result
Zero ghost spend. The agent either uses SatGate (governed, budgeted, audited) or it doesn't reach the API at all.
💡 Key Insight
You don't need a new feature to prevent ghost spend. SatGate's existing deny-by-default architecture + standard network policy = complete prevention. This is infrastructure-level enforcement, not prompt-level hope.
Summary
= Tool-Level Governance
Per-tool costs, budgets, attribution
= API-Level Governance
Per-route costs, direct API traffic
= Guarantee
No bypass possible
All three together = complete enterprise coverage