从源码构建需要 Qt 6.8 或更高版本,Qt 5 支持已在 1.8 结束;AppImage 需要 glibc 2.39 以上和 libfuse2,否则要加 --appimage-extract-and-run;macOS 版未公证、Windows 安装包未签名,首次启动需手动绕过隔离或 SmartScreen 提示。
QtPass
IJHackGPL-3.0活跃维护给 Unix 标准密码管理器 pass 套上跨平台图形界面,让不习惯命令行的用户也能方便地管理 GPG 加密的密码库。
QtPass is a multi-platform GUI for pass, the standard unix password manager.
apt-get install qtpass
qmake6 && make && make installREADME 未说明显存或 GPU 要求;这是桌面 GUI 程序,运行于 Linux、BSD、macOS 和 Windows,运行时需要 gpg2(GnuPG 2.2+),git 与 pass 为可选。
给 Unix 标准密码管理器 pass 套上跨平台图形界面,让密码管理更直观安全
给 Unix 标准密码管理器 pass 套上跨平台图形界面,让不习惯命令行的用户也能方便地管理 GPG 加密的密码库。
核心能力
- 直接调用 pass、git 与 gpg2 管理密码库
- 内置 TOTP 一次性密码,无需额外扩展
- 按文件夹为多接收者分别选择加密用户
- 支持多配置文件,隔离个人与工作密码
- 集成 Git 版本控制与智能卡、YubiKey 支持
容易踩的坑
- v2.0.0-rc3QtPass 2.0.0-rc3pre-release2026-11-05 · 2026-11-05 20:12 UTC
查看更新说明
Third release candidate for QtPass 2.0. Please test it and report problems in #1812 or as new issues. Translations continue on Weblate; strings added since rc2 have best-effort fillers that Weblate's reviewers can refine.
Downloads: Windows installer (
.exe), macOS (.dmg), Linux AppImage (x86_64, glibc 2.39+), and source archives, each with a detached signature (.asc) and a SLSA build provenance file (.intoto.jsonl). 2.0 needs Qt 6.8 or newer; the 1.8 line (1.8.4) stays available for Qt 5 and older Qt 6.Worth testing in particular: "Hide password" with entries that hold a PIN, CVV or API key; clipboard autoclear (it now puts the previous clipboard back); a store inside a larger Git repository or with
pass.signcommitsset; signed.gpg-idstores with thepassbackend; the Windows installer; and, as before, the first-run wizard, profiles, re-encryption and the AppImage on Wayland.Changes since rc2
- "Hide password" hides the other secrets too. Fields named like a PIN, CVV, API key, recovery code or passphrase get the eye button, matched as whole words; the word list is in Settings ▸ Display (#2054, #2092).
- Autoclear puts the previous clipboard back, as
pass -cdoes (#2090). Text copied out of a shown entry, a revealed password or the password editor now carries the same "secret" hints as the copy buttons and is cleared by autoclear too (#2117). - Git stays inside the store, as with
pass: a store inside a larger repository (dotfiles in the home folder, say) is no longer committed to and pushed with it unless Settings ▸ Git says so; inheritedGIT_DIRand friends are ignored; new folders and.gitare private (umask 077 orPASSWORD_STORE_UMASK) (#2057, #2086, #2091, #2102, #2119). - Commits are signed when the store asks (
pass.signcommits), aspassdoes; a commit that cannot be signed fails and says the entry is saved but not committed (#2070, #2079). - Signed
.gpg-idwith thepassbackend gets the native backend's checks beforepassinserts, moves, copies or re-initialises; a signature by a revoked key no longer counts; profiles warn when two stores share a signing key (#2014, #2059, #2084, #2087, #2099, #2100). - A shared store cannot exhaust QtPass: decrypted entries stop at 64 MiB,
huge entries are shown in bounded parts,
.gpg-id,.templates, signatures and key files are read as regular files with size limits (a FIFO or/dev/zerolink used to hang the GUI), and names from the store are shown as plain text (#2051, #2060, #2061, #2075). - Deleting an entry named with glob characters removes only that entry;
a new folder named
link/../xcan no longer land outside the store; an entry saved into a new folder is encrypted to the nearest folder's recipients, aspassdoes. - Init refuses a folder ou
- v1.8.4QtPass 1.8.4最新正式版2026-10-26 · 2026-10-26 14:38 UTC
Security
- A copied password carries the KDE password hint on FreeBSD and OpenBSD too, as it did on Linux, so Klipper, CopyQ and cliphist keep it out of their history (ported from #2038, #2039)
Bugfixes
- Started from a terminal, QtPass no longer freezes when Git wants HTTPS
credentials or SSH a passphrase or host key. They prompted on that
terminal, unseen, and every decrypt and save waited behind them; child
processes now start without a controlling terminal, so Git and SSH use
SSH_ASKPASS/GIT_ASKPASSwhen set and otherwise fail with an error QtPass shows. Needs Qt 6.7 or newer; older builds behave as before (ported from #2016, #2040) - GNOME shows the QtPass icon for its window:
StartupWMClassin the desktop entry ties the window to it (ported from #1975, by @carlos22)
- v1.8.3QtPass 1.8.32026-10-06 · 2026-10-06 14:37 UTC
查看更新说明
Bugfixes
- Saving an entry no longer loses what was typed when it fails. The password
dialog closed as soon as OK was pressed and gpg ran afterwards, so a missing
or expired recipient key or an unusable
.gpg-idlost the entry. The dialog now stays open until the entry is written, locked and showing "Saving…"; on failure the fields come back with the reason. Cancel, Esc and closing the window still work while it waits, after asking, so a save that never reports (an unanswered PIN prompt) cannot trap you (#1944, ported from #1951)
Qt 5.15 and Qt 6 are both still supported. 2.0 (Qt 6.8+) is in release-candidate testing (2.0.0-rc2); 1.8 remains the maintenance line.
- Saving an entry no longer loses what was typed when it fails. The password
dialog closed as soon as OK was pressed and gpg ran afterwards, so a missing
or expired recipient key or an unusable
- v2.0.0-rc2QtPass 2.0.0-rc2pre-release2026-10-05 · 2026-10-05 13:42 UTC
查看更新说明
Second release candidate for QtPass 2.0. Please test it and report problems in #1812 or as new issues. Translations are in string freeze on Weblate until the final release.
Downloads: Windows installer (
.exe), macOS (.dmg), Linux AppImage (x86_64, glibc 2.39+), and source archives. 2.0 needs Qt 6.8 or newer; the 1.8 line (1.8.3) stays available for Qt 5 and older Qt 6.Worth testing in particular: the first-run wizard, switching profiles and initialising a new store, re-encryption, Ctrl+Q / Ctrl+W and the tray, the AppImage on a Wayland desktop, the Windows WSL setup, and macOS.
Changes since rc1
- A failed save no longer loses what you typed. The password dialog
stays open until the entry is written, showing "Saving…"; if encryption
fails (an expired or untrusted recipient key, an unusable
.gpg-id), the fields come back with the reason. Cancel, Esc and closing the window still work while it waits, after asking, so a save that never finishes (an unanswered PIN prompt) cannot trap you (#1951, #1965). - The Users dialog shows the keys a folder is really encrypted to, including expired, revoked or missing ones, which "Show unusable keys" used to hide, so they can be seen and unticked (#1962).
- "Unusable public key" is explained, instead of being reported as a missing key (#1961).
- Enter in a field-name editor confirms the new name instead of saving and closing the whole entry.
- Re-encryption refuses to run when it cannot check the store for unmerged files after a pull; removing a linked folder reports when git could not record it (#1960).
- macOS: the app bundle declares itself an application with its full version
(#1953), and
scripts/release-mac.shcan sign and notarize, opt-in, for a future notarized build (#1943). - Builds without warnings on GCC 16; CI back on the newest Qt 6.11 patch.
- Translations: Weblate updates, and best-effort fillers for the new strings for Weblate's reviewers (#1967).
Upgrade notes
- Qt 6.8 or newer. Qt 5 support ended with 1.8;
qmakerefuses older Qt with a clear message. Packagers building 1.8.x against Qt 5 need the1.8branch for that. - Ctrl+Q quits. It used to close the window, which with "hide on close" meant hiding to the tray; that is Ctrl+W (File ▸ Close window) now. The window close button and Alt+F4 behave as before.
- The menu bar is off by default so the window looks as it did. Alt shows it for as long as it is used, so Alt+F and the other mnemonics work; Ctrl+M, Settings ▸ Show menu bar or the tray menu keep it on, and the choice is remembered. On macOS the bar is the system's and always there.
- Settings moved, stored values did not. Clipboard and panel autoclear are one number each (0 is "Never"), the two template checkboxes are one choice, and "Show menu bar" / "Show process output" are toggles in the Settings menu instead of the settings dialog. Existing configuration files are read and written with the same keys.
- Generating a GPG key asks for a passphrase. Leaving the fields empty used to produce an unprotected private key silently; now OK waits until a passphrase is typed twice or "No passphrase" is ticked on purpose.
- A link inside the store is not part of it. A symbolic link or NTFS junction found in the store (a shared repository can carry one) is skipped by re-encryption and search and refused by show, edit, add, move, copy and re-ke
- A failed save no longer loses what you typed. The password dialog
stays open until the entry is written, showing "Saving…"; if encryption
fails (an expired or untrusted recipient key, an unusable
- v2.0.0-rc1QtPass 2.0.0-rc1pre-release2026-09-24 · 2026-09-24 21:07 UTC
查看更新说明
Release candidate for QtPass 2.0. Please test it and report problems in #1812 or as new issues. Translations are in string freeze on Weblate until the final release.
Downloads: Windows installer (
.exe), macOS (.dmg), Linux AppImage (x86_64, glibc 2.39+), and source archives. 2.0 needs Qt 6.8 or newer; the 1.8 line (1.8.2) stays available for Qt 5 and older Qt 6.Worth testing in particular: the first-run wizard, switching profiles and initialising a new store, re-encryption, Ctrl+Q / Ctrl+W and the tray, the AppImage on a Wayland desktop, the Windows WSL setup, and macOS.
Upgrade notes
- Qt 6.8 or newer. Qt 5 support ended with 1.8;
qmakerefuses older Qt with a clear message. Packagers building 1.8.x against Qt 5 need the1.8branch for that. - Ctrl+Q quits. It used to close the window, which with "hide on close" meant hiding to the tray; that is Ctrl+W (File ▸ Close window) now. The window close button and Alt+F4 behave as before.
- The menu bar is off by default so the window looks as it did. Alt shows it for as long as it is used, so Alt+F and the other mnemonics work; Ctrl+M, Settings ▸ Show menu bar or the tray menu keep it on, and the choice is remembered. On macOS the bar is the system's and always there.
- Settings moved, stored values did not. Clipboard and panel autoclear are one number each (0 is "Never"), the two template checkboxes are one choice, and "Show menu bar" / "Show process output" are toggles in the Settings menu instead of the settings dialog. Existing configuration files are read and written with the same keys.
- Generating a GPG key asks for a passphrase. Leaving the fields empty used to produce an unprotected private key silently; now OK waits until a passphrase is typed twice or "No passphrase" is ticked on purpose.
- A link inside the store is not part of it. A symbolic link or NTFS junction found in the store (a shared repository can carry one) is skipped by re-encryption and search and refused by show, edit, add, move, copy and re-key, with a message; deleting one removes the link. The configured store root itself may still be a link. See SECURITY.md.
- Debug output comes from the
qtpasslogging category in every build:QT_LOGGING_RULES="qtpass.debug=true"turns it on, no debug build needed (see the FAQ). The#ifdef QT_DEBUGtracing is gone. - Linux AppImage: new, attached to every release; needs glibc 2.39 or
newer (Ubuntu 24.04, Debian 13, Fedora 40). It bundles Qt only and uses the
system's
pass,gpgandgit. - Packagers: the AppStream metainfo installs as
org.qtpass.QtPass.metainfo.xml(wasqtpass.appdata.xml);main/main.proinstalls the desktop file, metainfo, icons and man page; the RPM spec follows; the Flatpak manifest dropsrename-appdata-filewith the 2.0 tag. - Still true from 1.8: the macOS
.dmgis not signed or notarized (see the macOS page, #1542) and the Windows installer is not code-signed (#1643).
The full list of changes is in CHANGELOG.md.
- Qt 6.8 or newer. Qt 5 support ended with 1.8;
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
QtPass
QtPass is a multi-platform GUI for pass, the standard Unix password manager, providing a secure and intuitive way to manage your passwords.
Available in over 60 languages
Project site: qtpass.org, with downloads, getting started, FAQ and screenshots.
Features
- Using
passorgitandgpg2directly - Cross platform: Linux, BSD, macOS and Windows
- Native widgets and iconography where possible
- Per-folder user selection for multi-recipient encryption
- Multiple profiles support
- Built-in TOTP (One-Time Password) support, no external extension needed
- Password generation with configurable complexity
- Content search across decrypted entries (regular expression; opt-in)
- Git integration for version control
- Smartcard and USB token support (OpenPGP, YubiKey)
- Configurable shoulder surfing protection
- Share submenu: re-encrypt folder, export your public key, add recipients
- Import GPG keys from file or clipboard without leaving the app
- Process output panel with command labels, color-coded errors, and auto-scroll
- Easy onboarding for new users
How each of these works, from profiles and templates to OTP and Git sync, is described on qtpass.org/advanced.
Logo based on Heart-padlock by AnonMoos.
Installation
Every way to install QtPass, with the current version per platform, is on
qtpass.org/downloads; first-time setup of GnuPG
and pass is on qtpass.org/getting-started.
From package
OpenSUSE & Fedora
yum install qtpass
dnf install qtpass
Debian, Ubuntu and derivates like Mint, Kali & Raspbian
apt-get install qtpass
Arch Linux
pacman -S qtpass
Gentoo
emerge -atv qtpass
Sabayon
equo install qtpass
FreeBSD
pkg install qtpass
OpenBSD
pkg_add qtpass
macOS
Download the .dmg from the releases page
and clear the quarantine flag:
xattr -d com.apple.quarantine /Applications/QtPass.app
(the Homebrew cask was disabled in September 2026 because the app is not
notarized; see the macOS page on qtpass.org and
#1542)
Windows
choco install qtpass or winget install IJHack.QtPass
(the installer is not code-signed yet, so SmartScreen asks for
More info → Run anyway on first start; signing is being set up, see the
code signing policy)
Linux (AppImage)
Download QtPass-<version>-x86_64.AppImage from the
releases page, then:
chmod +x QtPass-*.AppImage && ./QtPass-*.AppImage
It bundles Qt only, and uses the pass, gpg2, git and gpg-agent already
installed on your system, so your existing ~/.password-store, pinentry and
smartcard all keep working, with no sandbox permissions to grant. Requires
glibc 2.39 or newer (Ubuntu 24.04+, Debian 13+, Fedora 40+) and libfuse2
(or run it with --appimage-extract-and-run on systems without it).
From Source
Dependencies
- QtPass requires Qt 6.8 or later (build with
qmake6); Qt 5 support ended with QtPass 1.8 - The Linguist package is required to compile translations
- For fallback icons, the SVG library is required
Runtime dependencies:
gpg2(GnuPG 2.2+) - requiredgit- optional, for repository syncpass(1.7+) - optional, can use native GPG/Git
Your GPG must be configured with a graphical pinentry when applicable. Same goes for Git authentication.
On macOS, pinentry-mac from Homebrew works best (gpgtools also works).
On most Unix systems all you need is:
qmake6 && make && make install
Windows
See Windows.md for Windows-specific installation and build instructions.
Using profiles
Profiles allow grouping passwords. Each profile might use a different Git repository and/or different gpg key. Each profile also can be associated with a GPG key to sign and verify the .gpg-id file for integrity. A typical use case is to separate personal and work passwords.
Hint Instead of using different git repositories for the various profiles passwords could be synchronized with different branches from the same repository. Just clone the repository into the profile folders and checkout the related branch.
Example
The following commands set up two profile folders:
cd ~/.password-store/
# Replace these with your own repositories (HTTPS or SSH).
PERSONAL_REPO_URL="<your-personal-password-repository-url>"
WORK_REPO_URL="<your-work-password-repository-url>"
# Examples:
# git clone https://git.example.com/you/qtpass-personal.git personal
# git clone [email protected]:you/qtpass-work.git work
git clone "${PERSONAL_REPO_URL}" personal && echo "personal/" >> .gitignore
git clone "${WORK_REPO_URL}" work && echo "work/" >> .gitignore
pass init -p personal [personal GnuPG-ID] && git -C personal push
pass init -p work [work GnuPG-ID] && git -C work push
Note:
- Replace
PERSONAL_REPO_URLandWORK_REPO_URLwith repositories you own and control. - Replace
[personal GnuPG-ID]and[work GnuPG-ID]with the ID from the related GnuPG key. - The parts
echo ... >> .gitignoreare just needed in case there is a Git repository present in the base directory.
Once the repositories and GnuPG-ID's have been defined the profiles can be set up in QtPass.
Links of interest
Testing
This is done with make check
Codecoverage can be done with make lcov, make gcov, make coveralls and/or make codecov.
Be sure to first run: make distclean && qmake6 CONFIG+=coverage qtpass.pro
Security considerations
The threat model and how to report a vulnerability are on qtpass.org/security and in SECURITY.md.
Using this program will not magically keep your passwords secure against compromised computers even if you use it in combination with a smartcard.
It does protect future and changed passwords though against anyone with access to your password store only but not your keys. Used with a smartcard it also protects against anyone just monitoring/copying all files/keystrokes on that machine and such an attacker would only gain access to the passwords you actually use. Once you plug in your smartcard and enter your PIN (or due to CVE-2015-3298 even without your PIN) all your passwords available to the machine can be decrypted by it, if there is malicious software targeted specifically against it installed (or at least one that knows how to use a smartcard).
To get better protection when using a smartcard even against a targeted attack I can think of at least two options:
- The smartcard must require explicit confirmation for each decryption operation. Or if it just provides a counter for decrypted data you could at least notice an attack afterwards, though at quite some effort on your part.
- Use a different smartcard for each (group of) key.
Known issues
- Filtering (searching) breaks the tree/model sometimes
- Starting without a correctly set password-store folder gives weird results in the tree view
Roadmap
What comes next, from the 2.0 release to CMake and signed releases, is in ROADMAP.md.
Further reading
FAQ, Contributing and Code of Conduct documentation. Changelog and Roadmap
On qtpass.org: getting started, features in depth, FAQ, screenshots, security, privacy, code signing policy and changelog.
AI assistance Parts of QtPass are developed with AI coding assistants (mainly Claude Code, earlier also OpenCode), and AI reviewers (CodeRabbit, GitHub Copilot) comment on pull requests. Commits made with an assistant carry a
Co-Authored-By:trailer naming the model (or the pull request says so), so the history shows which changes were AI-assisted. Every change is reviewed, built and tested by a human maintainer before it is merged, and the maintainers take responsibility for it. Some translations are machine-drafted; they stay marked unfinished in the.tsfiles until a native speaker confirms them on Weblate. The application itself contains no AI features and talks to no AI service.
License
This repository follows the REUSE Specification v3.2.
Please see LICENSES/, REUSE.toml and
the individual *.license files (if any) for copyright and license information.
