Skip to content
proton-cli

proton mail conversations

Whole threads.

Every command under proton mail conversations, with the arguments and flags it takes. For these commands in use, see the mail guide.

Holds attachments, count, delete, export, forward, get, label, list, mark, move, reply, snooze, star, trash, unlabel, unsnooze, unstar and update.

Files attached anywhere in a thread.

Holds download and list.

Download and decrypt attachments from a thread.

proton mail conversations attachments download REF [ATTACHMENT_REF]
Terminal window
proton mail conversations attachments download 'Quarterly numbers' --dest-dir .
Flag Description
--dest string Write to this path, or - for stdout
--dest-dir string Write into this directory, keeping each item’s own name
--force Overwrite a file that already exists
--include-inline Include inline attachments

List every attachment in a thread.

proton mail conversations attachments list REF
Terminal window
proton mail conversations attachments list 'Quarterly numbers'
Flag Description
--include-inline Include inline attachments

Count the threads in each folder and label.

UNREAD is how many are unread, and TOTAL how many there are. A thread counts as unread while any message in it is. Without –folder every folder and label has a row, and while categories are on, so does each category the inbox shows as a tab.

To count what a filter matches, the last line of list says how many.

proton mail conversations count
Terminal window
proton mail conversations count
proton mail conversations count --folder inbox --output json
Flag Description
--folder string Folder or label to count

Delete threads permanently.

proton mail conversations delete [REF...]
Terminal window
proton mail conversations delete 5bH2mQxK
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Write a whole thread out as .eml files or one mbox.

proton mail conversations export REF
Terminal window
proton mail conversations export 'Quarterly numbers' --dest-dir ./backup
Flag Description
--dest string Write to this path, or - for stdout
--dest-dir string Write into this directory, keeping each item’s own name
--force Overwrite a file that already exists
--format string How to lay the thread down: eml, mbox (default mbox)
--no-attachments Skip attachments

Forward the newest message in a thread.

proton mail conversations forward REF
Terminal window
proton mail conversations forward 'Quarterly numbers' --to jane@example.com
Flag Description
--attach stringArray File to attach (repeatable)
--attach-inline stringArray Image to embed in the HTML body by Content-ID (repeatable; needs –html)
--bcc stringArray Blind-carbon-copy recipient (repeatable)
--body string Your text, placed above the quoted original (- reads stdin)
--cc stringArray Carbon-copy recipient (repeatable)
--draft Save as a draft instead of sending
--eo-password-file string Read the password for recipients outside Proton from a file, or - for stdin
--eo-password-hint string Hint shown to password-protected recipients
--expires string Self-destruct after DURATION (e.g. 7d, 24h), or never
--from string Address to send from, by email or ID (default: your primary)
--html Compose in HTML (default: match the original)
--no-attachments Leave the original’s attachments behind
--no-quote Do not quote the original message
--no-signature Leave out this address’s signature and Proton’s footer
--request-receipt Ask the recipients to confirm when they read it
--send-at string Schedule delivery (RFC 3339, or YYYY-MM-DDTHH:MM in the zone you are working in)
--to stringArray Recipient (repeatable; accepts “Name ”)

Show a whole thread, decrypted.

While mail settings set image-proxy is on, links come without their tracking and each message’s Links line counts the ones that had some. --render raw prints the bodies as they were sent.

proton mail conversations get REF
Terminal window
proton mail conversations get 'Quarterly numbers'
proton mail conversations get 5bH2mQxK --summary
Flag Description
--body-only Emit only the bodies, with no headers or dividers
--include-inline List inline attachments too
--render string Which representation of the body to print: text, html, raw (default text)
--strip-quotes Drop quoted reply blocks from each body
--summary One line per message instead of the full thread

Attach a label to threads.

proton mail conversations label [REF...]
Terminal window
proton mail conversations label 'Quarterly numbers' --label Accounting
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--label string The label to attach or detach, by name or ID
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

List threads in a folder.

Takes the same filters as the verbs that organise threads, so you can preview a selection here before acting on it. A text filter goes through Proton’s own index, which lags a change by a few seconds, or through the copy index create mail builds, which also reads bodies.

Looks in the inbox unless told otherwise. Use –folder all to search everything, or everything but spam and trash while almost-all-mail is on.

Newest first, or largest first with –sort size; –desc reverses either.

proton mail conversations list
Terminal window
proton mail conversations list
proton mail conversations list --unread --folder inbox
proton mail conversations list --from jane@example.com --folder all
proton mail conversations list --has-attachments --folder all
proton mail conversations list --sort size --desc
Flag Description
--after string First day to include (YYYY-MM-DD)
--before string Last day to include (YYYY-MM-DD)
--desc Reverse the order
--folder string Folder or label to look in (default: inbox)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int How many threads per page; 0 for all of them (default 25)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--page int Which page of results, counting from zero
--read Match read messages
--sort string Order by: time, size (default time)
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Set whether threads count as read.

