Changes who can reach an app. For when the person asks to share, invite, or take that back. Apps start private. Modes: public or private, signup, anyone-with-the-link, revoke-link, grant by exactly one name, id, or email, or revoke-grant by id or email. Access "signup" opens the app to anyone who signs up, for when the person asked for that. A stranger sees only its join page, and whoever joins enters as user. A link can open and save, never change it -- letting someone change it takes an invite by name or address. Role user is the ordinary invite; editor lets them change the app. A name grant keeps stronger access the account already has. A new email invite sends mail; an account id or name grant does not. A missing or ambiguous name is refused without naming or guessing accounts. A link takes expires: never, 24h, or 7d, so it stops working on its own; access "set-link-expiry" with the link_id from get_access changes that later. Making a link returns a link_id with the URL; stopping that link later needs the id, and the URL will not do. Stopping a link (access "revoke-link") ends that one link for everyone holding it. It does not make the app private or touch other links; get_access lists which links exist. Stopping a link that was already stopped answers that it isn't one of this app's live links -- the first call having worked, so the link is already off rather than stopping it having failed. Making a link twice yields two live links, so a call that timed out may have made one; get_access shows it. An email invitation needs a Cloche sign-in with that address: an account opens it now, a new one after early-access approval. The platform owns their way in, so the app needs no login or code-entry screen. Taking access back is "revoke-grant" with the subject_or_email from get_access, which lists everyone under grants. A revoked account stays refused on this app, even when public or by link, until invited again.