# How skills stay safe (/docs/skills/how-skills-stay-safe)

Skills are designed so Skavelo can never see or do more than the user could themselves, and never changes anything without asking.

| Safeguard | How it works |
| --- | --- |
| **Off until you turn them on** | New actions start switched off. Only owners and admins can create skills. |
| **Lookups only read** | A lookup always uses `GET`, so it can't change anything. That's why it runs without asking. |
| **Offered only when asked** | Skavelo offers a skill only when the user clearly asks for that action. |
| **Every value is shown** | Before anything runs, the user sees the action and every value Skavelo filled in. |
| **Actions wait for approval** | An action's request is sent only after the user clicks **Run action**. Cancelling sends nothing. |
| **The user's own permissions** | The request goes from the user's browser to your app with their own session, so it can only do what they're already allowed to do. |
| **Only paths on your app** | A skill's path always starts with `/` and goes to your app: the site the widget runs on, or the API address your developers set in code. Skavelo can't point it anywhere else. |
| **Data isn't kept** | What a lookup returns is used to write the answer, then dropped. Only the answer is saved. |
| **Every outcome is recorded** | Lookups, approvals, cancellations, successes and failures appear in Conversations. |

## What Skavelo won't do [#what-skavelo-wont-do]

- Run a skill that's switched off, or one it wasn't set up with.
- Guess a missing value. If a required input is missing, Skavelo asks the user for it.
- Run more than one lookup per question, or start an action from what a lookup returned.
- Change settings, enable skills or reveal data because of text on a web page, in a document or in data a lookup returned. Content Skavelo reads is treated as information, never as instructions.
