GOPASS(1)

๐Ÿ’– GOPASS(1) โ€” the standard Unix password manager, bestie edition ๐Ÿ’–

okay so this is gopass(1), from the User Commands manual, and honestly? it's the moment. it's giving "your passwords are safe and also your life is together." stay with me, there's a lot here and every single bit of it matters ๐Ÿซถ


โœจ NAME โœจ

gopass โ€” literally the standard Unix password manager. that's it. that's the whole name section. iconic. ๐Ÿ’…


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

gopass [global options] command [command options] [,arguments...]

so you got your global options, then your command, then that command's own options, then the args. the , before arguments... is literally in there, don't come for me, I'm just the messenger ๐Ÿ˜ญ


โœจ GLOBAL OPTIONS โœจ

these bad boys work no matter which command you're running. global. universal. main character energy. ๐Ÿ‘‘

  • --alsoclip, -C โ€” copies the password and shows everything. you get both. greedy in the best way ๐Ÿ“
  • --chars โ€” print specific characters from the secret. like, picky but make it useful โœจ
  • --nofuzzysearch โ€” do NOT start fuzzy search when an entry isn't found. no vibes-based guessing for you ๐Ÿ™ˆ
  • --noparsing, -n โ€” do not parse the output. raw. unfiltered. ๐Ÿ’€
  • --nosync โ€” disable auto-sync. sometimes you just don't wanna ๐Ÿ’…
  • --password, -o โ€” display only the password. it takes precedence over all other flags, so this is the boss flag fr fr
  • --qr โ€” print the password as a QR Code. scan it with your phone, chaos ensues ๐ŸŒˆ
  • --qrbody โ€” print the body as a QR Code. same energy, different part of the secret
  • --revision, -r โ€” show a past revision. does NOT support RCS specific shortcuts. use the exact revision, or -<N> to select the Nth oldest revision of this entry. put some respect on the history ๐Ÿ•ฐ๏ธ
  • --safe, -s โ€” do not display unsafe content (e.g. the password) even if safecontent is disabled. extra careful baby ๐ŸŽ€
  • --unsafe, -u, -f โ€” display unsafe content (e.g. the password) even if safecontent is enabled. living dangerously, love that for you ๐Ÿ”ฅ
  • --yes, -y โ€” always answer yes to yes/no questions. no more ~prompts~, we're committing ๐Ÿซก

๐ŸŒˆ COMMANDS ๐ŸŒˆ

๐Ÿงš age

age commands

built-in commands for the age backend โœจ these allow limited interactions with the gopass specific age identities.

okay so: added identities are automatically added as recipient to your secrets when encrypting โ€” but not to your recipients, so make sure you keep your recipients and identities in sync the way you want to. all age identities, including plugin ones, should be supported. we also still support github identities despite them being deprecated by age โ€” we do so by falling back to the ssh identities for these and keeping a local cache of ssh keys for a given github identity. ๐Ÿซถ

Flags

  • --age-ssh-key-path โ€” custom path to additional SSH key or directory of keys for the age backend
  • --age-sshkeys โ€” load SSH keys from the default SSH directory

๐Ÿฆ‹ alias

print domain aliases

prints defined domain aliases. short, sweet, slays. ๐Ÿ’…


๐Ÿ” audit

decrypt all secrets and scan for weak or leaked passwords

this command decrypts all secrets and checks for common flaws and (optionally) against a list of previously leaked passwords. it's the vibe check your password store has been avoiding ๐Ÿ˜ญ

Flags

  • --format โ€” output format. text, csv, html or json. Default: text
  • --full โ€” print full details of all findings. Default: false
  • --output-file, -o โ€” output filename. used for csv and html
  • --summary โ€” print a summary of the audit results. Default: true (print summary)
  • --template โ€” HTML template. if not set, use the built-in default.

โญ cat

decode and print content of a binary secret to stdout, or encode and insert from stdin

this command is similar to the way cat works on the command line. it can either be used to retrieve the decoded content of a secret similar to cat file, or vice versa to encode the content from STDIN to a secret. same energy, password-store edition ๐Ÿˆ


๐ŸŒธ clone

clone a password store from a git repository

