What a script is not allowed to do
The boundaries are the same ones the buttons have, and they are worth knowing before you write something that hits one.
The permission list wins
Action Permissions is the authority, and Python is on the same side of it as the interface and the AI. Switching an action off there switches it off for everything.
This is the right way round. It means the page you already use to decide what may happen is the whole answer, rather than one answer for buttons and another for scripts.
The licence wins too
A capability your licence does not carry is refused when a script asks for it, exactly as the button is. Python cannot reach the Money tab's actions on a Free licence, because a Free licence has no Money tab.
This is why a refusal names a licence sometimes and a permission switch other times. The message says which.
Things no licence lets a script do
A few things are deliberately outside the action list, whatever you hold.
- Granting, extending or reassigning a licence. A script can read the licence and ask for a re-check, and that is all: giving a script a path to the rest would be a way round the thing being licensed.
- Reading or writing another avatar's saved password. Nothing in the action list touches them.
- Anything the Second Life Terms of Service forbid. A script is you, and the account is yours.
Write it as though it will be wrong
A script left running unattended will meet a disconnection, a refused action and an empty answer, because over enough hours it meets everything. The habits that survive that are small: catch the refusal you can predict, put a limit on every loop, and print enough that the output area tells you what happened while you were away.