PASS-OTP(1)
π PASS-OTP(1) π
ok so bestie, this is a page from the General Commands Manual and it's all about pass-otp β literally the glow-up your password store didn't know it needed. grab a snack, we're learning OTPs π
β¨ NAME β¨
pass-otp β a pass(1) extension for managing one-time-password (OTP) tokens. yes queen, your 2FA is about to be so organized π
π¦ SYNOPSIS π¦
pass otp [ COMMAND ] [ OPTIONS ]... [ ARGS ]...
πΈ DESCRIPTION πΈ
So pass-otp extends the pass(1) utility by adding an otp command. What does it do? It adds OTP secrets, it generates OTP codes, and it shows you secret key URIs using the standard otpauth:// scheme. main character behavior fr fr π
And here's the little detail everyone forgets: if no COMMAND is specified, COMMAND defaults to code. so pass otp all by itself? that's a code generator. slay.
π COMMANDS π
π« otp code [ --clip, -c ] [ --quiet, -q ] pass-name
Generate and print an OTP code from the secret key stored in pass-name, using oathtool(1).
- If
--clipor-cis specified, it does not print the code β instead it copies it to the clipboard usingxclip(1), and then restores the clipboard after45(orPASSWORD_STORE_CLIP_TIME) seconds. thoughtful icon behavior honestly π«Ά - If
--quietor-qis specified, it does not print the git update message to standard out.
This command is alternatively named show. two names, one legend.
π« otp insert [ --force, -f ] [ --echo, -e ] [ [ --secret, -s ] [ --issuer, -i issuer ] [ --account, -a account ] [ --path, -p path-name ] ] [ pass-name ]
Prompt for and insert a new OTP secret into the password store at pass-name. new secret, who dis π
- If
--secretis specified, it prompts for the secret value, assuming SHA1 algorithm, 30-second period, and 6 OTP digits. One or both of issuer and account must also be specified. - If
--secretis not specified, it prompts for a key URI; see the documentation athttps://github.com/google/google-authenticator/wiki/Key-Uri-Formatfor the key URI specification.
The secret is consumed from stdin β specify --echo or -e to echo input when running this command interactively. (interactive bestie needs to see what she's typing, iykyk π)
If pass-name is not specified, it converts the issuer:accountname URI label to a path in the form of issuer/accountname. It prompts before overwriting an existing secret, unless --force or -f is specified. This command is alternatively named add.
--path specifies a path prefix to the generated path from the URI label.
π« otp append [ --force, -f ] [ --echo, -e ] [ [ --secret, -s ] [ --issuer, -i issuer ] [ --account, -a account ] ] pass-name
Append an OTP secret to the password stored in pass-name, preserving any existing lines. not me being respectful of your existing data πβ¨
- If
--secretis specified, it prompts for the secret value, assuming SHA1 algorithm, 30-second period, and 6 OTP digits. One or both of issuer and account must also be specified. - If
--secretis not specified, it prompts for a key URI; see the documentation athttps://github.com/google/google-authenticator/wiki/Key-Uri-Formatfor the key URI specification.
The URI is consumed from stdin β specify --echo or -e to echo input when running this command interactively. It prompts before overwriting an existing secret, unless --force or -f is specified.
π« otp uri [ --clip, -c | --qrcode, -q ] pass-name
Print the key URI stored in pass-name to stdout.
- If
--clipor-cis specified, it does not print the URI β instead it copies it to the clipboard usingxclip(1), then restores the clipboard after45(orPASSWORD_STORE_CLIP_TIME) seconds. - If
--qrcodeor-qis specified, it does not print the URI β instead it displays a QR code usingqrencode(1), either to the terminal or graphically if supported. little picture of your secrets, iconic π±
heads up bestie:--clip/-cand--qrcode/-qare written with a|between them β it's one or the other, not both π
π« otp validate uri
Test a URI string for validity according to the Key Uri Format. For more information about this format, see the documentation at https://github.com/google/google-authenticator/wiki/Key-Uri-Format. vibe check for URIs, basically π§
β OPTIONS β
help,-h,--helpβ Show usage message. your lil "what do I do now" button π
π₯ SEE ALSO π₯
pass(1), qrencode(1), zbarimg(1) β go read your other besties' pages too π«Ά
π AUTHORS π
pass-otp was written by Tad Fisher. thank you for your service π
π COPYING π
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
fr fr do read the license, it's giving legally binding but make it cute π
okay that's the whole page, you ate that π
this was the Password store OTP extension, dated 2017 March 19 β go forth and OTP responsibly, bestie πβ¨π
π¦ where this page comes from
- alpine 3.24: pass-otp-doc 1.2.0_git20250809-r1 Β· GPL-3.0-only
- nixpkgs unstable: pass-otp-unstable 2026-05-12
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms