diff --git a/README.md b/README.md
index c1a7897..0373ea2 100644
--- a/README.md
+++ b/README.md
@@ -546,7 +546,12 @@ desktop job. Pins and import have no phone screen either, and importing an `~/.s
on a phone at all. **VAULTS does have one**, behind MORE, and it is there for a reason the design could not
have anticipated: a vault arrives without being asked for — somebody wraps its key to you — so the person
it arrives for is at least as likely to be holding a phone as sitting at a desktop, and a membership
-visible only on a head they have not installed is a membership they cannot see.
+visible only on a head they have not installed is a membership they cannot see. **Somebody can be added to
+a vault from the phone too**, with the same box, the same role and the same sentence about what adding does
+not do — and if that phone can open the vault, it wraps the key in the same press. What the phone still
+does not draw is anything that takes access away: REMOVE and WITHDRAW KEY act on the first press, and an
+irreversible revocation under a thumb with its explanation in a tooltip nothing can show is the wrong
+trade.
**Port forwarding is not built anywhere**, and the phone's More screen says so in a paragraph rather than
leaving a gap. The v2 design draws a whole screen for it; nothing in the SSH layer forwards anything, so
diff --git a/docs/design-import-gaps.md b/docs/design-import-gaps.md
index b0c0258..6e3ab79 100644
--- a/docs/design-import-gaps.md
+++ b/docs/design-import-gaps.md
@@ -30,7 +30,8 @@ the chrome, hosts and terminals, file transfer, the vault, teams, and preference
> SFTP and S3 are one screen over one `TransfersViewModel`, differing only in which picker they offer.
>
> **A sixth is behind MORE that v2 never drew: VAULTS.** It is the reverse case — a shipped screen the
-> design had no slot for — and it is on the phone because a vault arrives without being asked for.
+> design had no slot for — and it is on the phone because a vault arrives without being asked for, and
+> because somebody can be let into one from there.
> Somebody wraps its key to you from their machine, and the person it arrives for is at least as likely to
> be holding a phone as sitting at a desktop; a vault the server has just put somebody in, visible only on
> a head they may not have installed, is a membership they cannot see. It runs over the same view model
diff --git a/docs/manual-checks.md b/docs/manual-checks.md
index 4720de2..630b734 100644
--- a/docs/manual-checks.md
+++ b/docs/manual-checks.md
@@ -1427,6 +1427,29 @@ instead — distinct from the "no account here" refusal in 12.1, because the two
**Failure means:** the two refusals reading alike leaves somebody checking what they typed when the answer
is that the person is already in.
+### 12.4 Somebody can be added from the phone, and the key goes with them · **needs a device and two accounts**
+
+On the phone: Settings → Vaults, choose a shared vault this account administers.
+
+**Pass:** under the members list there is an ADD SOMEBODY box, three role chips with MEMBER lit, an ADD
+button, and a paragraph saying that adding lets the server serve them and does not let them read anything.
+On a vault this account only belongs to, none of that is drawn at all — not greyed, absent.
+
+Type a colleague's address and press ADD, with the phone unlocked.
+
+**Pass:** they appear in the members list, and the status line says both halves — that they were added, and
+what happened to the key. On an unlocked phone that holds the vault key it says it shared it; the colleague
+syncs and the vault opens.
+
+Now lock the phone's keychain and add somebody else.
+
+**Pass:** it refuses to pretend. The membership is made and the line says the key could not be wrapped
+because this keychain is locked — which is a state somebody can act on, unlike silence.
+
+**Failure means:** a screen that adds somebody and says nothing about the key is implying the server can
+hand out access, which is the one claim this product exists to refuse. ADD drawn for a plain member is a
+button whose only outcome is a 403 from the server.
+
### 12.5 LAST ACTIVE is a real time, and a coarse one · **needs a couple of hours**
Use one account and leave the other idle for two or three hours, then read the members table.
diff --git a/src/DodoSSH.Client.Android/Views/VaultsScreen.axaml b/src/DodoSSH.Client.Android/Views/VaultsScreen.axaml
index 87290d8..e2dd024 100644
--- a/src/DodoSSH.Client.Android/Views/VaultsScreen.axaml
+++ b/src/DodoSSH.Client.Android/Views/VaultsScreen.axaml
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:DodoSSH.Client.Shell.ViewModels"
xmlns:views="using:DodoSSH.Client.Android.Views"
+ xmlns:contracts="using:DodoSSH.Contracts"
x:Class="DodoSSH.Client.Android.Views.VaultsScreen"
x:DataType="vm:VaultsViewModel"
Background="{StaticResource Canvas}">
@@ -45,11 +46,22 @@
plainer reason: it decides who controls the vault, which is not a thing to do while walking. Nor is
renaming, which is a keyboard on a screen that is otherwise all reading.
- **ADD is not drawn either**, and it is the operation this screen least needs. It is an address typed
- into a box, a directory lookup, a role picker, and a paragraph beside it saying what adding somebody
- did *not* do — five controls for the one act on this screen that a colleague at a desktop is already
- doing. Making a vault is here, because it is one field and because it is what a person carrying a
- phone can usefully start.
+ ◆ **ADD is drawn, where it was not.** The argument against it was that it is an address typed into a
+ box, a directory lookup, a role picker and a paragraph saying what adding somebody did *not* do — five
+ controls for an act a colleague at a desktop is already performing. That was a cost argument and it was
+ wrong about who is holding what: the person who needs to let a colleague into a vault is often the one
+ away from their desk, and telling them to go and find one is the same answer this head exists to stop
+ giving. Making a vault was already here on exactly that reasoning.
+
+ What it costs is four rows under the members list rather than five controls, because three of them are
+ the role and are chips rather than a picker — the same chips the host editor wears for tags, so the
+ choice is visible without being opened. It is gated on being able to administer the vault, so on a
+ membership where the answer would be a refusal there is nothing to press.
+
+ **The paragraph comes with it and is not the optional part.** Adding somebody is a change to what the
+ server will serve and nothing else; the key still has to be wrapped from a machine that holds it, which
+ on this head is the bar below. A screen that offered the first and stayed quiet about the second would
+ be implying the server can hand out access, which is the one claim this product is built to refuse.
**The key-holder list is not drawn.** It is a third list, and what the phone can answer about a vault
is the more useful half of the same question and is on the vault's own row: whether *this* machine can
@@ -243,6 +255,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+