Account
Sign in once and your password is never asked for again on that machine.
This page covers signing in and out, unattended and two-password sign-in, running several Proton accounts side by side, the sessions Proton holds across your devices, your encryption keys, unlocking data after a password reset, data breaches, your account settings, and deleting the account.
For every command and flag, see the reference: account, breaches, keys, security-log, sessions, profiles, settings.
Check who you are signed in as
Section titled “Check who you are signed in as”$ proton account getEmail: you@proton.meUsername: youName: RomanStorage: ━━━━━─────────────── 26% 119.6 GB of 465.7 GBMax Upload: 4.7 GBProfile: defaultSession: validUnlocked: yesID: Kd91mQxT7vSession: valid and Unlocked: yes together mean this machine can act as the account right now.
Sign in
Section titled “Sign in”proton account loginIt asks for your email, password and two-factor code, attaches the account to a profile, and saves the session. Every later command acts as whichever profile it names.
Signing in also unlocks your keys, so your password is needed once per machine and not again. Your password never leaves your machine. See Security.
Signing in again as the same account, with any of its addresses, changes nothing, so an unattended job can run it ahead of its real work and recover on its own from a session that expired or was revoked:
proton account login --user "$ACCOUNT" --password-file "$CRED"proton drive items upload backup.zst /backupsA second factor is only asked for when the account actually has one enabled.
Sign in by scanning a code
Section titled “Sign in by scanning a code”With a phone or another machine already signed in, sign in here without typing anything:
$ proton account login --qrScan this with a Proton app on a device that is already signed in:
█▀▀▀▀▀█ ▄ █ ▀ █▀▄▀ █▄▄ ▀ █▀▀▀▀▀█ █ ███ █ ▄▄▄ █▀██ ▄ █▄▀ ▄ █ ███ █ █ ▀▀▀ █ ▄█ ▄▄▀ ▄▀█▀▄▄▄█ █ ▀▀▀ █ ▀▀▀▀▀▀▀ ▀▄█▄▀ ▀▄▀▄▀ █▄█ █ ▀▀▀▀▀▀▀ ██▀█▀▄▀██▀▄▀▄▄ ██▀▄▀█▄ ▀▀ █▄▀ █ ▄ ▀▄▄▄▀▀█ ▀ ▄█▀▄█ ▀▀▄▀▄▀█ ▀▄ ▀▄█ █▀█▀█▀▀ ▀▀ ▀ ▀ ▀▄ ▄ ▀█ ▀▀▀▀▀ ▀▄ █▀▄▀ ▀▀ █▀▀█▀ ▄█▀▄▀▀▀██▀▄▄▀▄ ▀▀▄▄ ▀▀█▄▀▀ █ ▀▀▄▄▄ ▄█▀█ ▄▄█▀ ▄▀▄█▀ █▀▄ █▀▄▄▀ ▄█▀▄▄▄█ █▀█ ▀▀ ▄▀█ █▀▀▄ █▀██ ▄ ▀ ▀▀█▄▄▀▀█▄▀▀▀█▄█ █ █▀ █▀▄▀ █▀ ▄▄▄ ▀██▄▀ █ ▀█ ▀ ▀ ▀▀ ▀▀█▀▄▀▄▄▄▄▄ ▄ █▀▀▀█▄▄ █▀▀▀▀▀█ ▀ ▄█▀▄█▄▀ █▀▄▄█ ▀ █▄█▀ █ ███ █ █▄▀ ▀ ▀█▄▀▀ █▀▄▀████▀▀█ █ ▀▀▀ █ █ ██▀ ▄██▄█▀██▄ ▄▀ ▀▄▀▄ ▀▀▀▀▀▀▀ ▀ ▀▀ ▀▀ ▀▀ ▀▀▀ ▀▀ ▀
In Proton Mail on a phone: Settings, then Sign in on another device.Without a camera, run this on a device that is already signed in:
proton account sessions create 0:8FJ3K2QP:qm4Xb2v9tR1sLp0yZcHwKdNfEuAgJi7MoBxVn3Tl5Qs=:Other
Waiting for approval. Ctrl+C stops.✓ Signed in as alice@proton.me (profile "default").You are signed in as whoever approves the code, so --qr takes no --user, --password-file, --second-password-file or --totp. No password, second factor or second password is asked for, and the keys are unlocked the same as after any other sign-in.
A code lasts nine minutes and works once. Run the command again for a new one.
The other direction, where this machine approves a code another device is showing, is Sign another device in.
Security keys
Section titled “Security keys”An account that signs in with a security key is asked to touch it:
$ proton account loginEmail: alice@proton.mePassword:Touch your security key.✓ Signed in as alice@proton.me (profile "default").With an authenticator app enabled as well, the code prompt is the choice: type a code, or press Enter to use the key.
$ proton account loginEmail: alice@proton.mePassword:This account also has a security key. Press Enter to use it instead of a code.Two-factor code:Touch your security key.✓ Signed in as alice@proton.me (profile "default").The key has to be one you plug in. On Windows the sign-in goes through Windows Hello, so a key built into the machine counts.
A passkey living in a phone does not work. Sign in with a code instead.
Registering a key is Register a security key.
On Linux, a key needs udev rules to be readable by anyone but root. Every distribution ships them with libfido2 or its own FIDO package. See Troubleshooting.
Two-password mode
Section titled “Two-password mode”If your account is in two-password mode, login asks for the second password once it has signed in:
$ proton account loginEmail: alice@proton.mePassword:Second password:✓ Signed in as alice@proton.me (profile "default").Afterwards nothing is asked again. proton account settings get reports which mode the account is in.
A Pass extra password
Section titled “A Pass extra password”Pass can be protected with a password of its own. login does not ask for it; the first proton pass command does, once per session.
An unattended run has nobody to ask, so it hands the password over here instead:
proton account login --user alice@proton.me \ --password-file /run/secrets/proton \ --extra-password-file /run/secrets/proton-passOn an account with no extra password, the flag is reported as unnecessary and the sign-in carries on. See Pass for what it changes there.
Sign in without a terminal
Section titled “Sign in without a terminal”A password is read from a file, never from a flag value. A path of - reads standard input.
# from a fileproton account login --user alice@proton.me --password-file /run/secrets/proton
# from a pipeprintf '%s' "$PW" | proton account login --user alice@proton.me --password-file -The second and extra passwords are read the same way, through flags of their own.
Standard input has one reader, so an account with more than one secret takes at most one of them from a pipe:
proton account login --user alice@proton.me \ --password-file /run/secrets/proton \ --second-password-file /run/secrets/proton-secondCommands that ask for the password again
Section titled “Commands that ask for the password again”These commands ask for your password again even when you are signed in:
account deleteaccount keys create·account keys delete·account keys export --private·account keys import·account keys updateaccount keys reactivateaccount security-log delete·account security-log disable·account security-log enableaccount sessions revokeaccount settings emergency-access add·account settings emergency-access update·account settings emergency-access grant·account settings emergency-access cancel·account settings emergency-access removeaccount settings password setaccount settings recovery-contacts add·account settings recovery-contacts removeaccount settings recovery-email set·account settings recovery-email enable·account settings recovery-email disableaccount settings recovery-phone set·account settings recovery-phone enable·account settings recovery-phone disableaccount settings recovery-phrase set·account settings recovery-phrase disableaccount settings second-password set·account settings second-password disableaccount settings security-keys create·account settings security-keys deleteaccount settings two-factor enable·account settings two-factor disablecalendar settings calendars deletemail conversations update·mail messages updatemail settings addresses createmail settings addresses deletemail settings addresses disablemail settings addresses enablemail settings domains createmail settings domains deletemail settings domains updatemail settings forwarding acceptmail settings forwarding createmail settings forwarding deletemail settings autoreply disablemail settings autoreply enablemail settings autoreply setmail settings smtp-tokens createmail settings smtp-tokens delete
printf '%s' "$PW" | proton calendar settings calendars delete Work --password-file -Only one thing per run may read standard input, so --password-file - cannot be combined with a - argument that wants the same stream:
$ printf '%s' "$PW" | proton --password-file - mail messages send --body - ...Error: --password-file - and --body - both read standard input, which can only be read once.Try: pass it with --password-file FILE insteadYour encryption keys
Section titled “Your encryption keys”Every key of the account and of its addresses:
$ proton account keys listID KIND ADDRESS FINGERPRINT ALGORITHM CREATED STATUS──────── ─────── ─────────────── ──────────────────────────────────────── ──────────────── ──────────────── ───────Xq3v9KpL address alice@proton.me efc080fc29483fb2bf6706826c723749a013efb7 ECC (Curve25519) 2024-03-12 09:41 primary7Hn2Lw0R address alice@proton.me 8023711ec0c59bca3710f43ece03ac772bc5c84e RSA (2048) 2019-01-04 18:22 activePz8mQ2rT address alice@pm.me ed048f24c9d2674d6728ad5b546472c03857cbac ECC (Curve25519) 2019-01-04 18:22 primaryKd91mQxT account 139d79d095d7555689ad0e20f2b4b7bf15de5e46 ECC (Curve25519) 2019-01-04 18:22 primary4 keys.An address’s primary key is what mail to it is encrypted to and what it signs with. Its other keys open and verify what arrived before. A key is named by its ID, its short ID or its fingerprint:
$ proton account keys get 8023711ec0c59bca3710f43ece03ac772bc5c84eFingerprint: 8023711ec0c59bca3710f43ece03ac772bc5c84eKind: addressAddress: alice@proton.meAlgorithm: RSA (2048)Created: 2019-01-04 18:22Status: activeUsed For: decryption, verificationID: 7Hn2Lw0RAdding, changing and deleting a key ask for your password even when you are signed in. With nobody to ask, pass --password-file.
Export a key
Section titled “Export a key”proton account keys export Xq3v9KpL # the public key, into the current directoryproton account keys export Xq3v9KpL --dest - # the public key, to stdout--private writes the private key, locked with a passphrase you choose. It asks for your password first, even when you are signed in:
$ proton account keys export Xq3v9KpL --privatePassword:Passphrase:✓ Exported key "efc080fc29483fb2bf6706826c723749a013efb7" to privatekey.alice@proton.me-efc080fc29483fb2bf6706826c723749a013efb7.asc, locked with your passphrase.The passphrase needs at least eight characters. With no terminal to ask, both come from files:
proton account keys export Xq3v9KpL --private \ --password-file /run/secrets/proton --passphrase-file /run/secrets/key-backupAdd a key to an address
Section titled “Add a key to an address”proton account keys create alice@proton.me # generate oneproton account keys import alice@proton.me ~/keys/alice-2019.asc # bring one in from a fileA generated key becomes the address’s primary key, and the one it replaces keeps opening what arrived before. An account that creates post-quantum keys generates them in a Proton client.
An imported key joins the address as one that reads; make it primary with update --primary. Its public half is published with every name and address it carries. A locked file asks for its passphrase, and --passphrase-file gives it. One passphrase serves a whole run, so files locked with different passphrases are imported one at a time. - reads the file from stdin.
Both print the new key’s ID on stdout.
Make a key primary, or stop trusting one
Section titled “Make a key primary, or stop trusting one”$ proton account keys update 7Hn2Lw0R --primaryPassword:✓ Updated key "8023711ec0c59bca3710f43ece03ac772bc5c84e" - now the primary key of alice@proton.me.| Flag | What the key does afterwards |
|---|---|
--obsolete |
Opens and verifies what arrived before; nothing new is encrypted to it |
--compromised |
Opens what was sealed to it; nothing is encrypted to it, and what it signed is not trusted |
=false takes a mark off. --compromised=false leaves the key obsolete, so pass --obsolete=false as well to use it again. The primary key cannot be marked: make another key primary first.
A message signed by a key its owner marked compromised shows Signature: invalid.
Generating a key, importing one, or changing an address’s primary key pauses its end-to-end encrypted forwardings. proton mail settings forwarding enable resumes them.
Delete a key
Section titled “Delete a key”$ proton account keys delete 7Hn2Lw0R! Nothing sealed to this key opens again, and what it signed is no longer verified. `proton account keys export 8023711ec0c59bca3710f43ece03ac772bc5c84e --private` keeps a copy.Would delete key "8023711ec0c59bca3710f43ece03ac772bc5c84e". This cannot be undone. Continue? [y/N]An address’s primary key and the account’s own keys cannot be deleted.
After a password reset
Section titled “After a password reset”A password reset locks everything encrypted before it. Mail, contacts, calendars, vaults and Drive stay sealed until you bring the old keys back:
proton account keys reactivateIt asks for the password from before the reset, then for your current password. In two-password mode, the one from before the reset is the second password.
$ proton account keys reactivatePrevious password:Current password:✓ Reactivated 3 keys.A recovery phrase or a recovery file works instead:
proton account keys reactivate --recovery-phraseproton account keys reactivate --recovery-file ~/Downloads/proton_recovery.ascKeys the secret does not open stay locked and are named. A key from an earlier reset opens with the secret from that time, so run the command again with it. An address key that stays locked comes back from a copy you exported:
proton account keys import alice@proton.me privatekey.alice@proton.me-8023711ec0c59bca3710f43ece03ac772bc5c84e.ascWhat was locked opens from the next command onwards. Drive files need one more step, under Drive.
proton account get counts what is still locked:
$ proton account getEmail: you@proton.meName: RomanStorage: ━━━━━─────────────── 26% 119.6 GB of 465.7 GBMax Upload: 4.7 GBProfile: defaultSession: validUnlocked: yesLocked keys: 3ID: Kd91mQxT7vUntil then, a command that meets locked data names why:
$ proton mail messages get "Invoice #2291"Error: This message is sealed to a key that a password reset locked.Try: proton account keys reactivateAn unattended run hands both secrets over:
proton account keys reactivate \ --previous-password-file /run/secrets/proton-old \ --password-file /run/secrets/protonSign out
Section titled “Sign out”proton account logout # forget the session on this machineproton account logout --revoke # also invalidate it at Protonproton account logout --all # every profile on this machineRevoking also makes a leaked copy of the session file worthless.
More than one account
Section titled “More than one account”A profile is a named session slot on this machine, so a personal and a work account never mix.
$ proton account login --profile work✓ Signed in as you@company.com (profile "work").
$ proton --profile work mail messages listTo see what is signed in here, answered from disk with no API call:
$ proton account profiles listPROFILE EMAIL UNLOCKED SAVED ACTIVE──────── ──────────────── ──────── ──────────────── ──────default you@proton.me yes 2026-04-15 14:31 ✓work you@company.com yes 2026-04-15 15:02To make a profile the default for a shell:
export PROTON_PROFILE=workproton mail messages listA profile nobody signed in acts as nobody, and says so before it reaches the network:
$ proton --profile work mail messages listError: Profile "work" is not signed in.Try: proton account login --profile workPointing a profile at a different account works, but has to be said out loud, since the name means that account everywhere else:
$ proton account login --profile work --user someone@else.comError: Profile "work" is signed in as alice@company.com.Try: proton account logout --profile workSessions on your other devices
Section titled “Sessions on your other devices”Every session Proton holds for your account, across all your devices. This is the “Sessions” section of Proton’s account settings.
$ proton account sessions listID CLIENT CREATED CURRENT──────── ───────── ──────────────── ───────7Kd91mQx web-mail 2026-04-15 14:31 ✓3Ns8pT2v ios-mail 2026-03-02 08:119xL4pQrT web-drive 2026-01-20 19:44proton account sessions revoke 3Ns8pT2vproton account sessions revoke --others # everything but this oneRevoking asks for your password again. With nobody to ask, pass it with --password-file.
If you lose a device, revoke its session. That also makes the credentials saved on it useless, even to someone who already copied the file.
Sign another device in
Section titled “Sign another device in”Where the other device shows a sign-in code, pass it to this one:
$ proton account sessions create 0:8FJ3K2QP:qm4Xb2v9tR1sLp0yZcHwKdNfEuAgJi7MoBxVn3Tl5Qs=:Other✓ Signed in as alice@proton.me on the device that showed the code.The code comes from proton account login --qr on the other machine, or from a Proton app’s sign-in screen. That device is signed in as this account, with no password typed on it, and stays signed in after this one signs out.
Only ever pass a code you are looking at yourself. A code somebody sends you signs their device in as you.
Check the security log
Section titled “Check the security log”Every sign-in and credential change Proton recorded for your account. This is the “Account monitor” section of Proton’s account settings.
$ proton account security-log listTIME EVENT APP──────────────── ─────────────── ─────────────────────2026-08-13 15:09 Sign in success web-account@5.0.407.12026-07-02 17:00 Sign in success web-account@5.0.395.02026-06-24 11:33 Sign in success web-account@5.0.391.12026-06-24 11:33 Sign in success web-account@5.0.391.12026-06-24 11:33 Sign out web-mail@5.0.119.42026-06-24 11:32 Sign in success web-account@5.0.391.16 events.A failed sign-in is drawn in red and an attempt in yellow. Sign-ins and changes made with proton are not recorded.
$ proton account security-log getStatus: onDetailed: offEvents: 6proton account security-log enableproton account security-log enable --detailed # also record the IP address of each eventWith --detailed an IP column appears in the listing. Device, location, provider and protection are filled in for an account Proton Sentinel watches.
enable, disable and delete ask for your password again, or take it from --password-file.
To keep the log somewhere of your own:
proton account security-log list --limit 0 --output json > events.jsonTurning recording off deletes the events with it. While there are any, disable refuses:
$ proton account security-log disableError: Turning the security log off deletes the 6 events it holds.Try: proton account security-log delete, then run this againproton account security-log delete removes every event and goes on recording. disable --detailed stops the IP addresses being recorded and leaves the events alone.
Check your addresses for data breaches
Section titled “Check your addresses for data breaches”Dark Web Monitoring lists the breaches your addresses were found in. This is the “Dark Web Monitoring” section of Proton’s account settings.
proton account breaches listproton account breaches get Canvaget names what leaked, the last few characters of a password that leaked in the clear, and what to do about it. A breach is new until you read it in a Proton app, and open until you resolve it:
proton account breaches resolve Canvaproton account breaches reopen CanvaThe detail of each breach needs a plan that includes Dark Web Monitoring. Without one, list names a few and says how many it withholds.
proton account breaches disable # stop looking for new breachesproton account breaches enable --emails # look again, and email you what turns upproton account breaches disable --emails # keep looking, without the emailsYour aliases and the addresses you added elsewhere are watched by Pass Monitor, under proton pass breaches.
Where the session lives
Section titled “Where the session lives”In a file per profile on this machine, listed under Files on disk; what protects it is under Security. A session ends when it is revoked or when Proton expires it, and either means signing in again.
Settings
Section titled “Settings”proton account settings get # the values now in effectproton account settings list # the keys you can change, with their valuesproton account settings set locale de_AT| Key | Values |
|---|---|
locale |
Any text, such as de_AT |
date-format |
locale, dd/mm/yyyy, mm/dd/yyyy, yyyy-mm-dd |
time-format |
locale, 24h, 12h |
week-start |
locale, monday … sunday |
crash-reports · telemetry |
off, on |
Values can be given by name or by number, and mistakes are caught before anything is sent.
get shows more than set can change. Proton Sentinel and Dark Web Monitoring are turned on and off by their own commands, below, and billing is managed at account.proton.me. Your password, your second factor and the ways back into the account have collections of their own, below.
Mail, Calendar and Drive each have settings of their own, under proton mail settings and so on. Pass and Contacts have none.
Change your password
Section titled “Change your password”proton account settings password setYour current password is asked for first, then the new one, twice. It needs at least eight characters and cannot be the one it replaces.
With nobody to ask, both come from files:
proton account settings password set \ --password-file /run/secrets/proton --new-password-file /run/secrets/proton-newThis session goes on working. Another machine signed in to this account asks for the new password the next time it opens your keys.
Turn two-password mode on or off
Section titled “Turn two-password mode on or off”In two-password mode one password signs you in and a second one opens your keys.
$ proton account settings second-password getStatus: onproton account settings second-password enable # start using a second passwordproton account settings second-password set # change the second passwordproton account settings second-password disable # go back to one passwordenable keeps the password you sign in with and asks for the second one, which then opens your keys. disable locks your keys with the password you sign in with again, and the second password stops working.
Signing in then takes both. Pass the second one with --second-password-file, or answer the prompt that follows your password.
In two-password mode, account settings password set changes the password you sign in with and leaves your keys alone.
Ask for a code at every sign-in
Section titled “Ask for a code at every sign-in”$ proton account settings two-factor getAuthenticator App: offSecurity Keys: noneproton account settings two-factor enableA secret is printed for your authenticator app, and a code from it confirms the app has it. Proton then prints recovery codes, once: each signs you in a single time if you lose the app.
With nobody to ask, it is two runs - one to make the secret, one to confirm it:
proton account settings two-factor generate --output jsonproton account settings two-factor enable --totp 123456 --password-file /run/secrets/protonproton account settings two-factor disable turns it off again, asking for your password and a current code. A recovery code works in place of the code.
A registered security key goes on being asked for after the authenticator app is turned off.
Register a security key
Section titled “Register a security key”$ proton account settings security-keys create --name "YubiKey 5C"Password:Touch your security key.Security key PIN:✓ Created security key "YubiKey 5C" - a key is asked for at every sign-in.The PIN is asked for only by a key that has one. On Windows the prompt comes from Windows itself.
The key has to be one you plug in. A built-in authenticator - Windows Hello, Touch ID, a machine’s own secure element - and a passkey held in a phone are registered at account.proton.me.
An account may have four keys. From the first one, a key is asked for at every sign-in.
$ proton account settings security-keys listID NAME──────── ──────────5bH2mQxK YubiKey 5C9xL4pQrT Spare key2 security keys.Rename one with update, which asks for nothing else:
proton account settings security-keys update "Spare key" --name "Key in the safe"delete takes a key off the account and asks for your password:
$ proton account settings security-keys delete "Key in the safe"Would delete security key "Key in the safe". This cannot be undone. Continue? [y/N] yPassword:✓ Deleted security key "Key in the safe".Removing the last one stops a key being asked for at sign-in. The credential stays on the key itself, where only its manufacturer’s own tool clears it.
Set a recovery email or phone
Section titled “Set a recovery email or phone”$ proton account settings recovery-email getAddress: jane.roe@example.comVerified: yesAllow Recovery: onproton account settings recovery-email set jane.roe@example.comproton account settings recovery-email verifyverify mails the address a link; open it to finish. Until then Proton will not reset your password by email.
The phone works the same way, with the code arriving by SMS in two steps:
proton account settings recovery-phone set '+43 660 1234567'proton account settings recovery-phone verify # Proton texts a codeproton account settings recovery-phone verify --code 482913enable and disable are whether Proton may reset your password through the address or number. Turning one off keeps it for security notices. set none removes it altogether.
Set a recovery phrase
Section titled “Set a recovery phrase”proton account settings recovery-phrase setTwelve words are printed once and kept nowhere. Write them down: anyone holding them can open the account, and you recover with proton account keys reactivate --recovery-phrase.
$ proton account settings recovery-phrase getStatus: onChanged: 2026-04-16 09:12The status is one of on, outdated, not set and off. An outdated phrase was set before your keys were replaced: it still opens the data it was made for, and it will not get you back into the account. Setting a new phrase replaces the old one, and disable removes it.
Turn on Proton Sentinel
Section titled “Turn on Proton Sentinel”proton account settings sentinel getproton account settings sentinel enableproton account settings sentinel enable --emails # also the emails it sendsSentinel needs a plan that includes it. While it is on, Proton chooses which recovery methods the account may use. An organization that turns it on for its members decides it for them, and get says so.
Choose which emails Proton sends you
Section titled “Choose which emails Proton sends you”proton account settings notifications listproton account settings notifications disable offers newsletterproton account settings notifications enable newsletterThe list covers announcements, offers, product updates for each Proton app, the recovery checklist and in-app notifications. Critical account notifications are sent whatever is off. The daily email about new mail is a Mail setting: proton mail settings set daily-notifications.
Delete your account
Section titled “Delete your account”proton account delete --reason other-service --message "Moving everything to one provider"This deletes every address, message, contact, event, file and password, and the account cannot be reactivated. You confirm, then give your password again. A member of a family or duo plan leaves the plan first.
--reason is one of different-account, too-expensive, missing-feature, other-service, merge and other. --message says why in at least ten characters:
$ proton account delete --reason missing-featureError: --message is required: say in at least ten characters why you are leaving.With --reason merge there is no message. Add the account’s address to the other account straight away, or the address is lost for good.
Afterwards this machine keeps nothing of the account: the profile’s session, index and short-ID cache are removed. Try it first with --dry-run.