SSO group role mapping is available on Dedicated Cloud and Self-Hosted deployments. On Multi-Tenant SaaS, roles are assigned in HoneyHive.
Enable group mapping
Group mapping is set in the control-plane license policy. On Dedicated Cloud, HoneyHive sets these values for you. On Self-Hosted, set them in the control-plane chart’s values:The default roles manifests listed below are the Self-Hosted defaults. Dedicated Cloud organizations start from a different default manifest under either scheme, with
OrgAdmin, OrgMember, DataPlaneAdmin, DataPlaneMember, WorkspaceAdmin, WorkspaceMember, ProjectAdmin, and ProjectMember. Always name groups after the roles in your organization’s own manifest.Group claim requirements
- Location: a top-level claim in the ID token. Groups in the access token or userinfo response are not read.
- Claim name: the exact value of
sso_group_field, matched literally.https://example.com/groupsis read as one key, not as a nested path. The name is not trimmed, so avoid leading or trailing spaces. - Value type: a string (one group) or an array of strings. Any other type, such as an object or a number, fails sign-in. There is no limit on the number of groups.
- Content: group names, not IdP object IDs. Some IdPs emit group object IDs by default; configure yours to emit names.
- Filtering: groups without a HoneyHive prefix are ignored, so you can send a user’s full group list. To keep tokens small, filter the claim to HoneyHive groups in your IdP.
Group naming grammar
Every HoneyHive group has exactly four hyphen-separated segments:
Because the grammar splits on
-, a hyphen anywhere in the scope slug or role name produces the wrong number of segments and the group is ignored. Use underscores instead (Chat_Agent, not Chat-Agent).
SGG-HoneyHive-System-Bootstrap is a special group equivalent to SGG-HoneyHive-ControlPlane-ControlPlaneAdmin. It grants control plane administration for initial deployment setup. Use the SGG-HoneyHive, SGG-HH, or SGG-HoneyHiveProd prefix for this group. SGG-GenAI_PaaS-System-Bootstrap is not recognized and grants nothing.
HoneyHive does not validate
{role_name} against your roles manifest. A group naming a role that does not exist is accepted but grants no permissions. Check spelling against Settings > Organization > Roles.entitlement-roles-2026-8
Each group declares a role on one scope. Declarations are explicit, with no wildcards.
On Self-Hosted, the default roles manifest for this scheme defines:
Workspace roles apply to the workspace’s projects through the permissions defined on the role. Because memberships come from groups, the Add member, Remove member, and role assignment controls are disabled in HoneyHive at every scope, including the organization. There is no invite flow: users join the organization by email domain and everything else comes from groups.
Organization membership comes from email domain
Groups never create organization membership. A user joins an organization when their email domain matches one of the organization’s email domains (set when the organization is created, or under organization settings). If a user declares a data plane or workspace in an organization they are not a member of, sign-in fails with an error naming the organization. An organization role group for an organization the user is not in is ignored.What happens on sign-in
- HoneyHive reads the configured claim and parses each group. Malformed groups and groups without a HoneyHive prefix are skipped.
- Data plane, workspace, and project roles and memberships are rebuilt from scratch. Control plane and organization memberships keep only their baseline roles (
UserandOrgMember). - Each declaration is resolved against the current scope tree. Unknown or archived scope slugs are skipped.
- HoneyHive writes the resulting memberships, removing memberships no longer declared.
entitlement-roles-2025-12
This scheme assigns roles from groups but leaves workspace and project membership to HoneyHive invites.- Data plane memberships are synced from groups: a declared data plane is added and an undeclared one is removed.
- Groups on a workspace or project only add the role if the user is already a member of that scope.
- Assigning roles to members is disabled in HoneyHive. Adding and removing members stays enabled.
- On Self-Hosted, the default roles manifest defines
OrgAdmin,DataPlaneAdmin,DataPlaneMember,WorkspaceAdmin,WorkspaceMember,ProjectAdmin, andProjectMember.
For example,
SGG-HoneyHive-Banking_WS-WorkspaceAdmin makes the user Workspace Admin in every workspace of the Banking data plane they belong to. In entitlement-roles-2026-8, _WS and _PJ are ordinary characters in a slug.
Customize role assignment
You decide what each group grants by combining two things you control: the roles manifest and your IdP groups.1
Define roles
Go to Settings > Organization > Roles and edit the roles manifest. This defines what each role can do and stays available under every scheme. Custom role definitions require the Enterprise plan. Add or change roles and their permissions to match your access policy, for example a read-only
Viewer role at workspace scope. See Roles for the permission reference.2
Choose stable slugs
On
entitlement-roles-2026-8, give each organization and workspace a slug when you create it. On entitlement-roles-2025-12, the create form derives the slug from the display name and appends a random suffix, so read the generated slug from the scope’s card in the Admin Center and name your groups after it. The API also accepts a chosen workspace slug on either scheme. The slug is the stable identifier your groups reference. Changing a slug breaks every group that names it.3
Create IdP groups
Create one IdP group per scope and role, named with the grammar above, for example
SGG-HoneyHive-ChatAgent-Viewer. Role names must match the manifest exactly and must not contain hyphens.4
Emit the groups
Configure your IdP to put the group names in the ID token claim named by
sso_group_field.5
Verify
Sign in as a test user in each group and confirm the expected workspaces and actions appear. Roles are recomputed on the next sign-in after any group change.