/access), the same Access management surface every workspace uses.
What is specific to an MSP account is the msp.clients.* permission
group, the msp.billing.view permission, and the fixed role an account
member runs under once they open a client.
The permissions
|
msp.billing.view | Read Billing and its CSV, and nothing else in the account. |
These are granted through custom roles exactly like any other
permission: see Access management.
The billing-only role
msp-billing is a built-in role that holds msp.billing.view and
nothing else. It exists only in an MSP account: in an organization
workspace it is not listed and cannot be assigned, invited or mapped
from a directory group. Give it to someone, such as a finance contact,
who needs the numbers but not the clients.
A member with only this role signs in to Billing. It is the only
item in their menu, every other page is hidden, Settings sends them
to Billing, and the API refuses everything else. Anyone who holds msp.clients.view
can read Billing too.
Limiting an operator to some clients
By default every member of the account sees every client. To limit an operator:- Put tags on your clients.
- Open Client access (Operations → Client access,
/msp/operators). It lists the account’s people with their roles and what each can open. - Choose a person, turn off See every client, and enter the tags in Limit to tags, separated by commas.
- Admins are never scoped. An admin or owner always sees every client, so an account cannot lock itself out of its own clients.
- A scoped member cannot change scopes, their own included. Otherwise the way out of a scope would be open to the person it limits.
- A scope fails closed. If no client carries any of a person’s tags any more, for example after the last one was released, they see no clients.
- Seeing the page needs
users.view. Changing a scope needsusers.assign_roles. A scope needs at least one tag, or See every client. Each change is recorded.
Two-factor is required to open a client
msp.clients.access is not enough on its own. Opening any client also
needs two-factor authentication turned on for your own account,
checked fresh every time. Without it, the open dialog sends you to
your profile to turn it on.
Inside a client: a fixed operator role
Once a session is open, you run inside that client as a fixed role, not your usual role in the account and not a role either side configures. It is every permission an admin holds, minus what would outlive the session or take the workspace away from the people who own it:- Inviting, creating, editing or removing people, assigning roles, resetting anyone’s password, two-factor, or approving an email change.
- Revoking or sending invitations.
- Managing roles, API keys, or directory and SSO.
- Changing the security policy or licence settings.
billing.checkout.- Anything under
msp.clients.*itself: an operator working inside a client cannot use that session to reach into the MSP account, or into another client.
Seeing the client’s people
Seeing who the client’s people are is gated separately, bymsp.clients.people on your account. Without it, an operator session
holds none of users.view, users.view_activity, or
invitations.view inside the client: the roster is simply not there.
With it, the roster is read-only. A client the MSP created shows its
people to holders of msp.clients.people. A workspace that linked
chose at approval, and if it chose to hide them, nobody at the account
sees them.
Without people access an operator does not see names. The client’s
people and devices appear as coded identities: Person or Device
followed by a six-character code, so the work can go on without naming
anyone. A few
surfaces cannot be coded and are refused: people search, the member
list, the roles page (which names who holds each role), and rollout
actions that take an email address. The audit trail can be read, but
not searched by text or filtered by person, and its signed export is
refused.
What never runs inside a client, for anyone
- API keys. A key authenticates without the person behind the cookie being present, so a key’s request always runs in the key’s own workspace, never a client’s.
- Your own account. Changing your password, two-factor, email or profile is refused while a client is open: that belongs to the MSP account. Leave the client first.
- Minting the client’s audit webhook token, a credential that would outlive the session and write into the very trail that is supposed to be recording you.
- Creating a Runtime Security App token. Like an API key, a token works without anyone present in the client, so only the client’s own admins can create one. Enrollment tokens for devices are not affected.
- The client’s own decision about its MSP. Only the client’s admins can switch access on or off, or change the code and duration settings, never an operator working inside it.
Next
Opening a client
Starting a session, the code step, and the countdown band.
Access management
Custom roles, the full permission catalog, and invitations.

