# run_time_permissions

*LSL event*

```lsl
run_time_permissions(integer perm)
```

- `integer perm`: Bitfield of currently granted permissions (PERMISSION_* flags).

Triggered when an agent grants or denies runtime permissions requested by llRequestPermissions. Passes the active integer permissions bitfield perm (returns 0 if no permissions are currently granted).

Triggered when an agent grants run time permissions to this script.

```lsl title="How to use" frame="terminal"
run_time_permissions(integer perm)
{

}
```

## Specification

<table>
	<tr>
		<th colspan="2">Constants</th>
		<th>Action</th>
		<th>Category</th>
		<th>Granter</th>
		<th>Automatically granted when…</th>
	</tr>
	<tr>
		<td>[PERMISSION_DEBIT](/constants/PERMISSION_DEBIT/)</td>
		<td>`0x2`</td>
		<td>take money from agent's account</td>
		<td>[Money](/categories/money/)</td>
		<td>Owner</td>
		<td></td>
	</tr>
	<tr>
		<td>[PERMISSION_TAKE_CONTROLS](/constants/PERMISSION_TAKE_CONTROLS/)</td>
		<td>`0x4`</td>
		<td>take agent's [controls](/events/control/)</td>
		<td>[Control](https://wiki.secondlife.com/wiki/Category:LSL_Controls)</td>
		<td>Anyone</td>
		<td>sat on, attached</td>
	</tr>
	<tr>
		<td>[PERMISSION_TRIGGER_ANIMATION](/constants/PERMISSION_TRIGGER_ANIMATION/)</td>
		<td>`0x10`</td>
		<td>start or stop [Animations](/functions/llStartAnimation/) on agent</td>
		<td>[Animation](https://wiki.secondlife.com/wiki/Category:LSL_Animation)</td>
		<td>Anyone</td>
		<td>sat on, attached</td>
	</tr>
	<tr>
		<td>[PERMISSION_ATTACH](/constants/PERMISSION_ATTACH/)</td>
		<td>`0x20`</td>
		<td>[attach](/functions/llAttachToAvatar/)/[detach](/functions/llDetachFromAvatar/) from agent</td>
		<td>[Attachment](https://wiki.secondlife.com/wiki/Category:LSL_Attachment)</td>
		<td>[Owner](/functions/llAttachToAvatar/) or [Anyone](/functions/llAttachToAvatarTemp/)</td>
		<td>attached</td>
	</tr>
	<tr>
		<td>[PERMISSION_CHANGE_LINKS](/constants/PERMISSION_CHANGE_LINKS/)</td>
		<td>`0x80`</td>
		<td>change [links](https://wiki.secondlife.com/wiki/Category:LSL_Link)</td>
		<td>[Link](https://wiki.secondlife.com/wiki/Category:LSL_Link)</td>
		<td>Owner</td>
		<td></td>
	</tr>
	<tr>
		<td>[PERMISSION_TRACK_CAMERA](/constants/PERMISSION_TRACK_CAMERA/)</td>
		<td>`0x400`</td>
		<td>track the agent's [camera](/categories/camera/) [position](https://wiki.secondlife.com/wiki/Position) and [rotation](https://wiki.secondlife.com/wiki/rotation)</td>
		<td>[Camera](/categories/camera/)</td>
		<td>Anyone</td>
		<td>sat on, attached</td>
	</tr>
	<tr>
		<td>[PERMISSION_CONTROL_CAMERA](/constants/PERMISSION_CONTROL_CAMERA/)</td>
		<td>`0x800`</td>
		<td>control the agent's camera <br />([must be sat on or attached; automatically revoked on stand or detach](https://wiki.secondlife.com/wiki/LlSetCameraParams_Test))</td>
		<td>[Camera](/categories/camera/)</td>
		<td>Anyone</td>
		<td>sat on, attached</td>
	</tr>
	<tr>
		<td>[PERMISSION_TELEPORT](/constants/PERMISSION_TELEPORT/)</td>
		<td>`0x1000`</td>
		<td>[teleport](/functions/llTeleportAgent/) the agent</td>
		<td>[Teleport](/categories/teleport/)</td>
		<td>Anyone[^wiki-fa1a5b]</td>
		<td></td>
	</tr>
	<tr>
		<td>[PERMISSION_SILENT_ESTATE_MANAGEMENT](/constants/PERMISSION_SILENT_ESTATE_MANAGEMENT/)</td>
		<td>`0x4000`</td>
		<td>[manage estate access](/functions/llManageEstateAccess/) without notifying the owner of changes</td>
		<td>[Estate](https://wiki.secondlife.com/wiki/Category:LSL_Estate)</td>
		<td>Owner</td>
		<td></td>
	</tr>
	<tr>
		<td>[PERMISSION_OVERRIDE_ANIMATIONS](/constants/PERMISSION_OVERRIDE_ANIMATIONS/)</td>
		<td>`0x8000`</td>
		<td>configure the overriding of default [animations](/functions/llStartAnimation/) on agent</td>
		<td>[Animation](https://wiki.secondlife.com/wiki/Category:LSL_Animation)</td>
		<td>Anyone</td>
		<td>attached</td>
	</tr>
	<tr>
		<td>[PERMISSION_RETURN_OBJECTS](/constants/PERMISSION_RETURN_OBJECTS/)</td>
		<td>`0x10000`</td>
		<td>Used by [llReturnObjectsByOwner](/functions/llReturnObjectsByOwner/) and [llReturnObjectsByID](/functions/llReturnObjectsByID/) to return objects from parcels</td>
		<td>[Cleanup](https://wiki.secondlife.com/wiki/Category:LSL_Cleanup)</td>
		<td>Owner, Group Owner</td>
		<td></td>
	</tr>
	<tr>
		<td>[PERMISSION_PRIVILEGED_LAND_ACCESS](/constants/PERMISSION_PRIVILEGED_LAND_ACCESS/)</td>
		<td>`0x80000`</td>
		<td>Grants the script privileged access to land parcel functions, such as parcel sale. Used by [llSetParcelForSale](/functions/llSetParcelForSale/).</td>
		<td>[Land](https://wiki.secondlife.com/wiki/Category:LSL_Land)</td>
		<td>Owner</td>
		<td></td>
	</tr>
	<tr>
		<td>[PERMISSION_GAME_CONTROL](/constants/PERMISSION_GAME_CONTROL/)</td>
		<td>`0x100000`</td>
		<td>Permission to receive [game_control](/events/game_control/) input events.</td>
		<td>[Control](https://wiki.secondlife.com/wiki/Category:LSL_Controls)</td>
		<td>Anyone</td>
		<td>sat on, attached</td>
	</tr>
</table>

[^wiki-fa1a5b]: [PERMISSION_TELEPORT](/constants/PERMISSION_TELEPORT/) cannot be held by [temporary attachments](/functions/llAttachToAvatarTemp/).

## Examples

<details open>
<summary>Example 1</summary>

##### Plays an animation

```lsl
default
{
    state_entry()
    {
        llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
    }
    run_time_permissions(integer perm)
    {
        if(PERMISSION_TRIGGER_ANIMATION & perm)
        {
            llStartAnimation("nyanya");
        }
    }
}
```

</details>

## Notes

The argument **perm** is the bit combination of all permissions granted when this event is triggered. To determine if an exact permission is granted you will need to perform a bitwise AND comparison between **perm** and the permission constant you are looking for. The example above demonstrates this. Perm will be 0 if the user has refused to grant any permissions.

---

*Source: [Run time permissions](https://wiki.secondlife.com/wiki/Run_time_permissions) on the Second Life Wiki. Content from the Second Life Wiki articles Run time permissions (revision 1194112, 2015-01-22) and Template:LSL Constants/Permissions (revision 1219061, 2026-09-16), CC BY-SA 3.0.*

---

From lsl.dev: https://lsl.dev/events/run_time_permissions/
