This list is checked against the program's own Help screen (?) by the book's tests, so it cannot drift from it. The hint bar at the bottom of the screen always shows the keys that work right now; where a key behaves differently in two places, the heading says where.
Tip:Esc always means "back out", and every question that can change data takes two keys (y/n, then Enter). See the screen.
select a row (host/pool/dataset/snapshot/disk/share, or a property/permission/ACL row)
r
refresh the focused pane
F2
in a form, on a field with known values (Permissions, Flags, Type, Recipient, Valid user, Root user mapping, a pool property with fixed values such as failmode or autoexpand, a from-disks Redundancy, a job's Host, Pool or Dataset, a replication's Destination host, a backup's Source (new, the prefixes the dataset uses, and each snapshot as @name), and Schedule): open a picker (type filter, Enter OK, Esc cancel; Space toggles in multi-select ones)
F5
in the backup job form: check the repository and password file on the job's host; in the cloud mirror form: check the remote (both read-only; never block saving), with Note: lines when the password file is in a home or temp directory or other users can read it
Esc
dismiss a status message, back out of a focused pane, or cancel a modal (in a y/n confirmation Esc selects No, then Enter)
y / n, Enter
a y/n confirmation takes two keys: y (yes) or n / Esc (no) selects, then Enter applies it; Enter alone does nothing. Forms that cannot be undone (create pool, add vdev, replace disk, revoke, shrinking a volume, pool features) end in one, showing the exact command
?
this Help screen
!
open a shell on the selected host (remote hosts: your unprivileged ssh login); exit returns to zfsctl
A
About: the zfsctl wordmark, the version and what the tool is for (include the version when you report a bug)
create / destroy a dataset (type its name; zfs refuses if it has snapshots or children)
D
destroy a dataset AND its child datasets and snapshots (type its name; says how many; never -R)
s
snapshot the selected dataset
E
create an encrypted dataset (name, cipher, passphrase twice, then type the name)
H
list every property set by hand on this host (source local), grouped by dataset, without the ones at their built-in default (d shows them); Enter selects that dataset
L / U / C
load / unload / change the key of the selected encrypted dataset (its encryption root)
hold the selected snapshot, or release zfsctl's hold on it (a hold stops it being destroyed or pruned; other tags are never released)
c
show what changed since the previous snapshot, by folder (read-only): Enter opens a folder, / inside a folder filters its entries by name as you type (`a
C
the same, but compared with the live dataset: what has changed since this snapshot
f
look inside the selected snapshot (read-only, names and metadata only; other hosts need the browse sudoers feature): Enter opens a folder, ← goes up, / filters by name as you type (`a
R
in the snapshot browser, on a regular file: copy it back next to the original under a new name (asks for the name, then shows the exact command; y then Enter runs it; it never replaces a file; other hosts need the restore sudoers feature)
select a line of Needs attention, then (with tags) a group row, then the data-safety line
Enter
go to the section that owns that line; on an unprotected-data line, open the form that makes the missing job, or (on "and N more") the list of the unprotected datasets ; on a group row, open the Hosts list narrowed to that tag; on the data-safety line, show where each dataset's data lives; on the ignored by choice line, open the list of ignored datasets (Space marks, Enter or u checks the marked ones again after a confirmation)
e
with tags: list every host under its group, or only the ones that need a look
r
reload the jobs, alerts, cloud list and [dashboard] settings
edit the setting in a form (blank = default; on Ignored datasets it opens the list of ignored datasets instead; saved into config.toml after a y/n confirmation)
e
on the Ignored datasets row: edit the list as text (Enter there opens the list, to check datasets again)