For your IT department
Krusgraph: what your IT department needs to know
A page to forward. It says which permissions the Krusgraph app asks for in Microsoft Entra ID and why, what is stored, where and for how long, and how to revoke access. Every point comes from the open source code and its docs.
Or save it as a PDF from the print dialog.
Who stands behind it
- Krusgraph is made and run by Kruse Consulting AB (org. nr 559174-8719).
- Member of the Microsoft AI Cloud Partner Program
- Based in Uppsala, Sweden, and Bern, Switzerland
- Built for Microsoft Fabric
- Sign in with Microsoft Entra ID
- Hosted in Azure, Sweden Central
- Contact: hello@krusgraph.com
What the Entra app asks for, and why
An administrator approves the Krusgraph app once (admin consent). All its permissions are delegated: every call runs as the signed-in person, with that person’s own Fabric rights, so Krusgraph can reach nothing that person cannot already reach. The app asks for no application permissions.
| Permission | In plain words |
|---|---|
User.Read (Microsoft Graph) | Signing in. Nothing else is read from Microsoft Graph. |
Workspace.Read.All (Fabric) | Listing the workspaces the person can open. |
Item.Read.All (Fabric) | Listing lakehouses, warehouses and other items in a workspace, and reading their metadata. |
GraphQLApi.ReadWrite.All (Fabric) | Creating or updating the one API for GraphQL item the person asks for, and reading an existing API’s definition (Fabric has no read-only permission for that). Never deleting. |
GraphQLApi.Execute.All (Fabric) | Running the read-only GraphQL queries the person asks for. Mutations are refused. |
Notebook.ReadWrite.All (Fabric) | Creating the notebooks the person asks for (silver tables, gold views, a drift check), only on a call with dry_run=false. |
DataPipeline.ReadWrite.All (Fabric) | Creating the pipeline of the drift check the person asks for, only on a call with dry_run=false. |
Item.ReadWrite.All (Fabric) | Creating a Power BI semantic model, a Fabric IQ ontology or a data agent the person asks for, only on a call with dry_run=false; reading a semantic model’s definition to compare it with the plan. |
user_impersonation (Azure SQL Database) | Reading table and column names from the SQL analytics endpoint, running the counting checks, returning sample rows when asked, and creating the views the person asks for. |
The app does not ask for DataPipeline.Execute.All: it cannot run or schedule pipelines. The full list per tool, with the Fabric REST operation behind each permission, is in docs/SCOPES.md.
What is stored, where and for how long
- No table contents. Metadata (workspace, item, table and column names and types), the counts from checks, sample rows and query results pass through Krusgraph to the person’s MCP client and are not kept after the request.
- Tokens are exchanged on the person’s behalf (OAuth 2.0 on-behalf-of) and held in memory only.
- A usage record per tool call: the tool’s name, the outcome, the duration and, for creating tools, whether it was a dry run, plus a salted hash of the organisation’s tenant id. No user id, no table or column names.
- Where: the service runs in Azure, Sweden Central (EU). The usage records and the technical console log (no IP addresses, headers, tokens or query text) go to a Log Analytics workspace in the same region and are deleted after 30 days.
- Microsoft Entra ID records sign-ins in your own tenant, as for any app.
The privacy policy has each record with its purpose and how long it is kept.
/check runs in the browser
The page /check runs the same engine in the visitor’s browser (Python compiled to WebAssembly). Files dropped there are read in the browser and are not uploaded; the page’s content security policy does not let it send requests with them. It sends only two anonymous events to krusgraph.com, that the engine has loaded and that a check is done, with no file contents, file names or table names. No account and no Entra app are involved.
How to revoke access
- An administrator can revoke the app at any time in Microsoft Entra ID, under Enterprise applications: removing the consent or the app ends every renewal of its tokens.
- A person can disconnect the connector in their MCP client (in Claude: Settings → Connectors).
- Sign-in approvals for MCP clients other than Claude are withdrawn on request to hello@krusgraph.com.
The code is open
Krusgraph is open source under the MIT licence: the engine, the inference rules, the server and the deployment are on GitHub. Your team can read what each tool does, or host Krusgraph in your own Azure subscription with your own Entra app.
This page: https://krusgraph.com/it