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.

#SurfaceExamplesAiria control pointMode
01Web browserclaude.ai in Chrome / Edge / SafariBrowser extensionInline · pre-submit
02Native appsClaude Desktop, Claude iOS / AndroidCompliance API + OpenTelemetryOut-of-band
03Developer toolsClaude Code, IDE plugins, SDKsAI Gateway (LLM proxy)Inline · wire-level
04Cowork & agentsClaude Cowork, agent integrationsAI Gateway (routed) + MCP GatewayInline · 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 · Audit

A · Build the gateway (Airia side)

Gateway → AI Gateway → Add Configuration. Name it for the vertical, not a customer (e.g. Claude_Dev_Tools).
General tab → toggle on Anthropic as the provider.
AI Service Authentication — paste the org's upstream Anthropic API key here (BYOK). This is the credential the gateway uses to call Anthropic; it never leaves the gateway. (Or use subscription pass-through — see the billing note below.)
Allowed models — tag-list the models users may select (e.g. claude-opus-4-8, claude-sonnet-4-6). Empty = allow all.
User Access tab → add users / groups, then issue a per-user gateway key (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

Enable Developer mode: Help → Troubleshooting → Enable Developer Settings. A Developer menu appears.
Developer → Open Third-Party Inference → Connection.

Fill the connection fields:

FieldValue
ConfigurationGateway
Gateway Base URLregional gateway endpoint + /anthropic — e.g. https://prod-na.gateway.airia.ai/anthropic
Gateway API Keythe user's agk-… key
Gateway Auth Schemex-api-key
Apply Locally. The bottom-left badge should read Cowork 3P · Gateway.
Verify in Gateway → Analytics → Gateway Monitoring — your "ping" appears with user attribution and model.

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 = GatewayAll 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.

RegionBase URL (append /anthropic)
Production North Americahttps://prod-na.gateway.airia.ai/anthropic
Production Europe 1https://prod-eu1.gateway.airia.ai/anthropic
Production Australiahttps://prodaus.gateway.airia.ai/anthropic
Production MENAhttps://prod-mena.gateway.airia.ai/anthropic
Custom tenantyour 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

BehaviorEffect on claude.ai
BlockUser cannot reach the domain — block page shown.
WarnWarning banner; user can acknowledge and proceed (logged).
MonitorSilent — no user-visible change, usage logged.
RedirectReroute 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:

In your MDM / Group Policy, set the browser's force-install list — Chrome ExtensionInstallForcelist, Edge ExtensionInstallForcelist — to the Airia extension ID + update URL.
Deploy that browser policy via Jamf / Intune / Kandji / GPO to the target device groups.
On next browser launch the extension installs silently and polls Airia for its policy every 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

Server Management — enable which MCP servers are available to your org.
Gateway List → Create Gateway — name it, select the apps to include, set Visibility = Tenant for a shared gateway.
Configure tools — provide credentials per app (Tenant credential level for shared service accounts, Personal for per-user OAuth like Microsoft Graph), Test Connection, then select which tools to expose.
Save — copy the gateway URL: 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

Discover → Connect → pick Intune / Kandji / Jamf. Airia mints a tenant-scoped API key and bakes it into a .mobileconfig + airiad.pkg (macOS Apple Silicon today).
Upload the profile + installer to your MDM, scope to the device group. Devices pick it up on next check-in (15 min–few hrs).
Discovery findings land in SPM → Endpoints — a third discovery surface alongside the browser extension and cloud SPM connectors.

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

PathTierCoversWhat you get
Compliance API (pull)Claude Enterpriseclaude.ai web + native appsStreams 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 + CoworkOTLP 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

Mint a tenant OTel API key in Claude Monitoring (used by the Code / Cowork push).
For Claude.ai / native (Enterprise): on claude.ai a Primary Owner creates a Compliance Access Key (Compliance API enabled; scopes read:compliance_activities / _user_data / _org_data), then adds it in Airia as an Anthropic compliance credential.
Set which surfaces to secure — toggle 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.

Verify — captured prompts/events populate the Claude Monitoring dashboard (Sessions / Unique Users) once clients send traffic.

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.com at 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.json allowlist 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 captureRequestBody and/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.

Was this page helpful?

On this page