this command clones an existing password store from a git remote to a local password store. can be either used to initialize a new root store or to add a new mounted sub-store. needs at least one argument (git URL) to clone from. accepts a second argument (mount location) to clone and mount a sub-store, e.g. gopass clone git@example.com/store.git foo/bar โœจ

Flags

  • --check-keys โ€” check for valid decryption keys. generate new keys if none are found.
  • --crypto โ€” select crypto backend [age gpgcli plain]
  • --path โ€” path to clone the repo to
  • --storage โ€” select storage backend [cryptfs fossilfs gitfs jjfs]

๐Ÿ’œ config

display and edit the configuration file

this command allows for easy printing and editing of the configuration ๐ŸŽ€

  • no argument โ†’ the entire config is printed
  • a single argument โ†’ a single key can be printed
  • two arguments โ†’ a setting specified by key can be set to value

Flags

  • --store โ€” set options to a specific store

๐Ÿงš convert

convert a store to different backends

convert a store to a different set of backends. glow-up but for storage ๐Ÿ”ฅ

Flags

  • --crypto โ€” which crypto backend? [age gpgcli plain]
  • --move โ€” replace store?
  • --storage โ€” which storage backend? [cryptfs fossilfs fs gitfs jjfs]
  • --store โ€” specify which store to convert

๐Ÿ“ copy

copy secrets from one location to another

this command copies an existing secret in the store to another location. this also works across different sub-stores ๐Ÿซถ if the source is a directory it will automatically copy recursively โ€” in that case, the source directory is re-created at the destination if no trailing slash is found, otherwise the contents are flattened (similar to rsync). no cap, that trailing slash is load-bearing ๐Ÿ’…

Flags

  • --commit-message, -m โ€” set the commit message
  • --force, -f โ€” force to copy the secret and overwrite existing one
  • --interactive-commit, -i โ€” open an editor for the commit message

โœจ create

easy creation of new secrets

this command starts a wizard to aid in creation of new secrets ๐Ÿง™โ€โ™€๏ธ not me trusting the wizard with my entire digital life

Flags

  • --force, -f โ€” force path selection
  • --store, -s โ€” which store to use

๐Ÿ’€ delete

remove one or many secrets from the store

this command removes secrets. it can work recursively on folders. recursing across stores is purposefully not supported โ€” that's a hard no, bestie ๐Ÿ™…โ€โ™€๏ธ

Flags

  • --commit-message, -m โ€” set the commit message
  • --force, -f โ€” force to delete the secret
  • --interactive-commit, -i โ€” open an editor for the commit message
  • --recursive, -r โ€” recursive delete files and folders

๐Ÿฉบ doctor

check your gopass installation for common issues

runs a series of diagnostic checks on the gopass installation: binary dependencies, git configuration, store permissions, recipient key validity, and git remote connectivity. exits with a non-zero status if any check fails. so if it's mad, it's actually mad ๐Ÿ˜ญ

Flags

  • --recipients โ€” run a detailed recipient consistency diagnostic (canonical IDs, missing keys, .public-keys/ status)
  • --verbose, -v โ€” show passing checks in addition to warnings and errors

๐ŸŽ€ edit

edit new or existing secrets

use this command to insert a new secret or edit an existing one using your $EDITOR ๐Ÿ–Š๏ธ it will attempt to create a secure temporary directory for storing your secret while the editor is accessing it. please make sure your editor doesn't leak sensitive data to other locations while editing โ€” fr fr, this one matters ๐Ÿ™ˆ

Note: if $EDITOR is not set we will try editor. if that's not available either we fall back to vi. consider using update-alternatives --config editor to change the defaults.

Flags

  • --commit-message, -m โ€” set the commit message
  • --create, -c โ€” create a new secret if none found
  • --editor, -e โ€” use this editor binary
  • --force โ€” force overwriting and encrypting even if none of your local keys is among the recipients
  • --interactive-commit, -i โ€” open an editor for the commit message

๐ŸŒˆ env

run a subprocess with a pre-populated environment

this command runs a sub process with the environment populated from the keys of a secret. your secrets, but make them environment variables ๐Ÿ’…

