tenant (reach)
The reach tenant as a node: the 7 capability primitives it appears in, what they reach, and how it connects. Meaning from connectivity, not from a definition.
Source: https://abp.sgit.ai/model/lexicon/reaches/tenant/index.html↗ · site v0.11.0 · this file is generated from the same content
as the page, so the two cannot drift. Every page on this site has a .md twin; internal links
below point at them.
Home↗ / The model↗ / The lexicon↗ / tenant
tenant
the organisation's accounts, repositories and services
A node carries no inherent meaning. What
tenantmeans here emerges from the edges traceable from it, and confidence in that meaning is proportional to how richly it is connected. It is connected to 7 of 23 primitives here. That, and not the sentence above, is what it means. The discipline this follows ↗.
What the shapes say tenant means, and they do not agree
These definitions are not merged, and that is the design. Merging two vocabularies erases the disagreement, and the disagreement is the finding. Each row below is owned by the shape that said it. A reader deciding what
tenantcosts them has to read the row for the shape they run, not an average of the rows. Why vocabularies are bridged rather than merged ↗.
| The shape | Variant | What tenant means there |
|---|---|---|
| Claude Code on the web (a remote session container)↗ | ccr-container | the attached repository and the platform's scoped tokens; not your accounts |
| Claude Code (the CLI, on your own machine)↗ | local-confirmations-off | your accounts, with the credentials in your home directory |
| Claude Code (the CLI, on your own machine)↗ | local-default | your accounts, with the credentials in your home directory |
| Claude Desktop (a desktop app with local tools)↗ | default | your accounts |
| Claude (in the browser, with connectors switched on)↗ | connectors-on | the accounts you connected, as you scoped them |
| Claude, with the Gmail connector enabled↗ | default | the Google account the consent was given for |
| Claude, with the Gmail connector enabled↗ | measured-2026-09-19 | the Google Workspace account the consent was given for, and the default send-as identity it carries |
| Claude's Microsoft 365 connector (Outlook, SharePoint, OneDrive, Teams)↗ | default | the Microsoft Entra tenant the administrator consented for; the user's mailbox, shared mailboxes they are delegated to, and Teams chats |
| The official Dropbox MCP server↗ | default | the Dropbox account or team the app was authorised for |
| A browser extension with broad host permissions↗ | broad-host-permissions | the sites you are logged into, as you |
| A scheduled job running as a service account↗ | service-account | whatever the service account's credential opens |
| Actions runner (a hosted CI job)↗ | ci | the repository, with the workflow's token |
| An assistant connected to a personal Google Drive with drive.readonly↗ | readonly-connector | the Google account the consent was given for |
| An assistant connected to a personal Gmail mailbox with gmail.readonly↗ | readonly-connector | the Google account the consent was given for |
| The Google Workspace MCP servers (Gmail, Drive, Docs, Sheets, Slides, Calendar, Chat)↗ | default | the Google account the consent was given for, and the Workspace domain it belongs to |
| A self-hosted n8n instance, reached with an owner-scoped API key↗ | owner-api-key | the platform as an account holder: activation, schedules, the model credential it spends against |
| ChatGPT (in the browser, no connectors)↗ | default | nothing of yours |
That is the ABP's own argument in one column. The same word, the same grammar, and a materially different exposure depending on where the agent runs. It is why an ABP is about the deployment rather than the product.
The 7 primitives with this reach
| Primitive | Published gloss | Spelled out | Undo | In how many shapes |
|---|---|---|---|---|
authenticate-as.credential.signing↗ | Sign commits with the key it holds | authenticate-as↗.credential↗.tenant↗ | no | 3 of 17 |
authenticate-as.credential.tenant↗ | Act in accounts with the credentials it holds | authenticate-as↗.credential↗.tenant↗ | no | 15 of 17 |
create.schedule.tenant↗ | Create something that outlives the session, on the platform (a routine, a scheduled trigger, a new session) | create↗.schedule↗.tenant↗ | yes | 3 of 17 |
read.message.tenant↗ | Read mail or chat it is connected to | read↗.message↗.tenant↗ | no | 6 of 17 |
send.endpoint.allowed↗ | Reach a permitted list of hosts | send↗.network-endpoint↗.tenant↗ | no | 1 of 17 |
write.budget.tenant↗ | Spend money or tokens against an account it holds | write↗.budget↗.tenant↗ | no | 2 of 17 |
write.repository.tenant↗ | Push to a code host (any branch it can reach) | write↗.repository↗.tenant↗ | with-effort | 4 of 17 |
How this node connects
| Edge | Reads as | To |
|---|---|---|
reachable_from | tenant is the reach of these 7 primitives | 7 capabilities |
reaches | the inverse, walked the other way, with different fan out | one capability at a time |
This node as JSON↗ · The lexicon↗ · The edge vocabulary↗