# GraphWarden > Zero-trust security proxy for Microsoft Graph API. Policy enforcement, data filtering, and zero-knowledge credentials — deployed in under 60 minutes. ## Documentation - [AI-native documentation for GraphWarden](/docs/ai-agents/overview): GraphWarden's documentation is authored for AI coding assistants and search engines as a primary audience. The llms.txt index, the x-doc.ai-prompt component, and TechArticle JSON-LD on every guide help Claude, Cursor, ChatGPT, and other agents generate correct GraphWarden integrations from a single prompt. - [Prompts for common GraphWarden integration tasks](/docs/ai-agents/prompts): Copy-paste prompts for AI coding assistants covering the most common GraphWarden integration tasks — migrating a .NET or PowerShell app, adding GraphWarden support to a SaaS product, routing CI/CD pipelines, and building rulesets. Each prompt references https://graphwarden.com/llms.txt so the agent pulls current documentation. - [Agent API: HMAC-authenticated endpoints between the proxy and the control plane](/docs/api-reference/agent-api): The GraphWarden proxy communicates with the control plane over four HMAC-authenticated endpoints — sync, heartbeat, audit, and metrics. This page documents the canonical request signing convention, the four endpoints, rate limits, error responses, and a hand-verifiable worked example that any HMAC-SHA256 library can reproduce. - [Condition types: all 11 matchers used in GraphWarden rulesets](/docs/api-reference/condition-types): GraphWarden rulesets evaluate each Microsoft Graph request against an ordered list of conditions. Conditions match on endpoint path, HTTP method, request headers, app identity, and other request attributes. This page documents all 11 condition types, their YAML shape, and a matching example for each. See the rule schema reference for the top-level YAML contract. - [GraphWarden proxy environment variables](/docs/api-reference/environment-variables): Every environment variable the GraphWarden proxy reads at startup, with required flag, default, and purpose. Covers core identity, TLS, Graph auth, Key Vault, JWT signing, rule sync, audit, and logging. - [Rule schema: the GraphWarden ruleset YAML format](/docs/api-reference/rule-schema): GraphWarden rulesets are YAML documents with a top-level rules list. Each rule pairs a match block with optional conditions, a response filter, and an action. This page documents the top-level shape, rule-level keys, evaluation order, and the names of the eleven condition types and nine transform types that Phase 6 will document per-type. - [Transform types: all 9 transformations used in GraphWarden rulesets](/docs/api-reference/transform-types): When a GraphWarden rule matches with action filter, its response filter can transform individual properties before the response returns to the caller. The 9 transform types cover masking, redaction, hashing, truncation, regex substitution, and other shape-preserving edits. This page documents each transform with its YAML shape and a before/after example. - [Run GraphWarden proxy deployments from Azure DevOps Pipelines](/docs/ci-cd/azure-devops): A complete Azure DevOps YAML pipeline that builds, tests, and smoke-tests a GraphWarden proxy deployment. Variable groups hold credentials and a banner comment prevents accidental commits of real secrets. Runnable after replacing the marked values with your organization's tenant, client id, and secret. - [Run GraphWarden proxy deployments from GitHub Actions](/docs/ci-cd/github-actions): A complete GitHub Actions workflow that builds, tests, and runs a GraphWarden smoke test. Repository secrets hold credentials and a banner comment prevents accidental commits. Runnable after adding the required repository secrets. - [Manage GraphWarden secrets across environments](/docs/ci-cd/secrets-management): Store GraphWarden credentials in Azure Key Vault for production, in your CI platform's secret store for pipelines, and in a per-developer .env file for local work. Never commit secrets to source. This page covers the three-tier model, the rotation playbook, and how to detect accidental commits. - [Provision GraphWarden infrastructure with Terraform](/docs/ci-cd/terraform): A Terraform module that provisions the GraphWarden proxy as Azure Container Apps alongside its Key Vault, user-assigned managed identity, and required permissions. This page provides a runnable HCL module with variables for the proxy's configuration. The module is a starting point — adapt to your naming conventions. - [App identities: proxy credentials vs. real Graph credentials](/docs/concepts/app-identities): Your app authenticates to GraphWarden using proxy credentials issued by GraphWarden. GraphWarden holds the real Graph credentials in your Azure Key Vault. Your app never sees the real credentials. - [How requests flow through GraphWarden](/docs/concepts/architecture): The proxy sits between your client app and Microsoft Graph, authenticates the client, evaluates a ruleset, and forwards allowed calls. - [Deployment modes: hosted, on-premise, and hybrid](/docs/concepts/deployment-modes): Choose hosted (GraphWarden runs the proxy), on-premise (you run it as a Windows Service or container), or hybrid (proxy on-prem, control plane hosted). Each mode trades off data residency, ops burden, and time to deploy. - [Rulesets and rules: the GraphWarden data model](/docs/concepts/rulesets-and-rules): Rulesets group ordered rules; rules match conditions and apply an action (allow, filter, block, or log_only). Every Graph request is evaluated against the caller's App Identity ruleset. - [Trust model: zero-knowledge credentials and what GraphWarden does not see](/docs/concepts/trust-model): GraphWarden stores your Graph API credentials in your Azure Key Vault. It reads them at runtime to authenticate to Graph on your behalf. Audit logs capture metadata only; response bodies are not stored by default. - [Deploy the GraphWarden proxy to Azure Container Apps](/docs/deployment/azure-container-apps): Azure Container Apps hosts the GraphWarden proxy as a managed container with auto-scaling, integrated Azure AD for Key Vault access, and Azure Monitor telemetry. This page covers ACA-specific deployment via Azure CLI and Bicep, ingress configuration, and scale rules tuned to your Graph request volume. - [Deploy the GraphWarden proxy with Docker](/docs/deployment/docker): Run the GraphWarden proxy as a Docker container on any Linux or Windows Docker host. The image is built from the published .NET binaries; configuration is environment-driven through the full environment-variables reference. This page covers a Dockerfile pattern, docker-compose orchestration, health checks, and Key Vault access from a container. - [Network and firewall requirements for the GraphWarden proxy](/docs/deployment/networking-firewall): The GraphWarden proxy needs outbound HTTPS to Microsoft identity and Graph endpoints, your Azure Key Vault, and the GraphWarden control plane. It accepts inbound HTTPS on its configured listener port (default 5000). This page enumerates every hostname and port the proxy uses and offers a verification snippet. - [Install the GraphWarden proxy as a Windows Service](/docs/deployment/on-premise-windows): Install and operate the GraphWarden proxy as a Windows Service on Windows Server 2019 or 2022. The proxy runs a self-hosted Kestrel listener and is managed via sc.exe or the Services MMC snap-in — it does NOT run under IIS. This page covers service-account setup, Key Vault permissions, and firewall prerequisites. - [Sizing the GraphWarden proxy for your request volume](/docs/deployment/sizing): The GraphWarden proxy's CPU and memory needs scale with request rate and response-body transform complexity. This page gives conservative starting-point recommendations and a methodology for profiling your workload. Adjust based on your observed CPU and memory during load testing — these numbers are reference baselines, not guarantees. - [Integrate GraphWarden with a .NET application](/docs/developers/dotnet): A .NET app using Microsoft.Identity.Client and Microsoft.Graph can route through GraphWarden by overriding two values — the token endpoint and the Graph base URL. This page walks a complete working sample. - [Integrate GraphWarden with a Go application](/docs/developers/go): A Go app using msgraph-sdk-go and azidentity can route through GraphWarden by overriding two values — the token endpoint and the Graph base URL. This page walks a complete working sample. - [Route an existing app through GraphWarden](/docs/developers/migration-guide): Switching a Microsoft Graph integration to GraphWarden changes two things — the Graph base URL and the credentials. Your SDK calls, scopes, and response shapes stay the same. - [Integrate GraphWarden with a Node.js application](/docs/developers/nodejs): A Node.js app using @microsoft/microsoft-graph-client and @azure/msal-node can route through GraphWarden by overriding two values — the token endpoint and the Graph base URL. This page walks a complete working sample. - [Integrate GraphWarden with a PHP or Laravel application](/docs/developers/php-laravel): A PHP or Laravel app using microsoft/microsoft-graph can route through GraphWarden by overriding two values — the token endpoint and the Graph base URL. This page walks a complete working sample plus a Laravel service-container binding. - [Integrate GraphWarden with a Python application](/docs/developers/python): A Python app using msgraph-sdk and azure-identity can route through GraphWarden by overriding two values — the token endpoint and the Graph base URL. This page walks a complete working sample. - [What GraphWarden does and when to use it](/docs/introduction): GraphWarden is a Microsoft Graph API governance proxy. Your apps authenticate to GraphWarden instead of Graph directly; it enforces rulesets, audits calls, and keeps your Graph credentials in your own Key Vault. - [GraphWarden-compatible partners](/docs/isv/certified-partners): This page lists third-party products whose vendors have published a GraphWarden compatibility statement. Inclusion here reflects a vendor-published declaration, not a GraphWarden-issued certification. - [Add GraphWarden compatibility to your product](/docs/isv/compatibility-guide): GraphWarden-compatible means your product reads the Microsoft Graph base URL and credentials from customer configuration instead of hardcoding them. This page walks through the technical integration, edge cases, and a compatibility test checklist. - [GraphWarden compatibility statement (template)](/docs/isv/compatibility-statement): Copy-paste template an ISV uses to declare GraphWarden compatibility in their own product documentation. - [Why your product should support GraphWarden](/docs/isv/overview): Enterprise customers adopt GraphWarden to govern Microsoft Graph API access. If your product calls Graph, those customers will ask whether you support routing through the proxy. This page explains the business case for declaring compatibility and what support means technically and operationally. - [Graph subscriptions, webhooks, and callbacks with GraphWarden](/docs/isv/webhooks-and-callbacks): Microsoft Graph subscriptions deliver change notifications directly from Graph to your endpoint — they bypass the GraphWarden proxy entirely. This page explains the edge cases, audit-gap implications, and mitigation patterns. - [PowerShell cookbook: common M365 admin tasks through GraphWarden](/docs/powershell/cookbook): Copy-paste PowerShell snippets for common Microsoft 365 administration tasks routed through GraphWarden. Each snippet assumes you have already connected via Connect-MgGraph per the quickstart. Snippets are reference-authored and should be validated on a non-production tenant before operational use. - [Route Exchange Online PowerShell through GraphWarden](/docs/powershell/exchange-online): Connect-ExchangeOnline can route through GraphWarden by supplying a proxy-acquired access token. All Exchange Online cmdlets (Get-Mailbox, Set-CASMailbox, and the rest) then flow through the proxy and are subject to your ruleset's endpoint allowlist, with the caveat that some legacy Exchange REST operations bypass Microsoft Graph entirely. - [Route legacy AzureAD and MSOnline PowerShell modules through GraphWarden](/docs/powershell/legacy-azuread-msonline): The deprecated AzureAD and MSOnline modules can be routed through GraphWarden with the same override pattern as Microsoft.Graph — acquire a proxy JWT, pass it to Connect-AzureAD or Connect-MsolService, and existing cmdlets flow through the proxy. This page also flags the endpoint differences that matter when planning a migration. - [Manage Microsoft 365 with the Microsoft.Graph PowerShell module through GraphWarden](/docs/powershell/microsoft-graph-module): Once connected through the quickstart, Microsoft.Graph cmdlets work against GraphWarden transparently. This page covers common Microsoft 365 admin scenarios and how ruleset enforcement surfaces in scripts. - [Route a PowerShell script through GraphWarden](/docs/powershell/quickstart): A PowerShell script using Microsoft.Graph cmdlets routes through GraphWarden by acquiring a proxy JWT and pointing Connect-MgGraph at the proxy. Every cmdlet you already run works unchanged. - [Deploy GraphWarden and make your first proxied Graph call](/docs/quickstart): Deploy the GraphWarden proxy as a Windows Service or Docker container, provision one App Identity in the Admin app, and route one Graph call through the proxy. Expected time is about ten minutes on a prepared host. - [Developer integration](/docs/developers): Route your applications through GraphWarden without rewriting your Microsoft Graph calls. - [PowerShell integration](/docs/powershell): Route Microsoft Graph PowerShell scripts through GraphWarden without changing your cmdlets. - [API reference](/docs/api-reference): Canonical specifications for the GraphWarden proxy, rulesets, and agent API. - [ISV integration](/docs/isv): Declare GraphWarden compatibility and support customers who run their Microsoft Graph calls through the proxy. - [CI/CD integration](/docs/ci-cd): Run GraphWarden proxy deployments and automated tests from your CI/CD pipeline. - [Deployment](/docs/deployment): Install and operate the GraphWarden proxy on-premises or in hybrid mode. - [AI agents](/docs/ai-agents): Build GraphWarden integrations using Claude Code, Cursor, Copilot, and ChatGPT. - [Trust](/en/trust): Zero-knowledge credentials, seven aligned compliance frameworks, audit-ready logging. ## Compliance - [GraphWarden and GDPR: how the proxy supports your compliance obligations](/en/compliance/gdpr): Article-by-article mapping of the European Union General Data Protection Regulation (GDPR) obligations to GraphWarden's technical capabilities, with explicit limits on what the proxy does and does not cover. - [GraphWarden and HIPAA: how the proxy supports your compliance obligations](/en/compliance/hipaa): Section-by-section mapping of the HIPAA Security Rule Technical Safeguards (45 CFR §164.312) to GraphWarden's technical capabilities, with explicit limits on what the proxy does and does not cover. - [GraphWarden and ISO 27001: how the proxy supports your Annex A controls](/en/compliance/iso-27001): Control-by-control mapping of ISO/IEC 27001:2022 Annex A controls to GraphWarden's technical capabilities, with explicit limits on what the proxy does and does not cover. - [GraphWarden and Loi 25: how the proxy supports your compliance obligations](/en/compliance/loi-25): Article-by-article mapping of Quebec's Loi 25 obligations to GraphWarden technical capabilities, with explicit limits on what the proxy does and does not cover. - [GraphWarden and OWASP API Security Top 10 (2023)](/en/compliance/owasp-api-security): Item-by-item mapping of the OWASP API Security Top 10 (2023) risks to GraphWarden's technical capabilities, with explicit focus on API3 (Broken Object Property Level Authorization) and API5 (Broken Function Level Authorization). - [GraphWarden and PIPEDA: how the proxy supports your compliance obligations](/en/compliance/pipeda): Principle-by-principle mapping of PIPEDA's ten Fair Information Principles to GraphWarden's technical capabilities, with explicit limits on what the proxy does and does not cover. - [GraphWarden and SOC 2: how the proxy supports your Trust Service Criteria](/en/compliance/soc-2): Criterion-by-criterion mapping of the AICPA Trust Service Criteria (Security, Availability, Confidentiality, Processing Integrity, Privacy) to GraphWarden's technical capabilities, with explicit limits on what the proxy does and does not cover. ## Product facts - GraphWarden is a Microsoft Graph API governance proxy. - Rulesets contain rules; rules pair conditions and actions. - 11 condition types and 9 transform types are available (see Phase 6 reference pages). - The Agent API between the proxy and the control plane is authenticated with HMAC-SHA256. - 4 agent API endpoints: /sync, /heartbeat, /audit, /metrics. - On-premise deployment runs as a Windows Service on Windows Server 2019 or 2022 (Kestrel self-hosted, not IIS). - Graph credentials are held in the customer's Azure Key Vault; GraphWarden reads them at runtime via get-only permission. - Audit logs capture metadata only by default (method, path, app identity, status, latency). - Bilingual compliance pages are planned for Phase 5 (Loi 25, PIPEDA, GDPR, HIPAA, SOC 2, ISO 27001, OWASP API). ## Suggested prompts for AI agents - "Migrate my .NET app to use GraphWarden as a proxy for Microsoft Graph" - "Generate a GraphWarden ruleset for an HR app that reads only HR group members with 5 properties" - "Add GraphWarden support to my SaaS product that uses Microsoft Graph" - "Route my PowerShell script using Connect-MgGraph through GraphWarden" - "Integrate GraphWarden into an Azure DevOps pipeline with a variable-group-backed smoke test" --- # Full documentation bodies ## AI-native documentation for GraphWarden # AI-native documentation for GraphWarden GraphWarden's documentation is structured for AI coding assistants and search engines as a primary audience. The `llms.txt` index, the ai-prompt component, and `TechArticle` JSON-LD on every guide help Claude, Cursor, ChatGPT, and other agents generate correct GraphWarden integrations from a single prompt. AI-native docs surface - An AI coding assistant that respects `llms.txt` or that you can paste documentation URLs into (Claude Code, Cursor, Copilot, ChatGPT, Perplexity) - A GraphWarden proxy URL and proxy credentials to test the generated code ## How AI agents discover this documentation GraphWarden publishes four surfaces that AI agents and search engines consume without a human in the loop. - **`/llms.txt`** — the machine-readable index. It lists every Markdown documentation page with a one-line description and links to the canonical URL on `https://graphwarden.com`. This is the primary entry point for an agent that has been pointed at the site. - **`/llms-full.txt`** — the concatenated full-text of every Markdown page in one file. Planned for Phase 3b. Agents that prefer to ingest the entire corpus in a single request will read this file once rather than crawling individual pages. - **Sitemap** — the XML sitemap at `/sitemap.xml` lists every canonical URL on the site, including the Blade landings that `llms.txt` deliberately omits. Search engines read this file when they crawl. - **JSON-LD `TechArticle`** — every Markdown page ships structured data in a `