diff --git a/docs/guides/collections.md b/docs/guides/collections.md
index 71d1ab4..08b8724 100644
--- a/docs/guides/collections.md
+++ b/docs/guides/collections.md
@@ -33,8 +33,9 @@ It fills deficits without changing existing servers' files.
Choose **Fill missing servers** or **Match collection exactly**, then review
the server IDs and estimated capacity. Native host ports are assigned later.
4. Launches covered by unused keys show **Game key available**. Each game’s
- available keys are counted once across the full lineup. Add an unused Plutonium
- key for each remaining launch, or manage the game pools in **Keys**.
+ available keys are counted once across the full lineup. If more keys are
+ needed, add them under **Administration → Keys**, then refresh the preview.
+ Launch is enabled when every new server has an available game key.
5. Choose **Queue N servers** (or confirm removals and choose **Apply** in exact
mode) and follow the collection progress page.
If every target is already met, choose **Done**; no operation is created.
@@ -102,10 +103,9 @@ Apply validates the reviewed configuration, lobby IDs, keys, and fleet changes,
one database transaction, and returns the progress page ID. Native jobs initially
have no host or port; each job performs its capacity checks asynchronously during
provisioning. If a server lacks an available game key or its reviewed identity changed,
-no jobs or key changes from that submission are committed. Legacy submissions also
-revalidate their reviewed ports. Refreshing
-the preview retains typed keys for launches in the same game that still need
-keys, and resets removal confirmation.
+no jobs or key reservations from that submission are committed. Legacy submissions
+also revalidate their reviewed ports. Refreshing the preview rechecks pool
+availability and resets removal confirmation.
Submitting the same preview again returns the same collection, including after
a lost response or an application restart. Reusing the collection with a new
@@ -145,13 +145,14 @@ remain visible in Provisioning activity and history.
2. Choose the current promoted setup and select a game/map, or select a collection.
3. Choose **Preview launch**. Review the image reference, configuration sources,
managed files and versions, selected map, lobby, port, and prerequisite checks.
-4. Use an available key from the game pool, or enter an unused key for that game.
+4. The launch automatically uses an available key from the game pool. If none is
+ available, manage the pool under **Administration → Keys**, then refresh the
+ preview.
5. Choose **Launch server** and follow the operation to verified health.
-A preview lasts 30 minutes. It neither reserves capacity nor saves a key. If
-another launch takes the lobby, submission stops before saving the key;
-refresh the preview and review the newly assigned ID. A typed key can follow
-the new lobby within the same game. Pool availability is checked again at
+A preview lasts 30 minutes. It reserves neither capacity nor a key. If
+another launch takes the lobby, submission stops before reserving a key;
+refresh the preview and review the newly assigned ID. Pool availability is checked again at
submission, and keys are reserved atomically so concurrent launches cannot share
a credential.
diff --git a/src/lib/ui/components/DeployCollectionDialog.svelte b/src/lib/ui/components/DeployCollectionDialog.svelte
index f708926..5ccb4f9 100644
--- a/src/lib/ui/components/DeployCollectionDialog.svelte
+++ b/src/lib/ui/components/DeployCollectionDialog.svelte
@@ -1,6 +1,6 @@