For the security review
Security and compliance dossier
https://sharelio.com/security/
This page exists so that approving Sharelio does not require a call with us. It is the whole picture: the package manifest field by field, the single permission it requests, the permissions it deliberately does not request, what leaves your tenant, who processes it and how to verify every claim on this page yourself.
If you are the administrator who has to deploy it, the step-by-step guide is at Install Sharelio. This page is the one to attach to the ticket.
The short version
| Question | Answer |
|---|---|
| What am I installing? | One standard SPFx package. It is a rendering engine, not a code generator: it draws components from declarative JSON configurations. |
| How many permissions does it request? | One. Sharelio / Components.Read — delegated and read-only, over your own components' configuration. |
| Does it request Microsoft Graph permissions? | No. None. Not over your lists, your files, your mail or your directory. |
| Do I need to be a global administrator? | No. The SharePoint administrator role is enough. |
| Where does my list data live? | In your tenant, in your SharePoint lists. It is read in your employee's browser and never passes through Sharelio. |
| What does Sharelio store? | The configuration of the components — which list to read and how to draw it — never their contents. |
| Does Sharelio hold credentials to my tenant? | No. It stores no token, no secret and no refresh token of yours. It only verifies the signatures Microsoft issues. |
| Can it run arbitrary code on my pages? | No. The JSON schema is closed: it cannot express code, evaluable expressions, HTML or arbitrary URLs. requiresCustomScript is false. |
| How do I remove it? | Remove the API permission and delete the package from the App Catalog. Your lists and their data are untouched. |
The package, field by field
These values come straight from the package you can download. You can match every one of them against what your App Catalog shows you.
| Field | Value |
|---|---|
| Package name | sharelio-host.sppkg |
| Publisher | Sharelio |
| Solution id | dc282acf-d064-49b2-aca4-b8c5d6eb66a5 |
| Feature id | db7ddf40-719b-4fe8-a15e-9ae540a58aab |
| Web part id | 5681b319-fd19-4756-8b30-66ec5d49e00b |
| SharePoint Framework | 1.23.2 (React 17, Fluent UI v8) |
| skipFeatureDeployment | true — deployed once, tenant-wide. You do not add the app site by site. |
| isDomainIsolated | false — not a preference: Microsoft retired domain-isolated web parts on 2 April 2026, so it is the only available option. |
| requiresCustomScript | false — the component never embeds script authored by a page author. |
| includeClientSideAssets | true — the JavaScript is served from your own tenant, not from a CDN of ours. |
| Supported hosts | SharePointWebPart, SharePointFullPage, TeamsTab, TeamsPersonalApp |
| API permission requested | { resource: "Sharelio", scope: "Components.Read" } — and nothing else. |
| Entra ID application | 9694b001-0249-43cb-b571-1ba792505fbd (App ID URI api://9694b001-0249-43cb-b571-1ba792505fbd). Multi-tenant, owned by Sharelio. |
The version you approve is the version that keeps running. Because the package is an engine and not a generator, your team can publish fifty components without a single new deployment, a single new permission or a single new ticket for you. What changes is the configuration, never the code.
The one permission — and everything it is not
The direction of this permission is the part most people read backwards, so it is worth being precise: the token is issued towards Sharelio's API, not towards your data.
The web part, running inside your tenant, asks Entra ID for a token addressed to Sharelio, and presents it to us so we can tell which organisation is asking. We verify the signature, the audience, the issuer and the tenant id against Microsoft's public keys, and return the configuration of the components that same tenant published. It buys us no access to anything of yours.
Permissions Sharelio does not request
| Permission | Requested? |
|---|---|
| Microsoft Graph — <code>Sites.Read.All</code> | No |
| Microsoft Graph — <code>Files.Read.All</code> | No |
| Microsoft Graph — <code>User.Read.All</code> / directory | No |
| Microsoft Graph — <code>Mail.*</code> | No |
| SharePoint REST as an application (app-only) | No |
| Global administrator consent over the tenant | No |
This is not a promise about our roadmap that you have to take on trust — it is checkable today: the package declares its permission requests in the manifest, your App Catalog shows you the complete list before you approve, and any request we added later would appear there as a new pending approval that only you can grant.
Sharelio has no identity inside your SharePoint
Sharelio does write in your tenant — it can create the list a tool needs, and its components can open SharePoint's own new-item form. So the guarantee we offer is not the weak one (“we don't write”) but this stronger one:
Everything Sharelio does inside your SharePoint, it does as the person sitting in front of the screen, with their permissions. There is no service account, no application identity and no privilege of ours to escalate.
- Reads. List rows are read by the browser with the employee's own SharePoint session. Someone who cannot open a list will not see it through Sharelio either — and the rows never travel to us.
- Writes. List provisioning runs with that same session, scoped to the current site. If the person cannot create lists there, neither can Sharelio: SharePoint says no exactly as it would if they had tried by hand.
- Never by surprise. The full set of columns is shown and a button has to be pressed. It only happens in page edit mode; someone merely viewing a page never triggers a write.
- Never destructive. An existing list is reused, missing columns are added, and a column with the same name and a different type stops the operation with a warning — nothing is converted or overwritten.
If you want to rule writes out entirely, you do not need to uninstall anything: withhold edit permissions on the site. Without them nobody can place a web part, and without placing one there is nothing to create.
What leaves your tenant, and what never does
| Data | Leaves your tenant? | Detail |
|---|---|---|
| Contents of your SharePoint lists | Never | Read by the browser, rendered in the browser. It does not pass through our backend at any point. |
| Your documents, mail, calendar, directory | Never | We hold no permission that could reach them. |
| Component configuration | Yes | Which list to read, which columns, how to format and filter them. Created by your team in the Sharelio studio and stored in our backend. |
| The description your team writes | Yes | The plain-language sentence used to generate a component, plus the names of the lists and columns it refers to. |
| Tenant id and signed-in user | Yes | To resolve which organisation is asking and to record who created each component. |
| Credentials or tokens of yours | Never stored | The token is verified on arrival and discarded. There is no secret of yours for us to lose. |
What the AI sees
Components are generated by a large language model, so it is fair to ask exactly what reaches it. The description your colleague writes, and the names of lists and columns. Never the rows.
The model does not have, and could not have, access to your data: generation happens in our backend, which never holds your list contents in the first place. The output is not code either — it is a JSON configuration validated against a closed schema before it is stored, and rejected outright if it does not fit.
- Provider: Anthropic (
claude-sonnet-5), via its commercial API. - Training: under Anthropic's commercial API terms, data submitted through the API is not used to train models.
- Determinism: whatever the model returns, only what the schema allows can ever be stored or rendered. The schema is the boundary, not the prompt.
Subprocessors
Every provider that processes data on our behalf, under a data processing agreement. We do not sell or share data with anyone else.
| Provider | Purpose | Location | What it can see |
|---|---|---|---|
| Supabase | Database, authentication and backend functions | [REGION_SUPABASE] | Component configurations, accounts, tenant id |
| Anthropic | Component generation | United States | The description written by your team; no list data |
| Vercel | Hosting of the website and the studio | Global CDN | Request metadata |
| Stripe | Subscription billing | EU / United States | Billing data; no product content |
| Resend | Notification email for website enquiries | EU (eu-west-1) | The contact details you submit in a form |
| Plausible Analytics | Anonymous website statistics | EU (Germany) | No cookies, no IP stored, no profiles |
Where a provider processes data outside the European Economic Area, the transfer is covered by the European Commission's Standard Contractual Clauses.
What we keep, and for how long
| Record | Retention |
|---|---|
| Component configurations and their version history | While your account is active. Deleted on request, or when the account is closed. |
| Who created each component and when | Same as the component. It is what makes your governance panel useful. |
| Generation log (cost, success, model) | Kept for operational monitoring. Contains no list data. |
| Website enquiries (leads) | Up to 24 months from the last contact, or until you ask us to delete them. |
| Anti-abuse records (one-way IP hashes) | 90 days. |
To request access, export or deletion, write to hello@sharelio.com. We reply within 30 days.
How to verify all of this yourself
Nothing on this page asks for your trust. All of it is checkable before you approve anything, and without a Sharelio account.
- Download the package. sharelio-host.sppkg — no registration, no login.
- Check its integrity. The SHA-256 we published is at sharelio-host.sppkg.sha256. On Windows:
Get-FileHash sharelio-host.sppkg -Algorithm SHA256. On macOS or Linux:shasum -a 256 sharelio-host.sppkg. - Open it. A
.sppkgis a zip. Rename it and unzip it: the manifests carry the ids in the table above and the permission request, and the client-side assets carry the JavaScript that will run. - Read the permission request in your own catalog. Upload the package to your App Catalog and look at API access before approving. The list you see there is the complete one — nothing can be requested later without appearing as a new pending approval.
- Ask us for the schema. The JSON schema that bounds what a component may describe is available on request at hello@sharelio.com. It is closed: no code, no evaluable expressions, no HTML, no arbitrary URLs.
What we do not have yet
A dossier that only lists strengths is not a dossier. Sharelio is a young company, and these are the gaps you would find anyway:
- No ISO 27001 or SOC 2 certification of our own. Our infrastructure providers hold theirs; we do not yet hold ours, and we will not imply otherwise.
- No independent penetration test published. If your process requires one, tell us and let's talk about scope.
- No 24/7 support commitment outside an Enterprise agreement.
What we offer instead is the thing certifications are a proxy for: a surface small enough to audit in an afternoon. One package, one read-only delegated permission, no Graph access, no custody of your data, and an uninstall that leaves your lists exactly as they were.
Removing it
- Remove the permission: SharePoint admin center → Advanced → API access → select Sharelio → Remove.
- Retire the package: delete it from the App Catalog.
Components stop rendering immediately. Your lists and their data are untouched, because they never left your tenant. To switch off a single component instead, no IT involvement is needed: it can be disabled centrally from Sharelio's governance panel.
Questions a security review usually asks next
Can Sharelio read the data in our SharePoint lists?
No, and not by policy — by construction. The rows are read by the employee's browser with the employee's own SharePoint session and rendered there. They never reach our backend, and we hold no Microsoft Graph or SharePoint API permission that could reach them from our side.
What happens if Sharelio is unavailable, or stops trading?
Components stop rendering, because the configuration is served by us. Your data is unaffected: it lives in your SharePoint lists and stays there, readable and usable exactly as before, since we never held it. Uninstalling the package leaves the lists intact.
Does the package call out to third-party domains from our pages?
It calls Sharelio's API to fetch the configuration of the component being rendered, and nothing else. The JavaScript itself is served from your own tenant (includeClientSideAssets is true), not from an external CDN, and the JSON schema cannot express arbitrary URLs, so a component cannot be made to call somewhere else.
Can an employee use Sharelio to see data they are not allowed to see?
No. Every read happens with that employee's own SharePoint session, so SharePoint's permissions apply unchanged. A component placed on a page that reads a list the viewer cannot access will show them an access error, not the data.
Do you sign a DPA?
Yes. Write to hello@sharelio.com and we will send it. This page lists our subprocessors so you can review them before you ask.
How do we know a future version will not request more permissions?
You do not have to take our word for it: SharePoint will not let it happen silently. A package that requests a new API permission raises a new pending approval in your admin center, which only your administrator can grant. Until then, the new request is simply not in effect.