# llGetPermissions

*LSL function*

```lsl
integer integer llGetPermissions();
```

- Returns: `integer`
- Energy: 10

Returns an integer bitfield representing the permissions (PERMISSION_*) currently granted to the script.

Returns an [integer](https://wiki.secondlife.com/wiki/integer) bitfield with the script permissions granted

```lsl title="How to use" frame="terminal"
integer result = llGetPermissions();
```

## 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>

```lsl collapse={1-15, 21-51}
default
{
    state_entry()
    {
        llRequestPermissions(llGetOwner(),
        //Comment out any of the following lines for fun
            PERMISSION_DEBIT |
            PERMISSION_TAKE_CONTROLS |
            PERMISSION_TRIGGER_ANIMATION |
            PERMISSION_ATTACH |
            PERMISSION_CHANGE_LINKS |
            PERMISSION_TRACK_CAMERA |
            PERMISSION_CONTROL_CAMERA |
            0);
    }
    touch_start(integer a)
    {
        integer perm = llGetPermissions();
        if(perm & PERMISSION_DEBIT)
            llOwnerSay("Can use llGiveMoney");
        if(perm & PERMISSION_TAKE_CONTROLS)
            llOwnerSay("Can use llTakeControls");
        if(perm & PERMISSION_TRIGGER_ANIMATION)
            llOwnerSay("Can use llStartAnimation");
        if(perm & PERMISSION_ATTACH)
            llOwnerSay("Can use llAttachToAvatar");
        if(perm & PERMISSION_CHANGE_LINKS)
            llOwnerSay("Can use llCreateLink");
        if(perm & PERMISSION_TRACK_CAMERA)
            llOwnerSay("Can use llGetCameraPos");
        if(perm & PERMISSION_CONTROL_CAMERA)
            llOwnerSay("Can use llSetCameraParams");
    }
    run_time_permissions(integer perm)
    {
        if(perm & PERMISSION_DEBIT)
            llOwnerSay("Can use llGiveMoney");
        if(perm & PERMISSION_TAKE_CONTROLS)
            llOwnerSay("Can use llTakeControlls");
        if(perm & PERMISSION_TRIGGER_ANIMATION)
            llOwnerSay("Can use llStartAnimation");
        if(perm & PERMISSION_ATTACH)
            llOwnerSay("Can use llAttachToAvatar");
        if(perm & PERMISSION_CHANGE_LINKS)
            llOwnerSay("Can use llCreateLink");
        if(perm & PERMISSION_TRACK_CAMERA)
            llOwnerSay("Can use llGetCameraPos");
        if(perm & PERMISSION_CONTROL_CAMERA)
            llOwnerSay("Can use llSetCameraParams");
    }
}
```

</details>

## See also

### Functions

- [llGetPermissionsKey](/functions/llGetPermissionsKey/) — Get the avatar who granted permissions.
- [llRequestPermissions](/functions/llRequestPermissions/) — Request permissions

### Events

- [run_time_permissions](/events/run_time_permissions/) — Permission receiver event

---

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

---

From lsl.dev: https://lsl.dev/functions/llGetPermissions/
