Securing Claude with AiriaNewEnterprise
Route, govern, and audit every way Claude reaches enterprise data — browser, native apps, developer tools, and Cowork/agents — through one set of Airia policies.
Claude reaches enterprise data through four distinct surfaces — the web browser, native apps, developer tools, and Cowork/agents. Each exposes a different interception hook, so each needs a different control point. This guide walks the build for all four, plus how to push every control down to the fleet via MDM.
The goal: define your DLP detectors, guardrails, and agent constraints once, then enforce them consistently at whichever layer each surface exposes.
The four surfaces
You shouldn't write four sets of rules for four surfaces. Define the policy once; apply it at each surface's interception point.
| # | Surface | Examples | Airia control point | Mode |
|---|---|---|---|---|
| 01 | Web browser | claude.ai in Chrome / Edge / Safari | Browser extension | Inline · pre-submit |
| 02 | Native apps | Claude Desktop, Claude iOS / Android | Compliance API + OpenTelemetry | Out-of-band |
| 03 | Developer tools | Claude Code, IDE plugins, SDKs | AI Gateway (LLM proxy) | Inline · wire-level |
| 04 | Cowork & agents | Claude Cowork, agent integrations | AI Gateway (routed) + MCP Gateway | Inline · runtime |
The sections below map onto these surfaces: §1 covers surfaces 03 + 04 (inference), §2 covers surface 01, §3 covers the tool side of 03 + 04, §4 is the unifier that forces 03 + 04 onto the gateways from the device, and §5 covers surface 02 (native + mobile) out-of-band.
1 · AI Gateway — route Cowork & Claude Code through Airia
Anthropic's developer surfaces (Claude Code, and Claude Desktop / Cowork via Third-Party Inference) all support a custom API base URL. Point them at the Airia AI Gateway and every prompt, completion, and tool call passes through Airia on the wire — DLP, prompt-injection defense, model allowlist, budgets, audit.
Developer · Cowork → Airia AI Gateway → Anthropic Claude
↓ DLP · Prompt-injection · Agent constraints · Routing · AuditA · Build the gateway (Airia side)
Claude_Dev_Tools).claude-opus-4-8, claude-sonnet-4-6). Empty = allow all.agk-…) for each developer. Per-user keys are what make the Gateway Monitoring User column attribute traffic correctly.Two keys, don't mix them up. The agk-… gateway key lives in the client and authenticates the user to Airia. The Anthropic API key lives only inside the gateway config and authenticates Airia to Anthropic — that's what gets billed.
B · Wire the client — Claude Desktop / Cowork
Help → Troubleshooting → Enable Developer Settings. A Developer menu appears.Fill the connection fields:
| Field | Value |
|---|---|
| Configuration | Gateway |
| Gateway Base URL | regional gateway endpoint + /anthropic — e.g. https://prod-na.gateway.airia.ai/anthropic |
| Gateway API Key | the user's agk-… key |
| Gateway Auth Scheme | x-api-key |
What this gets you. Routing inference through the gateway effectively turns off the default claude.ai chat in the Claude app — what remains is Cowork and Claude Code, both routed through Airia. Every request now shows in Gateway Monitoring, and you can layer DLP guardrails and agent constraints (tool block/audit) on the same traffic. Set constraint Scope = Gateway — All Agents only catches Airia pipeline traffic, not Claude Code / Cowork.
C · Regional gateway base URLs
Append /anthropic to your tenant's regional endpoint. Confirm the exact endpoint for your tenant with your Airia representative before rolling out.
| Region | Base URL (append /anthropic) |
|---|---|
| Production North America | https://prod-na.gateway.airia.ai/anthropic |
| Production Europe 1 | https://prod-eu1.gateway.airia.ai/anthropic |
| Production Australia | https://prodaus.gateway.airia.ai/anthropic |
| Production MENA | https://prod-mena.gateway.airia.ai/anthropic |
| Custom tenant | your gateway URL + /anthropic |
D · Push it down to the fleet (MDM)
Two surfaces, two managed-config mechanisms — deploy whichever your users run, or both.
Build the Third-Party Inference config in-app, then export the managed profile — .mobileconfig (macOS) or .reg (Windows) — and push via Jamf / Intune / Group Policy.
- A managed profile renders the in-app config read-only — the "lock" the env-var drop lacks.
- Push the profile before the app to prevent first-launch claude.ai sign-ins.
- Allowlist the app by signing identity, not file path.
Authoritative MDM reference: claude.com/docs/cowork/3p/installation
Billing — BYOK vs subscription pass-through. Either paste one org Anthropic API key in the gateway (BYOK, gateway is billing proxy), or run subscription pass-through: leave ANTHROPIC_API_KEY unset, set ANTHROPIC_CUSTOM_HEADERS: "x-airia-key: agk-…", and each developer's own Claude subscription pays while Airia governs. A claude.ai seat subscription alone exposes no API endpoint — pass-through needs the API entitlement.
2 · Browser extension — govern claude.ai in the browser
The Claude app is now locked to Cowork + Code, but users can still open claude.ai in a browser tab — and that surface is not routable through the AI Gateway. The Airia Browser Extension is the control point: it's the one place Airia can intervene before the prompt leaves the device.
Be accurate on what it does. The extension is domain-scoped — Block / Warn / Monitor / Redirect at the AI-service domain — plus optional request-body capture for post-hoc DLP. It is not pre-submit keystroke DLP. The strong, real story is Shadow-AI discovery + steering + monitoring.
A · Configure the policy
| Behavior | Effect on claude.ai |
|---|---|
| Block | User cannot reach the domain — block page shown. |
| Warn | Warning banner; user can acknowledge and proceed (logged). |
| Monitor | Silent — no user-visible change, usage logged. |
| Redirect | Reroute e.g. chatgpt.com → your sanctioned claude.ai deployment. |
Flip captureRequestBody: true to ship the prompt body to Airia so the same DLP filters that run on your gateways apply to claude.ai traffic. The extension runs client-side PII scrubbing first ("N sensitive fields were redacted before truncation") — a clean privacy story.
UI: Secure → Runtime Security → Browser Extension Policies. Scope per group via groupIds.
B · Push the extension to devices
The extension is deployed like any managed browser extension — force-installed so users can't remove it:
ExtensionInstallForcelist, Edge ExtensionInstallForcelist — to the Airia extension ID + update URL.pollingIntervalMinutes (default 5) — so rule changes propagate without redeploying.For full force-install and managed-storage configuration steps across Chrome, Edge, Firefox, and JAMF Pro (macOS), see the Browser Extension MDM Deployment Guide.
C · Monitor claude.ai usage
Every request the extension sees on a matching domain emits a Shadow AI event — domain, method, actionTaken (MONITORED / WARNED / BLOCKED / REDIRECTED), redacted body, browser, user. Events from one tab session share a batchId. Surfaced in the Activity Monitor and the Shadow-AI events feed, alongside gateway violations — one feed across surfaces.
3 · MCP Gateway — govern the tool side
Routing inference through the AI Gateway doesn't govern the tools Claude calls. The MCP Gateway aggregates many MCP servers behind a single authenticated URL, manages all downstream credentials centrally, and gives IT one address to allowlist instead of dozens of local configs with plaintext keys.
Claude Code · Cowork · Cursor → Airia MCP Gateway (one OAuth URL)
↓ manages all downstream auth
[GitHub] [Atlassian] [Slack] [Snowflake] [Airia-hosted & remote servers]A · Set it up
https://<tenant>.mcp-gateway.airia.ai/gateway/{id}/mcp. For more than ~50 tools, use the /radar variant for on-demand tool discovery.B · Push it down to clients
Distribute the gateway URL into managed client configs via the same MDM file drop as §1 — one MCP entry replaces every local server.
Add the MCP server entry pointing at the gateway URL to the managed client config. Users authenticate once via OAuth on first connect; Airia handles every downstream credential after that.
Where enforcement happens. Agent constraints and content guardrails apply at the AI Gateway — every tool call's full context (which tool, what query, which user) is visible there. The MCP Gateway handles routing, credential management, and scans tool definitions for prompt injection before they enter the model context.
4 · Endpoint agent — force both gateways from the device
Pushing settings.json / config.toml per client works, but it's per-app and users with file write access can override it. The Airia endpoint agent (airiad) is the device-level unifier: deploy it once via MDM, and in enforce mode it rewrites both the LLM-client base URLs and the MCP server entries on the workstation to point at your Airia gateways — automatically, on every check-in.
A · Deploy via MDM
.mobileconfig + airiad.pkg (macOS Apple Silicon today).B · Observe vs Enforce
Discovery only. The agent inventories the MCP servers and LLM clients configured on each device and reports them — no changes to developer machines. Start here; review what would be rewritten before flipping.
This is what closes the loop. Enforce mode makes the device route inference through the AI Gateway and tools through the MCP Gateway with no per-user setup — and it catches local clients an MDM file drop would miss. Alternative / complement: chain outbound AI traffic into the gateway at the network/SASE layer (Zscaler / Prisma / Netskope / Cloudflare) — no software on the endpoint. Customers already running SASE often prefer that path.
5 · Native apps & mobile — see what you can't proxy
Claude iOS / Android, and any Claude Desktop chat you didn't lock to Third-Party Inference, do not honor a custom base URL — there is no inline interception hook short of TLS-inspecting SASE. So the play here is different: you can't block at the wire, so make every interaction visible, classify it, and remediate after the fact. Out-of-band — minutes, not days, but the detection (and deletion) is real.
Claude iOS · Android · Desktop chat → Anthropic
↓ telemetry (out-of-band)
Airia → classify · detect · remediate (delete chat · alert · escalate)A · Two ingestion paths — pick by Claude tier
| Path | Tier | Covers | What you get |
|---|---|---|---|
| Compliance API (pull) | Claude Enterprise | claude.ai web + native apps | Streams every prompt + response to Airia → SIEM / data lake. Supports automated chat deletion — Airia can revoke a violating conversation from the user's history. |
| OpenTelemetry (push) | Claude Teams (& where Compliance API isn't available) | Claude Code + Cowork | OTLP collectors give meaningful visibility into Teams-tier usage. Less rich than the Compliance API, but works without enterprise support. |
Both feed the same Airia pipeline — capture → detect (PII patterns, "Confidential" markings, regulated data classes) → remediate (delete violating chat, notify the user, escalate to the AI governance committee). Configure both from one place: Audit → Usage → Claude Monitoring.
B · Turn it on
read:compliance_activities / _user_data / _org_data), then adds it in Airia as an Anthropic compliance credential.secureCode / secureCowork / secureClaudeAi and save.Deploy the push config for Code / Cowork (MDM, alongside §1):
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_LOGS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/json",
"OTEL_EXPORTER_OTLP_LOGS_ENDPOINT": "<tenant>/v1/ClaudeCodeOtelIngest/ingest",
"OTEL_EXPORTER_OTLP_HEADERS": "X-API-Key=<otel-key>",
"OTEL_LOG_USER_PROMPTS": "1",
"OTEL_LOG_RAW_API_BODIES": "1"
}
}Cowork: set the same OTLP endpoint + X-API-Key header under claude.ai/admin-settings/cowork → Monitoring.
Honest caveats. This is observation, not prevention — pair it with the inline controls (§1–§4) for surfaces that can be proxied. OTEL_LOG_RAW_API_BODIES ships full prompt/response bodies — high signal, high sensitivity; clear it with compliance. If the Compliance API can't be enabled (no Enterprise / no Primary-Owner access), fall back to the browser extension (§2) for the claude.ai surface.
Closing the gaps
The build above covers all four surfaces. A few cross-cutting items still close real bypass paths.
- ① Block direct egress (critical). The gateway only enforces if users can't reach Anthropic directly. Block
api.anthropic.comat the firewall / SASE layer — otherwise a developer unsets the env var and bypasses everything. A managed config file is the floor, not the ceiling. - ② The Bash blindspot. Agent constraints intercept tool calls at the gateway — but Bash commands Claude Code runs locally never traverse it. Mitigate with Claude Code permission modes +
~/.claude/settings.jsonallowlist hooks. The on-device agent (§4) closes this at the OS layer. - ③ Content DLP on claude.ai. The browser extension is domain-scoped. For real prompt-content visibility on claude.ai, turn on
captureRequestBodyand/or the Compliance API — that's where content-level DLP actually runs, post-submit. - ④ Cowork "3P" Skills drop-out. Routing Cowork through a gateway puts it in Cowork-on-3P mode — no Anthropic account, so users lose personal Skills, history, memory, connectors. Working-as-designed, not user-fixable. Provision Skills as MDM-pushed files.
- ⑤ One policy library + weekly audit. Define DLP detectors and guardrails once and apply across all surfaces. Then audit the gateway feed weekly — any active developer with zero gateway traffic in a week is on PTO or bypassing.
The full-stack enforcement recipe: AI Gateway (BYOK or pass-through) + MCP Gateway + MDM-pushed managed profiles + endpoint agent in enforce mode (or SASE proxy-chaining) + egress block to api.anthropic.com + Browser Extension Shadow-AI policy + Compliance API / OTel for mobile + agent constraints scoped to Gateway + weekly feed audit. Each layer closes a different bypass.