Privacy policy
What rPGP keeps,
and what it sends.
rPGP keeps your certificates and keys in files on your own computer, and goes online only when you look a certificate up or publish your own. This page says what those files hold, what those requests carry and who receives them, precisely enough to check against the source.
Effective 2026-09-28 · covers rPGP 0.1.3 and the unreleased code after it
IN SHORT
Nothing goes online until you ask.
- Stored on your computer: certificates, secret keys, revocation certificates and three short lists of fingerprints, in files under your user account, along with Sequoia's index of the certificates (names and e-mail addresses included) and its cache of signatures it has checked. There is no settings file and no log file.
- Secret keys are kept apart from certificates, in files restricted to your user account. A key generated with a passphrase is stored encrypted with it, and one generated without a passphrase is stored unencrypted. An imported key keeps the protection it arrived with, encrypted or not.
- Look up sends what you typed to the Web Key Directory of the e-mail address's domain, to the keyserver (keys.openpgp.org unless you change it), or to both.
- Publish uploads your public certificate to the keyserver, then asks the keyserver to e-mail every address on it that the keyserver does not report as published, revoked ones included.
- Nothing else goes out. Nothing is sent at startup or in the background. No telemetry, analytics, crash reports or update checks, and no account. rPGP never sends a secret key or a passphrase anywhere.
- Every server a request reaches sees your IP address, or in 0.1.3 that of an HTTP proxy you have set. rPGP cannot use SOCKS or Tor itself.
- On the same computer, rPGP also talks to your gpg-agent, the desktop's file dialogs and clipboard, and accessibility services. Those connections stay on your computer, unless your session is itself forwarded from another one.
Two versions. This page covers rPGP 0.1.3, the current
release, and the code after it. Where the code after 0.1.3 behaves
differently, both are described, marked
0.1.3 and
after 0.1.3. "After 0.1.3" means
the master branch at commit c1f0b54, which has
not been released yet. A build of it still reports 0.1.3 in its About
dialog and its User-Agent; the "after 0.1.3" rows are what
it does.
ON YOUR COMPUTER
What rPGP keeps, and where.
Apart from files you ask it to write, rPGP keeps all of its own files in two directories: one for public certificates, and its own for secret keys and everything else.
| Certificates | Secret keys and rPGP's own files | |
|---|---|---|
| Linux | $XDG_DATA_HOME/, by default ~/.local/ |
$XDG_DATA_HOME/, by default ~/.local/ |
| Linux, Flatpak | ~/.var/ |
~/.var/ |
| macOS | ~/Library/ |
~/Library/ |
| Windows | %APPDATA%\ (roaming) |
%LOCALAPPDATA%\ (local) |
Setting RPGP_CERT_STORE moves the certificate directory.
PGP_CERT_D, which other Sequoia tools read for the same
purpose, is not honoured.
Public certificates
The certificate directory is a standard pgp-cert-d store, the one
sq and other Sequoia tools use by default, so on a native
build they see what you import and rPGP sees theirs. The Flatpak keeps
its own, separate from the host's.
It holds the certificates you create or import, public halves only: secret key material is stripped before anything is written there. That includes the names and e-mail addresses on them, and the certifications you make, local ones included, which are never exported or published.
Sequoia's certificate store keeps two SQLite databases in the same
directory, created the first time rPGP starts even if you do nothing
else, and SQLite's -wal and -shm files can
sit beside them. One is an index of every certificate's fingerprint, key IDs, user
IDs, e-mail addresses and domains. The other is a cache that can hold a
one-way hash of each signature rPGP has checked, with the day it was
last used: signatures on certificates, including those a lookup
returns before you import anything, and signatures on files and
messages you verify. A hash is not the signature, but anyone who has
the same signature and what it covers can tell from the cache whether
rPGP on this computer has checked it. Their names contain your
computer's host name, as in
_sequoia_cert_store_index_v1_on_<hostname>.sqlite.
rPGP does not restrict who can read this directory. Whether other accounts on the same computer can read it depends on your system's default permissions for new files.
On Windows it sits in roaming AppData. Where roaming profiles or folder redirection are in use, that folder, index and cache included, is kept on a server your organisation's domain controls: a roaming profile copies it there when you sign out and back when you sign in, and folder redirection keeps it there. That is Windows moving the files, not rPGP. Secret keys are kept in local AppData, which does not roam, for exactly this reason.
Secret keys
One file per key, secrets/<FINGERPRINT>.pgp in rPGP's
own directory. On Linux and macOS each file is created readable only by
you (mode 0600) in a directory only you can open
(0700), and those modes are applied again every time rPGP
opens its store. On Windows each file and directory gets an access
control list with a single entry, for your own account.
Whether a key is encrypted depends on how it arrived:
- Generated with a passphrase: encrypted with it, using Sequoia's defaults: an iterated and salted SHA-256 key derivation, then AES-256 for version 4 keys, or AES-128 in OCB mode for version 6 keys.
- Generated with the passphrase left empty (it is optional): stored unencrypted. File permissions are then all that protects it.
- Imported: each secret key keeps the protection it arrived with, encrypted or not. When you import a key rPGP already holds, the two copies are merged key by key and an imported secret replaces the stored one, so importing an unencrypted backup replaces a protected key with an unprotected one. (After 0.1.3, a GnuPG stub, which holds no key, no longer replaces a real one.)
rPGP has no way to add, change or remove a passphrase once a key is stored, and no command that exports a secret key. Using a protected key decrypts a copy in memory for that one operation, and rPGP writes no decrypted copy to disk. rPGP does not lock its memory, though, so the operating system can move parts of it to swap or a hibernation file, including a key or passphrase in use or a message decrypted in the Notepad.
rPGP does not save passphrases: not to a file, and not to the macOS keychain, the Secret Service or Windows Credential Manager. What you type stays in the app's memory, where the interface toolkit keeps copies that cannot be wiped, and like the rest of that memory it can reach swap.
The secret halves of keys held by gpg-agent or on a smartcard stay there. rPGP never copies them; see gpg-agent below.
Revocation certificates
When rPGP generates a key, it also writes a revocation certificate for
it to revocations/<FINGERPRINT>.rev, readable only by
you. It is not encrypted, and anyone who has it can revoke your key.
Deleting the key leaves it in place, and rPGP has no way to delete it.
rPGP can save a copy to a place you pick.
Lists, settings and logs
Beside those, rPGP keeps three plain-text lists of fingerprints, one per
line and readable only by you: trust-roots,
imported-secrets and sha1-accepted.
trust-roots and sha1-accepted are the only
choices it remembers, and imported-secrets records which
secret keys you imported rather than generated.
0.1.3No other file.
after 0.1.3Also an empty lock file, write.lock.
rPGP has no settings, preferences, recent-files or window-state file.
rPGP's own environment variables are RPGP_CERT_STORE,
RPGP_KEYSERVER and RPGP_ALLOW_DEBUG. Others
matter too: XDG_DATA_HOME in the table above,
GNUPGHOME and the display settings under
gpg-agent, and the proxy and certificate variables
described under Network.
These are rPGP's own files. The operating system and desktop can keep records of their own that rPGP neither writes nor reads, such as a list of files recently picked in file dialogs, saved window state or graphics caches. A backup of your home folder that includes these directories copies your secret keys and revocation certificates with it.
rPGP writes no log files. It prints a few messages to standard error:
that it is falling back to, or restarting on, the software renderer;
that the crash-dump protections below could not be applied, or that
RPGP_ALLOW_DEBUG has turned them off; that the application
ID could not be set; or a fatal error at startup, which may name a store
path. rPGP's own messages contain no key material, addresses or
passphrases. A crash also prints the failing library's own message.
Where standard error goes is up to whatever started rPGP: a desktop
launcher may record it in the system log, such as the systemd journal.
The Windows release build has no console, so there it is discarded
unless whoever started rPGP redirected it.
Files you create
Sign, Encrypt and Decrypt write their result next to the input file,
under a name derived from it: notes.txt is encrypted to
notes.txt.asc or signed as notes.txt.sig, and
decrypting notes.txt.asc gives notes.txt. If
the name is taken, a free one is chosen.
0.1.3In the Flatpak, results never reach your folder under the name rPGP reports, although the status line says they were written. The desktop's document portal keeps each one as a hidden file named .xdp-<name>-XXXXXX in the input's folder and does not remove it, so every decrypt there leaves its plaintext in a hidden file. Outside the Flatpak, decrypted files are created with your system's default permissions, typically 0644, which other accounts can read if they can reach the folder.
after 0.1.3The Flatpak asks where to save instead. Outside the Flatpak, on Linux and macOS, decrypted files are readable only by you. In the Flatpak rPGP asks for the same, but the file on your disk is created by the desktop's document portal.
Encrypted files and signatures get ordinary permissions, and on Windows
every result takes its folder's permissions. Encrypted and decrypted
results are written first as a .part file beside them and
renamed when complete. A signature is written straight to its name,
except one saved through the Flatpak's save dialog after 0.1.3, which is
staged the same way.
0.1.3A .part file is removed when the operation itself fails, but left behind when the last write or the final rename fails, for example on a full disk, or when rPGP crashes or is closed partway through. After a decrypt it can hold some or all of the plaintext.
after 0.1.3A .part file is removed whenever an operation fails, and left behind only if rPGP crashes or is closed partway through; after a decrypt it then holds part of the plaintext. In the Flatpak such a leftover is a hidden .xdp- file in the folder you saved to.
Exporting a certificate writes only its public part, without local certifications, to a file you pick. Import reads only files you pick.
rPGP does not use the system's temporary directory. It writes its own files beside their final place and renames them into it.
0.1.3Those staging files have fixed names, such as <FINGERPRINT>.pgp.tmp, and one left behind by a crash stays.
after 0.1.3Staging files are named <file>.<process>-<n>.tmp, removed if the write fails, and the next time the store opens, rPGP removes any it can that were left behind.
Deleting
Deleting a certificate removes its file and, once you confirm that too, its secret key file. There is no secure erase: files are unlinked, not overwritten. Some things stay behind:
- its revocation certificate;
- its rows in Sequoia's index: fingerprint, key IDs, user IDs, e-mail addresses and domains;
- any hashes of its signatures in Sequoia's signature cache;
- its entry in
imported-secrets; -
any
<FINGERPRINT>.pgp.unreadablecopy (or.unreadable.1,.unreadable.2and so on). When a stored secret key file cannot be read at the moment rPGP needs to write that key, rPGP renames it aside rather than overwriting it, and it stays until you remove it.
0.1.3Also removes the certificate from trust-roots. Its sha1-accepted entry and any leftover .tmp copy of the key stay.
after 0.1.3Also removes it from trust-roots and sha1-accepted, and removes any leftover staging copy of the key.
To remove everything rPGP has stored, delete both directories in the
table above yourself. On a native build the certificate directory is
shared with sq and other Sequoia tools.
Crash dumps
On Linux rPGP turns off core dumps and marks its process as not
dumpable, which also stops other programs running as you from attaching
a debugger to it. On macOS it turns off core dumps; the system's own
crash reporter can still write a report of the crash, which is not a
copy of its memory, and sends it to Apple only if you share analytics
with Apple or choose to send it. On Windows it does neither and leaves Windows Error
Reporting as it is, so a crash dump, if Windows makes one, could contain
key material or a passphrase in use at the time, and Windows may send
its report to Microsoft according to your diagnostic data settings.
Setting RPGP_ALLOW_DEBUG turns these protections off.
OVER THE NETWORK
Only when you look something up, or publish.
Nothing is sent at startup, nothing runs in the background, and the certificates you hold are never refreshed from a server on their own. The Refresh button rereads your own files. Two things you do make rPGP connect, and this section covers each request they make.
Looking up a certificate
When: you type into Look up a certificate and press Search or Enter.
If what you typed contains an @, rPGP first asks the Web
Key Directory (WKD) of that address's domain. If that fails or finds
nothing, the same text goes to the keyserver. Anything else, such as a
fingerprint, a key ID or a name, goes straight to the keyserver.
0.1.3Any certificate a WKD host returns ends the lookup.
after 0.1.3A WKD reply counts only for certificates that carry the address you asked for. If none does, the keyserver is asked too, and so also receives the address.
Web Key Directory
Goes to: a web server at the address's domain: for
alice@example.org, either
openpgpkey.example.org or example.org. It is
whichever server that domain's DNS names. Usually that is run by or for
the domain's owner, but it can be a hosted WKD service, including
keys.openpgp.org's own (wkd.keys.openpgp.org). It is never
run by rPGP.
Sends: an HTTPS request of one of these forms:
https://openpgpkey.example.org/.well-known/openpgpkey/example.org/hu/<hash>?l=alice https://example.org/.well-known/openpgpkey/hu/<hash>?l=alice
That is the domain, a hash of the part before the @
(SHA-1, z-base-32 encoded), and that part itself, unhashed, in
l=. The WKD host therefore learns the whole address you
looked up.
0.1.3Asks openpgpkey.<domain> first and, if that fails for any reason, asks <domain> as well, so up to two hosts receive the address.
after 0.1.3Looks up openpgpkey.<domain> in DNS first. If that name has an address, or DNS gives no answer within ten seconds, only that host is asked. If DNS says it has no address, or returns an error, only <domain> is. One WKD host receives the address, and the DNS query for openpgpkey.<domain> is made either way.
Keyserver
Goes to: https://keys.openpgp.org, unless
you have set RPGP_KEYSERVER.
Sends: one HTTPS request:
https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=<what you typed>
That is what you typed, with spaces trimmed from either end: an e-mail address, a fingerprint, a key ID or any other text. Nothing from your own store goes with it.
What is kept
Results are held in memory. A certificate is written to your store only when you click Import (or Update) on it, and is then merged into any copy you already hold, public parts only. Your query is not saved or logged, and nothing else a server sends back is written to disk, apart from the signature hashes described under public certificates.
0.1.3Results are shown and imported as the server sent them, unfiltered.
after 0.1.3A WKD result is cut down to the address you asked for, with its other user IDs and photos removed. A keyserver result for a fingerprint, key ID or address is limited to certificates that match it; other searches are shown as the server returned them.
Publishing your key
When: only after two clicks: Publish to
keyserver…, offered only for a key that has a secret-key file in
rPGP's store (possibly a GnuPG stub standing in for a smartcard key),
then Publish permanently in a dialog that warns
the upload cannot be undone. That dialog always names keys.openpgp.org,
even when RPGP_KEYSERVER sends the upload elsewhere.
0.1.3The upload takes whichever certificate the details pane shows at the moment you confirm, and does not check it again.
after 0.1.3The upload uses the certificate the dialog was opened for, and itself refuses a certificate without a secret-key file.
Sends, first: one HTTPS request,
POST https://keys.openpgp.org/vks/v1/upload, whose body is
{"keytext": "<your certificate>"}, the certificate
being ASCII-armored.
- Included: the public primary key and subkeys; every user ID (names and e-mail addresses) and every user attribute, such as a photo, that carries an exportable self-signature; and every exportable signature on them, including revocations and certifications other people have made on your key. The armor's comment lines repeat the fingerprint and the valid user IDs.
- Left out: secret key material, and local (non-exportable) certifications.
Sends, second, straight after and without asking
again: POST https://keys.openpgp.org/vks/v1/request-verify
with the token from the upload's reply and a list of every address to
which the keyserver's reply gives any status other than published:
unpublished, pending and revoked ones alike, if there are any. You do
not choose the addresses. According to keys.openpgp.org's
documentation, it then sends a verification e-mail to the addresses it
accepts, subject to its rate limits, and its reply marks those as
pending; the mail comes from the keyserver, not from rPGP. The token is
used for this one request and not kept.
What happens to the upload is then up to the keyserver. keys.openpgp.org describes its handling in its own policy. The in-app warning, that every user ID on the key becomes public permanently, is stricter than that policy.
What every request carries
- Your IP address (or, in 0.1.3, a proxy's, as described below), and the time, to whichever server receives it.
- A
User-Agentheader naming the app and its version, such asrpgp/0.1.3. Accept: */*, and on the two publishing requestsContent-Type: application/json.- No cookies, no login and no other identifying header. Each request rPGP starts builds a new client, so no connection, TLS session, cookie or cache carries over from one to the next; only a redirect within one request can reuse its connection.
Who can see what
Every request is HTTPS, over TLS 1.2 or 1.3, unless you point
RPGP_KEYSERVER at an http:// address. The WKD
addresses and the default keyserver are written into the code as
https://, and a redirect off HTTPS is refused.
Unless a proxy is in use (0.1.3 only; see below),
host names are resolved by your operating system's resolver, so your
DNS provider sees openpgpkey.<domain> and/or
<domain> for a WKD lookup, and
keys.openpgp.org. The network between you and the server
sees the same host name in the TLS handshake, and your IP address. The
path, the query string (the address or search text) and the upload are
encrypted.
Server certificates are checked inside rPGP by rustls, which fetches no revocation data, so the check makes no connections of its own.
0.1.3Trusts only Mozilla's root certificates, built into the app.
after 0.1.3Trusts Mozilla's roots and also the certificates your operating system trusts, read at the first lookup or upload (or those in SSL_CERT_FILE and SSL_CERT_DIR when set). A network that inspects TLS, and whose certificate authority is installed on your computer, as on some managed networks, can therefore read lookups and uploads.
Redirects
A server can redirect a request to another host. rPGP follows up to
four redirects, over HTTPS only. The host a request is redirected to
receives your IP address and, in the Referer header, the
previous URL, including the l= part of an address or the
search text. A 307 or 308 redirect of an upload sends the certificate
to the new host, and one of the verification request sends the token
and your list of addresses; a 301, 302 or 303 turns either into a
GET without them.
0.1.3Only a redirect that names an IP address on your own machine or private network is refused, and not every such range is covered: 100.64.0.0/10, used by carrier NAT and Tailscale, is not. A redirect to a host name that resolves to such an address is followed. The first request itself is not checked, so it goes ahead to a host name that resolves to such an address, or to a WKD domain written as one.
after 0.1.3Any request to an address on your own machine or private network is refused, whether it is written as an IP address or a host name resolves to it, and more ranges are covered (100.64.0.0/10 among them). The one exception is the keyserver you configured, on requests to the keyserver. A redirect to another port on the keyserver's host is refused too.
Proxies and Tor
0.1.3Honours an HTTP proxy named in HTTPS_PROXY or ALL_PROXY (lowercase forms too, and HTTP_PROXY only for an http:// keyserver), with NO_PROXY, but not the proxy settings of Windows, macOS or the Linux desktop. The proxy sees your IP address, the host names rPGP connects to and its User-Agent; host names are then resolved by the proxy rather than your DNS, and servers see the proxy's address instead of yours. A socks4://, socks4a://, socks5:// or socks5h:// value makes lookups and uploads fail rather than go direct. A value with any other scheme except http:// and https://, such as socks://, is ignored, and rPGP then connects directly.
after 0.1.3Ignores every proxy setting, environment variables and system settings alike, and always connects directly.
Neither version speaks SOCKS. In 0.1.3, Tor can be used only through
an HTTP CONNECT proxy named in HTTPS_PROXY, such as Tor's
own HTTPTunnelPort. After 0.1.3, sending rPGP's traffic through Tor
takes a system-wide setup outside the app.
Choosing another keyserver
Setting the environment variable RPGP_KEYSERVER to a
server's address sends both lookups and uploads there instead of
keys.openpgp.org. There is no setting for it in the app. rPGP does not
require that address to start with https://, so an
http:// server would receive lookups and uploads
unencrypted, and the publish dialog still names keys.openpgp.org.
rPGP contacts no other keyserver, and never follows a certificate's preferred-keyserver setting.
The Flatpak's network permission
The Flatpak is granted network access for lookup and publishing; without it the app still manages keys but cannot fetch or publish them. The sandbox does not limit which hosts can be reached, so the limits are the ones described here.
The rpgp.app link
The About dialog's rpgp.app link, when you click it, asks the operating
system to open https://rpgp.app/ in your browser. rPGP makes
no connection for it, and nothing opens it automatically.
This website is covered below.
ON THE SAME COMPUTER
What rPGP talks to without the network.
gpg-agent
Smartcard keys, and keys GnuPG holds, are used through your own
gpg-agent. Each time rPGP loads its list of certificates (at startup, on
Refresh and after every change), it asks the agent which keys it holds.
It finds the agent by running GnuPG's gpgconf, and if none
is running it may have gpgconf start one, in which case
GnuPG may create files of its own, such as its socket directory. The
connection is to a local socket, and leaves the computer only if that
socket is itself forwarded from another one, as SSH can do.
Listing keys sends no certificates: rPGP asks for the agent's list of
key grips and matches them itself. Signing or decrypting with an agent
key sends which key to use, the hash to sign or the encrypted session
key, a description for the agent's PIN prompt, and the terminal and
display settings that prompt needs (GPG_TTY or the terminal
name, TERM, DISPLAY, XAUTHORITY,
DBUS_SESSION_BUS_ADDRESS).
0.1.3The prompt description gives the key ID and creation date.
after 0.1.3It also gives the certificate's primary user ID: a name and e-mail address.
You type the PIN or passphrase into the agent's own pinentry, so it never passes through rPGP, and how long it is cached is up to your agent configuration. rPGP never sends the agent a passphrase or a key, and never imports, exports or deletes keys there.
rPGP itself does not read ~/.gnupg; GnuPG's own programs
use it as usual. GnuPG's pubring.kbx is read only if you
pick it in Import.
The Flatpak is given the host's GnuPG socket directory,
/run/user/<uid>/gnupg, so that it can use the host's
agent, and is not given ~/.gnupg. That directory also holds
GnuPG's other sockets, such as the ssh-agent and scdaemon ones; rPGP
connects only to the agent's main socket.
The desktop
File dialogs. On Linux, rPGP asks the desktop portal's
file chooser over the session bus, or runs zenity where
there is no portal. It also reads the light or dark appearance setting
from the portal. The Flatpak has no access to your home directory:
outside its own data directory, it reaches only the files you pick and
the GnuPG sockets above.
Clipboard. rPGP's Copy buttons copy only when pressed. Its text fields also copy a selection with Ctrl+C, and on Linux any text you select in one with the mouse goes to the primary selection, which other programs can read, as in most apps. rPGP reads the clipboard only when you paste into a field (on Linux, a middle-click pastes the primary selection), and never clears it. Fingerprints, key IDs and user IDs are copied as ordinary text.
0.1.3Notepad output, which may be a decrypted message, is copied as ordinary text too, so clipboard history, clipboard managers and, on Windows, clipboard sync if you turned it on, can keep it. On X11 it is handed to the clipboard manager when rPGP quits. The output box cannot be selected, so its Copy button is the only way to copy it. Passphrase fields can be selected and copied, and on Linux a selected passphrase lands in the primary selection.
after 0.1.3Notepad output copied with its Copy button is marked private, with each platform's hint that clipboard history and managers should not keep it, and on X11 it is withdrawn when rPGP's window closes. In the Flatpak on GNOME or sway, which do not offer it the clipboard protocol that carries the mark, the copy goes out unmarked, and the status line says so. Text you select in the output and copy with Ctrl+C is copied unmarked, and on Linux selecting it with the mouse puts it in the primary selection. Passphrase fields refuse copy, cut and mouse selection.
In both, the Notepad's input box, which may hold a message you are about to encrypt, behaves like any other text field.
Accessibility. rPGP describes its window to the system's accessibility services (AT-SPI on Linux, UI Automation on Windows, the accessibility interface on macOS) so that screen readers can read it. That includes user IDs, fingerprints and Notepad text. Passphrase fields are described as empty.
WHAT IT DOES NOT DO
No telemetry, no accounts, no update checks.
- No telemetry, analytics or usage reporting of any kind.
- No crash reporting of its own. The operating system's crash reporter is outside the app; see crash dumps.
- No update checks: the app never asks whether a newer version exists.
- No account, no sign-in and no cookies.
- No automatic network traffic: nothing at startup, and no background refresh of the certificates you hold.
- No downloaded fonts, icons or other assets. Everything the window shows is built in.
- No other servers: the requests described above are the only ones rPGP makes, and Sequoia's own network library is not built in.
- No secret key or passphrase sent anywhere, ever.
Checked by reading the source of rPGP 0.1.3 and of the
master branch at c1f0b54, and the source and
dependency lists of the libraries both are built from.
No capture of a running build's network traffic was made.
OTHER PEOPLE'S SERVERS
Where your requests end up.
The app sends nothing to the rPGP project. Everything it sends goes to the servers below, under their own policies.
keys.openpgp.org
The default keyserver, a community-run service. It receives lookups that
WKD does not answer, lookups without an @, WKD lookups for
domains that delegate their WKD to it, and everything you publish. Its
privacy policy
says, among other things, that it:
- logs all incoming requests for 30 days, with IP addresses anonymized for storage;
- processes public key material, self-signatures and revocation signatures to provide the service, and may hand that data to third parties on request for development or research;
- publishes an e-mail address only after its owner confirms it by e-mail, and lets it be found by the exact address only, not by name;
- strips user IDs without an e-mail address, and photos, on upload, and does not store them;
- lets you remove your addresses with its "manage" tool, and deletes a certificate on request to its support address; anyone can upload it again unless you also ask support to banlist it.
Everyone else
- WKD hosts are whichever servers the DNS of the address's domain names: usually run by or for the domain's owner, but possibly a hosted WKD service. rPGP cannot tell you their policies.
- A keyserver you choose with
RPGP_KEYSERVERworks under its operator's policy. - Any host a server redirects to receives what is described under redirects.
- Your DNS provider and network see the host names and your IP address, as described above.
- Your operating system may check the app itself when you first open it, as Gatekeeper does on macOS and SmartScreen on Windows, and those checks can contact Apple or Microsoft. They are the system's, not rPGP's, and are not covered here.
- Downloads. Every package is downloaded from GitHub Releases, under the GitHub Privacy Statement. Installing the Flatpak bundle fetches its runtime from the Flatpak remotes you have configured. winget, Homebrew and Flatpak are separate tools, and what they collect is not covered here.
THIS WEBSITE
rpgp.app itself.
- It is hosted on GitHub Pages. GitHub logs every visitor's IP address for security purposes, as its GitHub Pages documentation says, under the GitHub Privacy Statement.
- It loads only its own files: its stylesheet, script, fonts and images. No third-party scripts, fonts, CDNs, analytics, trackers or embeds.
- Its own code sets no cookies.
-
Clicking the light and dark switch stores your choice in your
browser's local storage, under
rpgp-theme. It is read on each page load and never leaves your browser. - A copy button puts the command beside it on your clipboard, only when you click it.
- Links to GitHub and other sites are ordinary links, and those sites' own policies apply.
CONTACT
Questions, and changes.
Questions about this page, or anything the app does that it does not describe, go to the issue tracker at github.com/jzbz/rpgp/issues. Issues are public, so leave out anything you would not publish.
This policy is effective from 2026-09-28. It covers rPGP 0.1.3 and the
unreleased code after it, as of commit c1f0b54. When a
release changes anything described here, this page changes with it, and
so does the date. What it says about the app can
be checked against the source.