What you are granting, and why
When you connect a Microsoft 365 or Google Workspace tenant, or an accounting system, to one of the diagnostic tools, this page lists every permission requested, why it is requested, what is stored, what is never stored, and how to remove access. It is generated from the code that makes the request, so it cannot drift from what we actually ask for.
| Permission | SaaS Auditor | Leaver check | Scorecard |
|---|---|---|---|
| Organization. | Read | Read | Read |
| RoleManagement. | Read | Read | Read |
| User. | Read | Read | Read |
| AuditLog. | Read | Read | Not requested |
| Directory. | Read | Read | Not requested |
| Policy. | Read | Not requested | Read |
| SecurityEvents. | Read | Not requested | Read |
| Application. | Read | Not requested | Not requested |
| DeviceManagementManagedDevices. | Not requested | Read | Not requested |
| GroupMember. | Not requested | Not requested | Read |
| IdentityRiskEvent. | Read | Not requested | Not requested |
| Reports. | Read | Not requested | Not requested |
| SharePointTenantSettings. | Not requested | Not requested | Read |
The short version
- The diagnostics read and never write. Every Microsoft Graph permission requested by a scan is a Microsoft read permission (the name ends in
.Read.Allor.Read.Directory). - You are the controller. For the tenant and subscription data these tools read, you are the data controller and ITSailor acts as your data processor. The processing runs on your instruction, which you give by connecting your tenant or assigning the role. The spend scan of an accounting system is the exception: ITSailor is the controller for that read, as section 7 of the Privacy Policy explains, and keeps only the vendor summary, for ten minutes.
- Identities are digested before logging. Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs. The report shown to your administrator still carries real identities, because it is your own tenant and you need them to act.
- You can revoke at any time. Your administrator removes the grant directly with Microsoft, Google, Xero or Intuit, without us, and all further reads stop at once.
SaaS Auditor
Microsoft GraphReads directory, licence, and security posture to find dormant accounts, wasted licences, Shadow IT, and standing admin risk.
A Microsoft 365 tenant administrator approves the connection. Nothing below can change your tenant.
User.Read.All- Why it is requested
- Read the user roster and account status, so the audit can count active, disabled, and stale accounts.
- Access
- Read-only
- What is stored
- Counts and posture flags for the report shown to your administrator.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
AuditLog.Read.All- Why it is requested
- Read sign-in activity (last sign-in dates), so dormant and unused accounts can be found.
- Access
- Read-only
- What is stored
- Counts and posture flags for the report shown to your administrator.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
Organization.Read.All- Why it is requested
- Read tenant and licence inventory, so assigned licences can be matched to active use.
- Access
- Read-only
- What is stored
- Licence counts and utilisation figures for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
Directory.Read.All- Why it is requested
- Read service principals and OAuth grants for Shadow IT and third-party app discovery.
- Access
- Read-only
- What is stored
- Counts and posture flags for the report shown to your administrator.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
Application.Read.All- Why it is requested
- Read the registered and enterprise application detail behind those grants.
- Access
- Read-only
- What is stored
- Counts and posture flags for the report shown to your administrator.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
SecurityEvents.Read.All- Why it is requested
- Read Microsoft Secure Score and security findings for posture context.
- Access
- Read-only
- What is stored
- Secure Score figures and finding counts for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
Policy.Read.All- Why it is requested
- Read Conditional Access policy posture.
- Access
- Read-only
- What is stored
- Policy posture flags for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
RoleManagement.Read.Directory- Why it is requested
- Read the directory role roster to find standing, non-PIM administrator assignments.
- Access
- Read-only
- What is stored
- The count of standing privileged assignments for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
IdentityRiskEvent.Read.All- Why it is requested
- Read Entra identity-risk detections (risky sign-ins), where the tenant licence exposes them.
- Access
- Read-only
- What is stored
- Risk-detection counts for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
Reports.Read.All- Why it is requested
- Read per-service usage reports to measure feature-level adoption.
- Access
- Read-only
- What is stored
- Aggregate adoption figures for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
How long it is kept
Your report is held server-side, encrypted, for up to ten minutes so the page can load it, then it expires. No sign-in token is stored: the one-off Microsoft scan keeps nothing beyond that window.
How to revoke
A tenant administrator can remove the grant at any time in the Microsoft Entra admin center, under Enterprise applications, by deleting the ITSailor application. Revoking access stops all further reads at once.
SaaS Auditor
Google Workspace Admin SDKReads the Workspace directory and per-user security state for the same dormant-account, licence, and Shadow IT audit.
A Google Workspace super administrator approves the connection. 1 of the 3 permissions below grants more than a read, marked Broader than read in the table, and each one says what it can do beyond reading.
https://www.googleapis.com/auth/admin.directory.user.readonly- Why it is requested
- Read the user list and per-user status, last login, and administrator flag.
- Access
- Read-only
- What is stored
- Counts and posture flags for the report shown to your administrator.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
https://www.googleapis.com/auth/admin.directory.domain.readonly- Why it is requested
- Read domain and customer account information.
- Access
- Read-only
- What is stored
- Domain and account figures for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
https://www.googleapis.com/auth/admin.directory.user.security- Why it is requested
- Read per-user third-party OAuth token grants (for Shadow IT discovery) and two-step verification state.Google publishes no read-only variant of this scope. It covers every operation on application-specific passwords, OAuth tokens and verification codes, which includes revoking them. We use it to read only: token grants for Shadow IT discovery, and two-step verification state. Your administrator can confirm the scope and revoke it at any time, and the scan is the only thing that would stop working.
- Access
- Broader than read
- What is stored
- Shadow IT grant counts and MFA-coverage figures for the report.
- Never stored
- Raw names, email addresses, and user principal names are replaced with a one-way digest before anything is written to our logs; the raw values are not retained.
How long it is kept
Your report is held server-side, encrypted, for up to ten minutes so the page can load it, then it expires. No sign-in token is stored: the one-off Google scan keeps nothing beyond that window. Use of Google Workspace data follows the Google API Services User Data Policy, including the Limited Use requirements.
How to revoke
A Workspace super administrator can remove the grant at admin.google.com under Security, API controls, App access control, or a user can remove it at myaccount.google.com under Security. Revoking access stops all further reads at once.
SaaS Auditor
Xero Accounting APINot yet available. The SaaS Auditor does not offer this connection today; the spend scan reads a CSV export you upload. When it is switched on, these are the permissions it asks for.
Reads spend bank transactions to list the software vendors your organisation pays, for the spend part of the same audit.
A Xero user with access to the organisation approves the connection. Nothing below can change your tenant.
accounting.banktransactions.read- Why it is requested
- Read up to 1,000 spend bank transactions, so the audit can list the software vendors you pay.
- Access
- Read-only
- What is stored
- The vendor summary for the report (vendor, category and cost), sealed and held for 10 minutes so the page can show it. A vendor name can be the name of a person you pay.
- Never stored
- The transactions themselves, the access token and any refresh token the provider returns. Transactions are read into memory for the one request and dropped.
How long it is kept
The vendor summary is held server-side, encrypted, for up to ten minutes so the page can load it, then it expires. The transactions are not kept and no token is stored.
How to revoke
The scan disconnects itself: right after the read it deletes the connection your consent created, and no refresh token is requested, so we cannot read again. If Xero refuses that request, the access token still expires on its own after 30 minutes, and you can disconnect ITSailor in Xero under Connected apps at any time.
SaaS Auditor
QuickBooks Online Accounting APINot yet available. The SaaS Auditor does not offer this connection today; the spend scan reads a CSV export you upload. When it is switched on, these are the permissions it asks for.
Reads purchase transactions to list the software vendors your organisation pays, for the spend part of the same audit.
A QuickBooks Online user who can connect apps to the company approves the connection. 1 of the 1 permissions below grants more than a read, marked Broader than read in the table, and each one says what it can do beyond reading.
com.intuit.quickbooks.accounting- Why it is requested
- Read up to 1,000 purchase transactions, so the audit can list the software vendors you pay.Intuit publishes no read-only accounting scope. This one opens the QuickBooks Online Accounting API, which includes creating and changing accounting records. We use it for one read query of purchases. Right after the read we revoke the refresh token Intuit returns, which also ends the access token and removes our permissions on your company; we never store either token.
- Access
- Broader than read
- What is stored
- The vendor summary for the report (vendor, category and cost), sealed and held for 10 minutes so the page can show it. A vendor name can be the name of a person you pay.
- Never stored
- The transactions themselves, the access token and any refresh token the provider returns. Transactions are read into memory for the one request and dropped.
How long it is kept
The vendor summary is held server-side, encrypted, for up to ten minutes so the page can load it, then it expires. The transactions are not kept and no token is stored.
How to revoke
The scan disconnects itself: right after the read it revokes the refresh token Intuit issued, which ends the access token too and removes our permissions on your company. If Intuit refuses that request, the access token still expires on its own after an hour, and you can disconnect ITSailor in the apps settings of your QuickBooks Online company at any time.
Offboarding Runbook and Leaver Check
Microsoft GraphReads accounts, licences, last successful sign-in, the audit events that record when an account was disabled, delegated consents, app assignments, owned apps and groups, directory and PIM roles and Intune devices, to list what a leaver still holds. Read-only: no permission to change anything is requested.
An administrator who can approve apps for your tenant, such as a Cloud Application Administrator or a Privileged Role Administrator, approves the connection once. After that, a Global Reader signs in to run the check. Nothing below can change your tenant.
User.Read.All- Why it is requested
- Read the accounts in your tenant: whether each is enabled, which licences it holds and, with Entra ID P1 or P2, its last successful sign-in. This finds disabled leavers and enabled accounts with no successful sign-in for 90 days.
- Access
- Read-only
- What is stored
- For ten minutes, in the result held for your browser: the user principal names and display names of the disabled accounts it reads in depth (up to 40) and of the enabled accounts it flags, and the licence, role, app, group and device names it found for them. It is encrypted under a key Upstash does not hold, stored at Upstash in Ireland, inside the EEA, then expires.
- Never stored
- No sign-in token, no file, mail, calendar or Teams content, and no password. Our logs carry a keyed hash of the tenant id and counts, never a name or an address.
AuditLog.Read.All- Why it is requested
- Read the last successful sign-in of each account, and the audit events that record when an account was disabled, so the two can be compared. Entra keeps audit events for 7 days on Free and 30 days with P1 or P2.
- Access
- Read-only
- What is stored
- The disable time and last successful sign-in of the accounts it lists, in the same ten-minute result.
- Never stored
- No sign-in token, no file, mail, calendar or Teams content, and no password. Our logs carry a keyed hash of the tenant id and counts, never a name or an address.
Directory.Read.All- Why it is requested
- Read the apps a leaver consented to and which apps they are assigned to, the apps, groups and teams they own and whether anyone else owns them, and the names of the apps behind those consents.
- Access
- Read-only
- What is stored
- For ten minutes, in the result held for your browser: the user principal names and display names of the disabled accounts it reads in depth (up to 40) and of the enabled accounts it flags, and the licence, role, app, group and device names it found for them. It is encrypted under a key Upstash does not hold, stored at Upstash in Ireland, inside the EEA, then expires.
- Never stored
- No sign-in token, no file, mail, calendar or Teams content, and no password. Our logs carry a keyed hash of the tenant id and counts, never a name or an address.
Organization.Read.All- Why it is requested
- Read the tenant name and the licence names, so a licence reads as a product name and not a code.
- Access
- Read-only
- What is stored
- The tenant name and licence names, in the same ten-minute result.
- Never stored
- No sign-in token, no file, mail, calendar or Teams content, and no password. Our logs carry a keyed hash of the tenant id and counts, never a name or an address.
RoleManagement.Read.Directory- Why it is requested
- Read active and eligible (PIM) directory role assignments, to catch a role left on a leaver.
- Access
- Read-only
- What is stored
- The role names held by the disabled accounts it reads, in the same ten-minute result.
- Never stored
- No sign-in token, no file, mail, calendar or Teams content, and no password. Our logs carry a keyed hash of the tenant id and counts, never a name or an address.
DeviceManagementManagedDevices.Read.All- Why it is requested
- Read the Intune managed devices and who each is assigned to, to find a device still tied to a leaver. It needs an Intune licence on the tenant.
- Access
- Read-only
- What is stored
- The device name, operating system and owner type of devices tied to the disabled accounts it reads, in the same ten-minute result.
- Never stored
- No sign-in token, no file, mail, calendar or Teams content, and no password. Our logs carry a keyed hash of the tenant id and counts, never a name or an address.
How long it is kept
The result is held for ten minutes in a short-lived server session so the page and the PDF record can show it. It contains the user principal names, display names, device names and app names of the disabled accounts it reads in depth (up to 40) and of the enabled accounts it flags, encrypted under a key Upstash does not hold, at Upstash in Ireland, inside the EEA. You can delete it sooner with Delete this scan now, and it expires on its own. No sign-in token is stored.
How to revoke
A tenant administrator can remove the grant at any time in the Microsoft Entra admin center, under Enterprise applications, by deleting the ITSailor application. Revoking access stops all further reads at once.
Tenant Security Scorecard
Microsoft GraphReads Conditional Access, Security Defaults, the Global Administrator role, PIM eligibility, the user consent setting, licences and SharePoint sharing, to check the controls the scan can verify against the ITSailor Tenant Security Baseline.
A Microsoft 365 tenant administrator approves the connection. Nothing below can change your tenant.
User.Read.All- Why it is requested
- Read one property of each Global Administrator account: whether it is synced from on-premises Active Directory.
- Access
- Read-only
- What is stored
- Counts, such as how many administrator accounts are cloud-only, inside the 10-minute result.
- Never stored
- User names and email addresses. The scan counts accounts and reads that one property; it does not read profiles.
Organization.Read.All- Why it is requested
- Read the tenant name and the licence subscriptions, to say what a refused read needs, such as Entra ID P1.
- Access
- Read-only
- What is stored
- The tenant name, and whether Entra ID P1 and P2 are present, inside the 10-minute result.
- Never stored
- Subscription details beyond those two facts.
GroupMember.Read.All- Why it is requested
- List the members of any group that holds Global Administrator, so they are counted as administrators.
- Access
- Read-only
- What is stored
- The administrator count, inside the 10-minute result.
- Never stored
- The identities of group members: only the count is kept.
Policy.Read.All- Why it is requested
- Read the Conditional Access policies, the Security Defaults setting and the user app-consent setting.
- Access
- Read-only
- What is stored
- Evidence sentences that can name a Conditional Access policy and say how many accounts it excludes, inside the 10-minute result.
- Never stored
- The users, groups and roles a policy includes or excludes: only the counts appear.
RoleManagement.Read.Directory- Why it is requested
- Read who holds the Global Administrator role, and whether Privileged Identity Management has eligible assignments for it.
- Access
- Read-only
- What is stored
- Counts of administrator accounts and of eligible assignments, inside the 10-minute result.
- Never stored
- Who holds the role: accounts are counted, not named.
SecurityEvents.Read.All- Why it is requested
- Read the Microsoft Secure Score headline as advisory context.
- Access
- Read-only
- What is stored
- The headline (points earned and possible), inside the 10-minute result.
- Never stored
- Individual Secure Score actions: they arrive with the headline and are not kept.
SharePointTenantSettings.Read.All- Why it is requested
- Read the external sharing level for SharePoint and OneDrive.
- Access
- Read-only
- What is stored
- One verdict sentence about the sharing level, inside the 10-minute result.
- Never stored
- Site names, files and sharing links: none of them is read.
How long it is kept
The scan result is held, encrypted, for up to 10 minutes so this page can show it, then it expires. It holds the verdicts, evidence sentences that can name Conditional Access policies and count excluded accounts, the tenant name and the Secure Score headline. No sign-in token is stored. If you tick Remember this result, your score and the state of each control are also kept for 180 days under a random code in your browser, not your email; unticking deletes them. No account names or addresses are stored.
How to revoke
A tenant administrator can remove the grant at any time in the Microsoft Entra admin center, under Enterprise applications, by deleting the ITSailor application. Revoking access stops all further reads at once.
Recipients
Every party that receives personal data from ITSailor, condensed from the Privacy Policy. Most are sub-processors, acting on documented instruction. Some are not, and their rows open by saying so. The policy is the authoritative source and is updated first when this list changes.
- Purpose
- Payments. Stripe is also an independent controller for its own fraud prevention, financial risk, AML and KYC obligations and product development
- Jurisdiction
- Ireland (EEA). Processing: Ireland, inside the EEA, with routing to Stripe group entities outside the EEA. Transfers: Standard Contractual Clauses (EU) 2021/914 for any routing outside the EEA; Stripe also self-certifies under the EU-US Data Privacy Framework.
- Purpose
- Our business email and files
- Jurisdiction
- Ireland (EEA). Processing: Inside the EEA: our Microsoft 365 tenant is in the EU region. Transfers: Standard Contractual Clauses (EU) 2021/914 in Microsoft's Products and Services Data Protection Addendum, for any processing outside the EEA.
- Purpose
- Our servers, databases and backups, including the automation server that runs managed automation packages
- Jurisdiction
- Germany (EEA). Processing: Germany, inside the EEA. Transfers: None needed. The processing does not leave the EEA.
- Purpose
- Website hosting, and analytics only if you accept it; the analytics is cookie-free and not used for advertising or cross-site profiling. Vercel is also an independent controller for the usage data its service generates
- Jurisdiction
- United States. Processing: Functions run in Frankfurt, Germany, inside the EEA. Static assets and request logs are served from a global edge network, and analytics is processed mainly in the United States, both outside the EEA. Transfers: Standard Contractual Clauses (EU) 2021/914 in Vercel's Data Processing Addendum: Module Two for what we instruct, Module One for the usage data Vercel controls. Vercel also self-certifies under the EU-US Data Privacy Framework.
- Purpose
- DNS and a secure tunnel to our servers
- Jurisdiction
- United States. Processing: A global edge network outside the EEA; EU traffic is served from EU edge nodes. Transfers: EU-US Data Privacy Framework, with the Standard Contractual Clauses (EU) 2021/914 in place regardless.
- Purpose
- Sending email: our own, and the email our managed automation packages send for a client
- Jurisdiction
- United States. Processing: United States, outside the EEA. Transfers: EU-US Data Privacy Framework, with the Standard Contractual Clauses (EU) 2021/914 in place regardless.
- Purpose
- Tool and security data: rate limits, sign-in state, scan results for up to 10 minutes, and Tenant Security Scorecard trend scores for up to 180 days
- Jurisdiction
- United States. Processing: Ireland (AWS eu-west-1), inside the EEA. Transfers: Data processing addendum and the Standard Contractual Clauses (EU) 2021/914, for access by Upstash, Inc. from outside the EEA. No framework listing is claimed.
- Purpose
- Private repositories for client deliverables
- Jurisdiction
- United States. Processing: United States, outside the EEA. Transfers: EU-US Data Privacy Framework, self-certified under the Microsoft umbrella, with the Standard Contractual Clauses (EU) 2021/914 in place regardless.
- Purpose
- Writing free-tool reports. API inputs are not used to train models
- Jurisdiction
- Not verified. This row names the service rather than a contracting entity; ask us and we will tell you which entity we contract with. Processing: Outside the EEA. Transfers: Standard Contractual Clauses (EU) 2021/914 alone. No framework listing is claimed, because none has been verified.
- Purpose
- SaaS Auditor briefs from aggregate figures, and contract extraction when you upload a contract. API inputs are not used to train models
- Jurisdiction
- Not verified. This row names the service rather than a contracting entity; ask us and we will tell you which entity we contract with. Processing: Outside the EEA. Transfers: Standard Contractual Clauses (EU) 2021/914 alone. No framework listing is claimed, because none has been verified.
- Purpose
- AI steps in the managed automation packages, on its EU endpoint. Mistral is also an independent controller for the abuse monitoring its terms provide for
- Jurisdiction
- France (EEA). Processing: Data centres in the EU and EFTA behind its EU endpoint: inside the EEA, or in Switzerland under an adequacy decision. Account and billing data may be handled outside the EEA. Transfers: The Standard Contractual Clauses (EU) 2021/914 in Mistral's Data Processing Addendum, where its own sub-processors work outside the EEA. None is needed for AI calls processed inside the EEA, and Switzerland is covered by the Commission's adequacy decision.
- Purpose
- Booking calls and workshop sessions
- Jurisdiction
- Not verified. This row names the service rather than a contracting entity; ask us and we will tell you which entity we contract with. Processing: Outside the EEA. Transfers: Standard Contractual Clauses (EU) 2021/914 alone. No framework listing is claimed, because none has been verified.
- Purpose
- Producing eBook PDFs, which carry the buyer's email in the licence line
- Jurisdiction
- Not verified. This row names the service rather than a contracting entity; ask us and we will tell you which entity we contract with. Processing: Outside the EEA. Transfers: Standard Contractual Clauses (EU) 2021/914 alone. No framework listing is claimed, because none has been verified.
- Purpose
- Not our sub-processor. Licensor of the Microsoft licences you buy through us; it processes your tenant content as your provider, under its agreement with you
- Jurisdiction
- Ireland (EEA). Processing: Your own tenant, under the agreement you hold with Microsoft. The contracting entity is inside the EEA. Transfers: Not ours to state. Microsoft processes tenant content on your instruction under its Data Protection Addendum with you, so your agreement governs that transfer and not ours.
- Purpose
- Not our sub-processor. Our distributor; it receives licence order details to fulfil your order, under its own terms. Your tenant data does not reach it
- Jurisdiction
- United States. Processing: United States, outside the EEA. Transfers: Standard Contractual Clauses (EU) 2021/914 in the Pax8 partner agreement. Pax8 receives the order data as an independent controller.
- Purpose
- Not our sub-processor. Messaging service that carries alerts and approval notices from our managed automation packages to the staff accounts that asked for them, and to us, under its own terms. It receives no personal data of a client's customers: a message carries a reference, a count or a status and a link to our own server
- Jurisdiction
- Outside the EEA; Telegram's privacy policy does not say where. Its representative in the EU is EDPO in Brussels. Processing: Data centres in the Netherlands for accounts registered in the EEA, inside the EEA, run by Telegram from outside the EEA. Transfers: Not ours to state for the recipient's own account, which the recipient holds with Telegram under its terms. Telegram offers no transfer safeguard to its users, so we send it nothing that would need one.
Azure, and why it is not in the table above
The Cost Review for Azure requests no Microsoft Graph permissions. Not a narrow set: none. Access to an Azure subscription does not come from a consented API permission at all, it comes from an RBAC role assignment you make yourself in your own portal and can delete in one click, without telling us.
The role is the built-in Reader, which grants */read and nothing else.
We deliberately do not ask for Cost Management Reader, despite the name suggesting it is the read-only one for cost. Its action list contains the wildcard Microsoft.Support/*, which permits support-ticket creation. We ask for Reader because its action list is read only; a role's name is not proof of what it allows.
Sufficiency was settled by running every read path the collector needs as a principal holding Reader and nothing else, on 2026-08-15: budgets, Advisor, policy assignments, resources, Resource Graph and Cost Management all answered. The Cost Review for Azure never writes to your Azure.
Documents
The processor terms for this processing (GDPR Article 28) are part of the Terms of Service, accepted by the administrator who connects a tenant.