A major-mode to manage your password-store (pass) keychain. The keychain entries are displayed in a directory-like structure.
Canonical repository: https://gitea.petton.fr/nico/pass
Installing
Use melpa.
Getting started
This library depends on password-store.el and password-store-otp.el.
M-x pass
The following keybindings are available:
i: Insert a new entry (With a prefix argument, generate the password)n: Go to the next entryp: Go to the previous entryM-n: Go to the next directoryM-p: Go to the previous directoryk: Remove the entry at pointw: Copy password of the entry at point to the kill ringb: Copy username of the entry at point to the kill ringu: Copy url of the entry at point to the kill ringf: Copy a given secret field of the entry at point to the kill ringU: Browse to the url of the entry at point with the default web browsers: Trigger iSearchr: Rename the entry at point?: Helpg: Update the password-store bufferRETorv: Go to the entry at pointj: Jump to a given entryq: Quit pass
Configuration
pass-username-fallback-on-filename
Some applications/extensions rely on a password store structure that exposes the username as the entry name, i.e:
example.com/
john@doe.com
If pass-username-fallback-on-filename is non-nil, the copy username
command will still try to find a password field within the entry but
fallback to the entry name if the field isn't found. In the example
above, john@doe.com will be used in place (unless the entry does
contain a password field).
pass-suppress-confirmations
If pass-suppress-confirmations is non-nil, yes-or-no confirmations for sensitive
operations like editing or removing a password will not occur.
2FA / OTP Support
If you have the pass-otp extension
installed, you will be able to use the following keybindings as well:
o i: Insert an OTP key URI in a new entry (as inpass otp insert)o a: Append an OTP key URI to an existing entry (as inpass otp append)*o s: Take a screenshot of an OTP QR Code and have its related URI be appended to an existing entryo o: Copy OTP token for entry at point (as inpass otp -c)o u: Copy OTP key URI for entry at point (as inpass otp uri -c)
* o a works exactly as pass otp append, in the sense that it will only
"append" a URI to an entry if said entry does not have a URI already. pass otp append will not add several OTP key URIs to the same entry, but it will
substitute the existing OTP key URI with a new one in each call. For more
information, please refer to pass-otp
documentation.
pass-otp-timeout
By default, OTP tokens are cleared from the clipboard after 30 seconds, matching the standard TOTP period defined in RFC 6238. You can customize this behavior:
;; Clear OTP tokens after 45 seconds (setq pass-otp-timeout 45) ;; Use the password-store.el default timeout (setq pass-otp-timeout nil)
Pass View Mode
pass entry files are displayed in buffers that run under
pass-view-mode. This major mode provides some features:
- It will mask the password line automatically, you can hit
C-c C-cto unmask it. - You can hit
C-c C-wto copy your password to your clipbard. - In case of having OTP information in an entry, the buffer will display a header line with the OTP token and remaining seconds until expiration. Note: The OTP token remains visible in the header line while viewing the entry. Consider this when screen sharing or in untrusted environments.
- You can hit
C-c C-oto copy the OTP token to your clipboard. - You can hit
C-c C-qto display the QR Code for the OTP URI in the entry.
Pass in Emacs
Users of this package may also be interested in functionality provided by other Emacs packages dealing with pass:
- password-store: password store (pass) support;
- auth-password-store: integrate Emacs' auth-source with password-store;
- helm-pass: helm interface for pass.
Contributing
Yes, please do! See CONTRIBUTING for guidelines.
License
See LICENSE. Copyright (c) 2015-2023 Nicolas Petton & Damien Cassou.