No transitive delegation
- Type
- no_transitive_delegation
- Category
- Sharing
- Enforced atWhen this policy is checked: while someone tries to open, while they create or change an invitation or hold, or after a denial (notify only).
- Authoring-time
- TiersWhere an admin can set this policy: the whole organization, one integration, or the physical device when the connector supports a device steward.
- OrgIntegrationDevice
- EnforcementHow a configured row behaves. Enforce blocks. Require approval opens an admin inbox when the type supports it. Audit only records and never blocks.
- Enforce
- DefaultWhat happens when no row of this type is configured.
- Not configured — ordinary role and user_sharing rules apply.
Tightens who may delegate. Creating an invitation requires org admin or apartment admin. Vendor users_admin writes except list require org admin. Runs in addition to user_sharing — both must pass.
When it is enforced
Evaluated when someone creates or updates an invitation, hold, or share. Requests that would exceed the limit are rejected — they are not silently rewritten.
Where to set it
Settings → Policies (org), the integration Policies tab, or — on PalGate — the device steward Policies tab.
Policies never grant access. See thepolicies architecture guidefor how org, integration, and device tiers combine.
Arguments
The config object on create/update. Shared row fieldsenforcement (enforce, require_approval,audit_only) and enabled apply to every type;audit_only and disabled rows never block.
| Name | Type | Required | Values | Description |
|---|---|---|---|---|
| applies_to | string or string[] | No | agentapi_keyinvitationmemberresidentadminall | Principal kinds this row binds. Closed set: agent, api_key, invitation, member, resident, admin, all. Unknown strings and empty arrays are rejected. `all` matches every kind. When omitted, the type-specific default applies (see Default). Device-tier rows without `applies_to` often bind everyone, including admins. Default: Type-specific; org/integration rows often bind residents, not generic members. |
| output | string or integer | No | — | Optional channel or output id. When set, the policy binds only that output. When omitted, it binds every output of the tier target. A scoped row does not apply when the acting output is unknown. |
How overlapping rows combine
Boolean OR across applicable enforcing rows. Compose with user_sharing.
Example
A member with users_admin cannot add a gate user unless they are an org admin. Listing users is still allowed.
{}Integrations
This type is documented on these connectors:
- Home Assistant (home_assistant)
- KNX (knx)
- MQTT (mqtt)
- PalGate Cloud (palgate_cloud)
- Shelly Cloud (shelly_cloud)
- Shelly Websocket (shelly_websocket)
- Tasmota (tasmota)
- Virtual Access (virtual_access)
- Virtual Demo Devices (virtual_demo)
- Waveshare (waveshare)
Related
- Policy catalog
- Policies architecture guide
- User sharing control (user_sharing)
- Who may invite (invite_creator_roles)
- No invitation re-share (invitation_no_reshare)
Typed configuration
Section titled “Typed configuration”The OpenAPI contract names this object InvitationAuthoringPolicyConfig:
{ "output": "main"}Only the optional applies_to and output scope fields are accepted; {} is valid. The policy limits invitation and vendor-user delegation without granting any role.