Holds read and unread.

Mark threads as read.

proton mail conversations mark read [REF...]
Terminal window
proton mail conversations mark read 'Quarterly numbers'
proton mail conversations mark read --folder inbox --all
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Mark threads as unread.

proton mail conversations mark unread [REF...]
Terminal window
proton mail conversations mark unread 'Quarterly numbers'
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Move threads to a folder.

proton mail conversations move [REF...]
Terminal window
proton mail conversations move 'Quarterly numbers' --into archive
proton mail conversations move --older-than 90d --folder inbox --into archive
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--into string Destination folder, by name or ID
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Reply to the newest message in a thread.

proton mail conversations reply REF
Terminal window
proton mail conversations reply 'Quarterly numbers' --body 'Looks right to me.'
proton mail conversations reply 'Quarterly numbers' --everyone --body Agreed.
Flag Description
--attach stringArray File to attach (repeatable)
--attach-inline stringArray Image to embed in the HTML body by Content-ID (repeatable; needs –html)
--bcc stringArray Blind-carbon-copy recipient (repeatable)
--body string Your text, placed above the quoted original (- reads stdin)
--cc stringArray Carbon-copy recipient (repeatable)
--draft Save as a draft instead of sending
--eo-password-file string Read the password for recipients outside Proton from a file, or - for stdin
--eo-password-hint string Hint shown to password-protected recipients
--everyone Reply to everyone who was on the message, not just the sender
--expires string Self-destruct after DURATION (e.g. 7d, 24h), or never
--from string Address to send from, by email or ID (default: your primary)
--html Compose in HTML (default: match the original)
--no-quote Do not quote the original message
--no-signature Leave out this address’s signature and Proton’s footer
--request-receipt Ask the recipients to confirm when they read it
--send-at string Schedule delivery (RFC 3339, or YYYY-MM-DDTHH:MM in the zone you are working in)
--to stringArray Recipient (repeatable; accepts “Name ”)

Take threads out of the inbox until later.

–until takes a duration from now, such as 3d, or a moment written out in full, such as 2026-04-17T09:00. The thread returns to the inbox then, unread.

proton mail conversations snooze [REF...]
Terminal window
proton mail conversations snooze 5bH2mQxK --until 3d
proton mail conversations snooze --unread --until 2026-04-17T09:00
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--until string When they come back (e.g. 3d, or 2026-04-17T09:00)
--via string Match mail that arrived at, or left from, this address of yours

Star threads.

proton mail conversations star [REF...]
Terminal window
proton mail conversations star 'Quarterly numbers'
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Move threads to the trash.

proton mail conversations trash [REF...]
Terminal window
proton mail conversations trash 'Quarterly numbers'
proton mail conversations trash --from newsletter@example.com --older-than 90d
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Detach a label from threads.

proton mail conversations unlabel [REF...]
Terminal window
proton mail conversations unlabel 'Quarterly numbers' --label Accounting
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--label string The label to attach or detach, by name or ID
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Bring snoozed threads back to the inbox now.

proton mail conversations unsnooze [REF...]
Terminal window
proton mail conversations unsnooze 5bH2mQxK
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Remove the star from threads.

proton mail conversations unstar [REF...]
Terminal window
proton mail conversations unstar 'Quarterly numbers'
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Change when threads delete themselves.

–expires takes a duration, or never to stop them expiring. It applies to every message in each thread, or with –folder to the ones in that folder. A message whose sender set its expiry keeps it, and none is set in trash or spam.

proton mail conversations update [REF...]
Terminal window
proton mail conversations update 'Quarterly numbers' --expires 7d
proton mail conversations update --folder archive --older-than 1y --expires 30d
proton mail conversations update 5bH2mQxK --expires never
Flag Description
--after string First day to include (YYYY-MM-DD)
--all Act on everything in scope, rather than a subset
--before string Last day to include (YYYY-MM-DD)
--expires string Delete them after DURATION (e.g. 7d, 24h), or never
--folder string Folder or label to look in (default: all)
--from string Match the sender’s address
--has-attachments Match messages with attachments
--keyword string Match text in the subject, a name or an address, and in bodies once a mail index exists
--limit int Most messages to affect; 0 for no cap (default 150)
--newer-than string Match messages newer than DURATION
--older-than string Match messages older than DURATION (e.g. 30d, 2w, 1h)
--password-file string Read the account password from a file, or - for stdin
--read Match read messages
--starred Match starred messages
--subject string Match text in the subject
--to string Match a recipient’s address
--totp string Two-factor code
--unread Match unread messages
--via string Match mail that arrived at, or left from, this address of yours

Every command also takes the flags that work everywhere.