DailyParticipantPermissions
Every participant object exposes apermissions field of type DailyParticipantPermissions:
When
false, the participant is hidden from all other participants. They do not appear in participants() for others, cannot be seen, and their events are not broadcast. Useful for silent observers or bots. Hidden participants require SFU topology.Controls which media tracks the participant may publish.Pass
true to allow all, false to block all, or a Set of specific values.Controls which participants’ media streams this participant may subscribe to.Override resolution order (highest to lowest):
byParticipantId → byUserId → base.Controls which administrative capabilities the participant holds.Pass
true to grant all admin rights, false to grant none, or a Set of specific values.Reading permissions
UseusePermissions to reactively read the local participant’s permissions. It returns convenience booleans for each permission type:
sessionId to usePermissions:
Updating permissions at runtime
UseuseDaily to get the call object and call updateParticipant(). The caller must themselves have canAdmin: 'participants' (or canAdmin: true).
updatePermissions object is partial — only the fields you provide are changed:
Restricting what a participant can send
Restrict a participant to audio-only (no camera or screen share):Restricting what a participant can receive
Allow a participant to receive audio from everyone but video only from a specific user:Granting admin permissions
Grant a participant transcription admin rights so they can start and stop transcription:Waiting room (knock-to-join)
When a room has knocking enabled, participants who attempt to join land in a waiting room until a host admits or denies them. UseuseWaitingParticipants to manage the waiting room from the host side.
Host: managing waiting participants
useWaitingParticipants returns waitingParticipants, grantAccess, and denyAccess. Pass callbacks to react to participants entering or leaving the lobby:
'*':
Guest: checking access state
UseuseDaily and useDailyEvent to track the local participant’s access state:
Example: setting up a waiting room
1
Enable knocking on the room
Create or configure a Daily room with
enable_knocking: true via the Daily REST API or dashboard.2
Listen for waiting participants (host)
3
Handle access state changes (guest)
Participants with
hasPresence: false require SFU network topology. Daily automatically switches to SFU mode when hidden participants are present, but your room must support SFU.