Flags

  • --exec โ€” replace the current process with the subprocess via exec(3) rather than spawning a child process (not supported on Windows)
  • --file โ€” write each secret to a ramdisk temp file and export KEY_FILE=/path instead of KEY=value
  • --keep-case, --kc โ€” do not capitalize the environment variable and instead retain the original capitalization
  • --stdin โ€” pipe the secret's password to the subprocess's stdin instead of setting an environment variable

๐Ÿ”Ž find

search for secrets

this command will first attempt a simple pattern match on the name of the secret. if there is an exact match it will be shown directly; if there are multiple matches, a selection will be shown ๐Ÿซถ

Flags

  • --json, -j โ€” output matches as JSON array
  • --regex, -r โ€” interpret pattern as regular expression
  • --unsafe, -u โ€” in the case of an exact match, display the password even if safecontent is enabled

๐Ÿ› ๏ธ fsck

check store integrity, clean up artifacts and possibly re-write secrets

check the integrity of the given sub-store or all stores if none are specified. will automatically fix all issues found, i.e. it will change permissions, re-write secrets and remove outdated configs ๐Ÿ”ง it will touch your stuff, so like, know that going in ๐Ÿ’€

Flags

  • --decrypt โ€” decrypt and reencrypt during fsck.
  • --store โ€” limit fsck to this mount point

๐Ÿฆ‹ fscopy

copy files from or to the password store

this command either reads a file from the filesystem and writes the encoded and encrypted version in the store, or it decrypts and decodes a secret and writes the result to a file. either source or destination must be a file and the other one a secret ๐Ÿ” if you want the source to be securely removed after copying, use gopass fsmove โœจ


๐Ÿงš fsmove

move files from or to the password store

this command either reads a file from the filesystem and writes the encoded and encrypted version in the store, or it decrypts and decodes a secret and writes the result to a file. either source or destination must be a file and the other one a secret.

the source will be wiped from disk or from the store after it has been copied successfully and validated. so yeah, it's gone-gone ๐Ÿ’€ if you don't want the source to be removed, use gopass fscopy ๐Ÿ™ˆ


๐Ÿ”ฅ generate

generate a new password

dialog to generate a new password and write it into a new or existing secret. by default, the new password will replace the first line of an existing secret (or create a new one). fresh password, who dis ๐Ÿ‘‘

Flags

  • --clip, -c โ€” copy the generated password to the clipboard
  • --commit-message, -m โ€” set the commit message
  • --edit, -e โ€” open secret for editing after generating a password
  • --force, -f โ€” force to overwrite existing password
  • --force-regen โ€” force full re-generation, incl. evaluation of templates. will overwrite the entire secret! ๐Ÿšจ not a drill
  • --generator, -g โ€” choose a password generator, use one of: cryptic, memorable, xkcd or external. Default: cryptic
  • --interactive-commit, -i โ€” open an editor for the commit message
  • --print, -p โ€” print the generated password to the terminal
  • --strict โ€” require strict character class rules
  • --symbols, -s โ€” use symbols in the password
  • --xkcd-capitalize, --xkcdcapitalize โ€” capitalize first letter of each word in the generated XKCD password

