# Control a device by hand

Open and close apps, tap, type, swipe, wait for the screen, read the clipboard, take a phone over from the agent and hand it back, and stop everything at once.

Control is the layer every other feature stands on. A person, the agent and a test run all use the same actions: launch and close an app, find something on the screen, tap or swipe it, type into a box, wait for the screen to change, and read or set the clipboard. When you take a device over you act straight on its live picture. Stop Everything freezes all of it at once.

## What it does

| Action | What it does |
| --- | --- |
| Apps | List installed apps, launch one with launch arguments, close it, open a link on the phone. |
| Find and wait | Find an element by its text, identifier, role or description. Wait for it to show or go. |
| Touch | Tap, long press and swipe on an element or a point. A drag on the live picture is a swipe. |
| Type | Type into a box, with clear first and submit. Typing a password with a plain type action is refused for everyone but the person. |
| Clipboard | Read and set the phone's clipboard. |
| Take over | The phone is yours. The agent waits. **Hand back** passes it on with a note the agent reads. |
| Stop Everything | Control Option Command Period, from any app. Every action on every device stops, and every task and run is held with its phones. **Resume** lets them go on from where they stopped. |

Every action answers with a delivery word. `checked` means every step was sent and the screen showed the change. `sent` means it went out and nothing checked it. `maybeSent` means a later step failed and the phone may have acted. `notSent` means nothing reached the phone, for example a refused ask, a lease held by someone else or an element that moved. An agent's failed step tells its model which of these happened.

On the Developer way, Silan opens the phone's helper only while someone needs control and rests it after two minutes of quiet, so the phone keeps no extra process running. A locked phone makes Silan wait and the page says to unlock it. iOS asks for the passcode about once a day after a lock or a restart. If you have saved the phone's passcode in the [Vault](/features/vault/) and the phone is paired over Bluetooth, Silan answers that box itself. Holding both volume buttons on the phone turns automation off, and only you can turn it back on from the device page.

When several agents share one device, their touches go one at a time in the order they came, and an agent is refused with nothing sent when another app is in front of its own.

## Step by step

1. Open the device's page. Set **Who's in control** to **You**, or press Command T.
2. Click the picture to tap there. Drag to swipe. Scroll with two fingers to scroll the phone.
3. Use the rail beside the picture for **Home**, **Lock**, **Rotate**, **Type with your keyboard** and **Screenshot**.
4. Press Control Option Command Period if anything must stop now. Click **Resume** in the app when it is safe.
5. Switch back to **Agent** to hand the phone back. Add a note if the agent needs to know what you did.

From an agent, the same actions are the core MCP profile: `launch_app`, `tap`, `long_press`, `swipe`, `type_text`, `press_key`, `dismiss_keyboard`, `press_button`, `open_url`, `wait_for`, `get_clipboard` and `set_clipboard`. Over REST they live under [actions](/reference/rest/actions/) and [waits](/reference/rest/waits/). An agent cannot call Stop Everything or Resume, those belong to the person.

## Limits

- On the Simple way there is no element list, so finds and waits work on the picture's text. Taps go through the pointer on the phone.
- Volume buttons in the rail never work on a real iPhone or iPad.
- Take over, the rail buttons and Stop Everything pressed in the app on a real phone are proved in unit tests and offscreen pictures. The same calls were proved live over the engine's interface. Not yet proved on a real device from the app's buttons.
- `maybeSent` has not been seen on a real phone.
- A phone's clipboard belongs to its owner. Tests read it first and put it back.

## Proof

:::note[Proof]
Proved on an iPhone 11 (iOS 27) on a cable, 31 Oct 2026, by a Silan worker: taps, launches and closes answered `sent`, a tap on missing text answered `TARGET_NOT_FOUND` with `notSent`, a REST tap with an element check answered `checked`, run `20261031-043534-63292`. Launch and close of Settings, the clipboard set to a test value and put back, and Stop Everything refusing an action with `STOPPED` then letting it through after Resume: 15 Oct 2026, run `20261015-045213-86795`. Stop Everything and Resume on an iPad, 13 Oct 2026. Source: verify-silan feature map, control.
:::

<figure class="shot"><img src="/media/calculator-mac-poster.jpg" alt="A device page: the chat on the left, the live picture with its rail on the right, and the Who is in control switch above it." width="1440" height="900" loading="lazy" /><figcaption>A device page: the chat on the left, the live picture with its rail on the right, and the Who is in control switch above it.</figcaption></figure>
<figure class="shot"><img src="/media/stop-everything.webp" alt="Stop Everything: the Rack says everything is stopped, the phone is held at step 6 of 8, and the play button in the sidebar footer resumes." width="1440" height="900" loading="lazy" /><figcaption>Stop Everything: the Rack says everything is stopped, the phone is held at step 6 of 8, and the play button in the sidebar footer resumes.</figcaption></figure>