How a command is built
Every proton command has the same shape. Learn it once and you can guess most of the rest.
proton <app> <collection> <verb> [TARGET...] [--flags]proton mail messages listproton drive items move /report.pdf --into /Archiveproton pass items get github.comproton calendar events create --title Standup --start 2026-04-16T09:00- App -
mail,drive,calendar,pass,contacts,account, orapi. - Collection - the kind of thing you are working with:
messages,items,events,vaults. - Verb - what to do:
list,get,create,send. - Target - which thing. See Naming what to act on.
A group on its own never does anything. proton mail settings prints help; proton mail settings get shows your settings.
The verbs
Section titled “The verbs”Each word means one thing, everywhere it appears.
| Verb | What it does |
|---|---|
list |
Show a collection |
get |
Show one thing in full |
create · update · delete |
Make, change, remove permanently |
trash · restore · empty |
Remove reversibly, put back, clear out |
move --into · copy --into |
Put into another container |
upload · download |
Move bytes to or from your disk |
export · import |
Write documents to disk, or read them back |
send · reply · forward |
Mail going out |
label · unlabel · star · unstar |
Attach or detach |
enable · disable |
Turn something on or off |
add · remove |
Put a member into a container, or take one out |
accept · decline |
Answer an invitation |
revoke |
Stop something working |
set |
Write one setting |
login · logout |
Your session |
To rename anything, use update --name. There is no rename verb.
Flags that mean the same thing everywhere
Section titled “Flags that mean the same thing everywhere”| Flag | Always means |
|---|---|
--to |
An email recipient, or a filter matching one |
--into |
A container on Proton’s side: a folder, a vault, a calendar |
--dest |
A path on your disk |
--force |
Overwrite what is already there |
--all |
Everything in scope, rather than a subset |
--limit |
How many an answer holds, or a verb acts on |
--after · --before |
The first and last day a selection includes |
--access |
What somebody may do with a shared thing |
--expires |
How long before it stops working, or never |
--x-file |
Where to read a secret from; - is standard input |
proton mail messages send --to alice@proton.me # a recipientproton mail messages list --to alice@proton.me # matching a recipientproton mail messages move REF --into archive # a container over thereproton drive items download /report.pdf --dest . # a path over hereproton pass vaults share add Work jane@proton.me --access editorproton account login --user me@proton.me --password-file /run/secrets/protonFive flags have a single-letter form: -p profile, -o output, -n dry run, -q quiet, -y yes. They cluster, so -qn is a quiet dry run.
Saying none
Section titled “Saying none”Removing an optional value takes one of three spellings, and each flag’s help says which:
| Spelling | Used when | Example |
|---|---|---|
| The value itself | The word cannot be mistaken for a real value | --expires never, --catch-all none |
--no-x |
The flag names a state | calendar events update REF --no-remind |
--clear-x |
The value cannot carry the word: text, or a secret read from a file | --clear-signature, --clear-link-password |
Getting help
Section titled “Getting help”Every command documents itself and links to its own page:
$ proton mail messages send --helpCompose and send a message…Global flags: proton --helpFull reference: https://proton-cli.lerchster.dev/mail/messages/#sendproton help mail messages send shows the same screen.
The page a command links to is named after the command. proton drive items upload is documented at /drive/items/#upload.
Shell completion knows the whole tree, including which values each flag accepts. See Install.
What to read next
Section titled “What to read next”| Page | What it covers |
|---|---|
| Naming what to act on | IDs, short IDs, names, paths |
| Filters and bulk changes | Acting on many things at once |
| Dry runs and confirmations | Previewing a change, and what asks first |
| Output and exit codes | What comes back, and what a failure means |
| All commands | Every command in one table |