and that's the first chunk, bestie โ€” there's more where this came from, don't go anywhere ๐ŸŒธ

  • --xkcd-lang, --lang, --xkcdlang โ€” which language the XKCD password gets generated in ๐ŸŒ currently only en (english, and that's the default) or de are supported
  • --xkcd-numbers, --xkcdnumbers โ€” tacks a random number onto the end of the generated XKCD password ๐Ÿ”ข
  • --xkcd-sep, --sep, --xkcdsep โ€” the word separator for generated XKCD passwords โœจ and if you don't specify one, bestie, the words get smooshed together with no spaces/separator at all and the first character of the words gets capitalised

git ๐Ÿงš

Run a git command inside a password store:

gopass git [--store=<store>] <git-command>

Ok so if your password store is a git repository, this literally just executes a git command specified by git-command-args. That's it. That's the vibe ๐Ÿ’…

Flags

  • --store โ€” the store to operate on

grep ๐Ÿ”

Search for secrets files containing search-string when decrypted.

This one decrypts all the secrets and does a pattern match on the content. All of them. Every single one. She's thorough ๐Ÿ‘‘

Flags

  • --regexp, -r โ€” interpret the pattern as a RE2 regular expression

history ๐Ÿ•ฐ๏ธ

Show password history.

Displays the change history for a secret. Iconic for when you're like "wait what was it before I rotated it" ๐Ÿ˜ญ

Flags

  • --password, -p โ€” include passwords in the output

init ๐ŸŒฑ

Initialize a new password store.

Sets up new password storage and uses gpg-id for encryption ๐Ÿ’–

Flags

  • --crypto โ€” select the crypto backend [age, gpgcli, plain]
  • --path, -p โ€” set the sub-store path to operate on
  • --storage โ€” select the storage backend [cryptfs, fossilfs, fs, gitfs, jjfs]
  • --store, -s โ€” set the name of the sub-store

insert โœ๏ธ

Insert a new secret.

Inserts a new secret, obviously ๐Ÿ’… Optionally it can echo the secret back to the console while you're typing it. Or, optionally, the entry can be multiline. And it'll prompt you before overwriting an existing secret โ€” unless you force it, of course ๐Ÿ˜Œ

Flags

  • --append, -a โ€” append data read from STDIN to existing data
  • --commit-message โ€” set the commit message
  • --echo, -e โ€” display the secret while typing
  • --force, -f โ€” overwrite any existing secret and do not prompt to confirm recipients
  • --interactive-commit, -i โ€” open an editor for the commit message
  • --multiline, -m โ€” insert using $EDITOR

Create a symlink.

Makes a symlink from one entry in a mounted store to another entry ๐Ÿซถ

โš ๏ธ Important: it does not cross mounts! Like, at all. Do not come for her about it ๐Ÿ’€

list ๐Ÿ“‹

List existing secrets.

Lists all existing secrets, duh. Give it a folder prefix and it'll only list certain subfolders of the store โ€” highkey useful when your store is a whole ecosystem ๐ŸŒธ

Flags

  • --flat, -f โ€” print a flat list
  • --folders, -d โ€” print a flat list of folders
  • --json, -j โ€” output as JSON array
  • --limit, -l โ€” display no more than this many levels of the tree
  • --strip-prefix, -s โ€” strip this prefix from filtered entries

merge ๐Ÿซ‚

Merge multiple secrets into one.

This is the dedupe workflow, bestie. It needs exactly one destination (it may already exist) and at least one source (which must exist, and can be multiple). Then gopass merges all the entries into one, drops you into an editor, saves the result and removes all the merged entries โœจ

Flags

  • --delete, -d โ€” remove merged entries
  • --force, -f โ€” skip the editor, merge entries unattended

mounts ๐Ÿ—‚๏ธ

Edit mounted stores.

Displays all mounted password stores, and offers several subcommands to create or remove mounts ๐ŸŽ€

move ๐Ÿšš

Move secrets from one location to another.

Moves a secret from one path to another โ€” and yes it works across different sub-stores, she's versatile like that ๐Ÿ’โ€โ™€๏ธ

And here's the detail you don't wanna miss: if the source is a directory, the source directory is re-created at the destination if there's no trailing slash. Otherwise the contents are flattened (similar to rsync). So that trailing slash is load-bearing, fr fr ๐Ÿ˜ญ

Flags

  • --commit-message, -m โ€” set the commit message
  • --force, -f โ€” force the move and overwrite the existing one
  • --interactive-commit, -i โ€” open an editor for the commit message

otp ๐Ÿ”

Generate time- or hmac-based tokens.

Tries to parse an OTP URL (otpauth://). The URL can be TOTP or HOTP. And you can provide the URL on its own line, or on a key value line with a key named 'totp' ๐ŸŒˆ

Flags

  • --alsoclip, -C โ€” copy the time-based token and show it
  • --chained, -p โ€” chain the token to the password
  • --clip, -c โ€” copy the time-based token into the clipboard
  • --password, -o โ€” only display the token
  • --qr, -q โ€” write QR code to FILE
  • --snip, -s โ€” scan screen content to insert a OTP QR code into the provided entry

process ๐Ÿงต

Process a template file.

It reads the template file and replaces all variables with their values โœจ

Flags

(no flags here, she's a self-starter ๐Ÿ’…)

pull โฌ‡๏ธ

Pull a store from its remote.

Pulls the selected store from its configured remote. And if no remote or branch is specified, the storage backend defaults get used โ€” no cap ๐Ÿ‘‘

Flags

  • --store, -s โ€” select the store to pull

push โฌ†๏ธ

Push a store to its remote.

Pushes the selected store to its configured remote. Same deal: no remote or branch specified? Storage backend defaults, babes ๐Ÿ’–

Flags

  • --store, -s โ€” select the store to push

pwgen ๐ŸŽฒ

Generate passwords.

Prints any number of passwords to the console. The optional length parameter sets the length of each password โญ

Flags

  • --ambiguous, -B โ€” do not include characters that could be easily confused with each other, like '1' and 'l' or '0' and 'O' ๐Ÿซถ
  • --memorable, -m โ€” use the memorable (word-based) password generator. The requested length is a minimum (output may be longer). Incompatible with --no-numerals (memorable always includes digits)
  • --memorable-capitalize, --memorablecapitalize, --mc โ€” capitalize (some) words in the generated memorable password. This flag implies --memorable
  • --no-capitalize, -A โ€” do not include capital letters in the generated passwords
  • --no-numerals, -0 โ€” do not include numerals in the generated passwords
  • --one-per-line, -1 โ€” print one password per line
  • --symbols, -y โ€” include at least one symbol in the password
  • --xkcd, -x โ€” use multiple random english words combined into a password. By default, space is used as the separator and all words are lowercase ๐ŸŒธ
  • --xkcd-capitalize, --xkcdcapitalize, --xc โ€” capitalize the first letter of each word in the generated xkcd style password. This flag implies -xkcd
  • --xkcd-lang, --lang, --xkcdlang, --xl โ€” language to generate the password from; currently only en (english, default) or de are supported
  • --xkcd-numbers, --xkcdnumbers, --xn โ€” add a random number to the end of the generated xkcd style password. This flag implies -xkcd
  • --xkcd-sep, --sep, --xkcdsep, --xs โ€” word separator for the generated xkcd style password. If no separator is specified, the words are combined without spaces/separator and the first character of the words is capitalised. This flag implies -xkcd

rcs ๐Ÿ—ƒ๏ธ

Run a RCS command inside a password store.

And the page says: if the password store is a git repository, execute a git command specified by git-command-args. Yeah, it says git โ€” that's literally what the man page says, don't look at me ๐Ÿ‘€๐Ÿ’€

recipients ๐Ÿ‘ฏโ€โ™€๏ธ

Edit recipient permissions.

Displays all existing recipients for all mounted stores, and the subcommands let you add or remove recipients ๐Ÿ’…

Flags

  • --json, -j โ€” output recipients as JSON array
  • --pretty โ€” pretty print recipients

reorg ๐Ÿงน

Reorganize a password store by editing a text file.

This one lists all the secrets in a text file, line by line, and opens it in an editor. Once you save and leave the editor, gopass reads the temp file, calculates the necessary moves and shows you a diff and a confirmation prompt ๐Ÿซถ Once you acknowledge, it reorganizes the secrets and creates a meaningful commit message. Iconic behavior, honestly โœจ

secret-service ๐Ÿ”Œ

Run a D-Bus Secret Service daemon backed by gopass.

It implements the org.freedesktop.secrets D-Bus API so desktop applications (Firefox, Chromium, VS Code, Electron apps, NetworkManager, secret-tool, ...) store their secrets in the same gopass password store as the CLI ๐ŸŽ€ one store to rule them all, periodt

setup ๐ŸŒŸ

Initialize a new password store.

This command is automatically invoked if gopass is started without any existing password store. It exists so users can be handed simple one-command setup instructions ๐Ÿ’–

Flags

  • --create-team, --create โ€” create a new team instead of joining an existing one (default: false, i.e. join an existing team)
  • --crypto โ€” select the crypto backend [age, gpgcli, plain]
  • --email โ€” EMail for unattended GPG key generation
  • --name โ€” Firstname and Lastname for unattended GPG key generation
  • --remote โ€” URL to a git remote, will attempt to join this team
  • --storage โ€” select the storage backend [cryptfs, fossilfs, fs, gitfs, jjfs]
  • --team, --alias โ€” name of the team to create or join (may contain slashes). Also used as the local mount point

show ๐Ÿ‘€

Display the content of a secret.

Shows an existing secret and optionally puts its first line on the clipboard. And if it does go on the clipboard โ€” heads up โ€” it gets cleared after 45 seconds โณ so go paste it, bestie ๐Ÿ˜ญ

Flags

  • --alsoclip, -C โ€” copy the password and show everything
  • --chars โ€” print specific characters from the secret
  • --nofuzzysearch โ€” do not start fuzzy search when an entry is not found
  • --noparsing, -n โ€” do not parse the output
  • --nosync โ€” disable auto-sync
  • --password, -o โ€” display only the password. Takes precedence over all other flags ๐Ÿ‘‘
  • --qr โ€” print the password as a QR Code
  • --qrbody โ€” print the body as a QR Code
  • --revision, -r โ€” show a past revision. Does NOT support RCS specific shortcuts. Use an exact revision or -<N> to select the Nth oldest revision of this entry
  • --safe, -s โ€” do not display unsafe content (e.g. the password) even if safecontent is disabled
  • --unsafe, -u, -f โ€” display unsafe content (e.g. the password) even if safecontent is enabled
  • --yes, -y โ€” always answer yes to yes/no questions

sum ๐Ÿงฎ

Compute the SHA256 checksum.

Decodes a Base64 encoded secret and computes the SHA256 checksum over the decoded data. Super useful for verifying the integrity of an inserted secret ๐Ÿ”ฅ

sync ๐Ÿ”„

Sync all local stores with their remotes.

Syncs all local stores with their git remotes (if any) and checks any possibly affected gpg keys ๐ŸŒˆ

Flags

  • --store, -s โ€” select the store to sync

templates ๐ŸŽ€

Edit templates.

So yeah โ€” it lists all the templates just vibing in your password store, and lets you edit them and create new ones. Templates are basically your little starter kits, and this is where you manage the whole lineup. ๐Ÿ’…


๐Ÿงน unclip

An internal command to clear the clipboard. It clears the clipboard if the content matches the checksum โ€” like a little bouncer checking IDs at the door. ๐Ÿซถ

Flags

  • --force โ€” clear the clipboard even if the checksum mismatches. Yeah, it's a little pushy, but sometimes that's what you need.
  • --timeout โ€” time to wait. โณ

๐Ÿ”„ update

Check for updates, bestie.

This command checks for gopass updates over on GitHub and automatically downloads and installs any missing update for you. No manual labor, no hunting around โ€” it just handles it. โœจ

With --pre, release candidates and other pre-releases are considered as well โ€” so if you like living on the edge, this is your moment. ๐Ÿ”ฅ

Flags

  • --pre โ€” include pre-releases (e.g. release candidates). It's giving early access, it's giving beta-tester main character energy. ๐Ÿ‘‘

๐ŸŒธ version

Display version.

This command displays version and build time information. Simple, iconic, does exactly what it says on the tin. ๐ŸŽ€


๐Ÿ’– REPORTING BUGS ๐Ÿ’–

Found a bug? Don't suffer in silence, bestie โ€” report it to <https://github.com/gopasspw/gopass/issues/new>. The maintainers literally want to know. ๐Ÿ›โœจ


Copyright ยฉ 2021 Gopass Authors. This program is free software; you may redistribute it under the terms of the MIT license. This program has absolutely no warranty.

Translation: it's free, it's MIT-licensed, and if it breaks, nobody's legally on the hook. Standard open-source bestie behavior. ๐Ÿซถ


And that's the whole page, babes โ€” this was gopass from gopass (github.com/gopasspw/go..., dated October 2026, filed under GOPASS(1). Go forth and store those secrets safely. ๐Ÿฆ‹๐Ÿ’œ๐ŸŒธ

๐Ÿ“ฆ where this page comes from