CHIPASS-CLI(1)

πŸ“¦
version 2026.09.0 Β· 2 versions
, in arch rolling

πŸŽ€ keepassxc-cli(1) πŸŽ€

okay so bestie, welcome to the manual page for keepassxc-cli(1) β€” yes, the whole thing lives in the terminal, and yes it's gonna be a journey πŸ’–

Quick vibe check on the credits before we get into it, because we do NOT skip the credits in this house:

  • Author / keeper of the whole operation: KeePassXC Team πŸ‘‘
  • The tool that spat this page out: Asciidoctor 2.0.26 ✨

tiny heads-up before we go any further: this part right here is literally just the boring scaffolding β€” the document head, the stylesheet, the fonts, the whole "please render me nicely in a browser" situation. Not a single flag or command yet, ngl. It's giving backstage pass, not main character energy πŸ’€

So like… stay with me. The actual manual-page stuff β€” the sections, the options, the stuff you actually came here for β€” kicks off right after this πŸ™ˆ

Also fr fr: keep everything you see in backticks exactly as written. No "fixing" it, no renaming it, no vibes-based reinterpretation. Commands and names are load-bearing 🫢

✨ and that's the last } of the stylesheet, bestie. </style> slams shut, </head> follows it out the door, and <body class="manpage"> swings wide open β€” the actual page is finally here. we're so back. 🫢

<div id="header"> walks in like it owns the place, and honestly? it does.

🌸 NAME 🌸

keepassxc-cli β€” command line interface for the ChiPass password manager

okay so that's the whole vibe in one line: it's the command line interface for the ChiPass password manager. terminal girlies, this one's for you. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

keepassxc-cli command [options]

the shape of it, no cap: you run keepassxc-cli, you hand it a command, and then you sprinkle on whatever options you need. that's the pattern. main character energy from the very first line. ⭐


πŸ‘‘ DESCRIPTION πŸ‘‘

okay so keepassxc-cli is the command line interface for the ChiPass password manager. that's the whole thing. that's the assignment.

and what does it actually do? it gives you the ability to query and modify the entries of a KeePass database β€” directly from the command line. πŸŽ€

read that again. query. modify. your KeePass database entries. from the terminal. no clicking, no GUI, no leaving your cozy little shell. it's giving "I do everything in the terminal and I'm thriving." πŸ”₯

lowkey the biggest flex here is that this is the cli for ChiPass, but the database it's poking at is a KeePass database. two names, both literal, both mattering β€” don't @ me, just keep them straight. πŸ’€

and then β€” mid-thought, mid-breath β€” a fresh <div starts opening, and the next section rolls in... 🧚

a little note on the shapes of things

Every command below is written in that classic shape β€” square brackets around the optional bits, angle brackets around the you-gotta-give-me-this bits. Bestie, angle brackets = mandatory. No cap. πŸ’…


  • add [options] <database> <entry> β€” adds a shiny new entry to a database. You can have a password generated for you (that's the -g option ✨) or get a lil prompt so you can type it in yourself (that's -p). And ooh β€” when -g is on, you get to use all the same password generation options that are documented for the generate command. iconic.
  • analyze [options] <database> β€” sniffs out weak passwords in a database using offline HIBP SHA-1 hash lookup. detective mode fr πŸ”
  • attachment-export [options] <database> <entry> <attachment_name> <export_file> β€” dumps the content of an attachment into the file you name. Or use the --stdout option to just spit the attachment's contents out to stdout instead. your choice, bestie πŸŽ€
  • attachment-import [options] <database> <entry> <attachment_name> <import_file> β€” pulls an attachment into an entry. heads up: if an attachment with the same name is already chillin' there, it may get overwritten β€” only if you specify the -f option. πŸ™ˆ
  • attachment-rm <database> <entry> <attachment_name> β€” removes the named attachment from an entry. gone. bye. πŸ’€
  • clip [options] <database> <entry> [timeout] β€” copies an attribute, or the current TOTP (when you pass the -t option), of a database entry to the clipboard.
    • if you don't name an attribute with the -a option, it copies the password. defaults, slay.
    • if multiple entries with the same name live in different groups, only the attribute for the first one gets copied. like, rude but okay.
    • want the attribute from an entry in a specific group? then specify the group path to the entry too, not just the name. iykyk πŸ—ΊοΈ
    • optionally you can pass a timeout in seconds to auto-clear the clipboard. the default timeout is 10 seconds, and you set it to 0 to disable it entirely. safety queen πŸ’…
  • close β€” in interactive mode, closes the currently opened database (peep open).
  • db-create [options] <database> β€” creates a brand new database with a password and/or a key file. the key file gets created if the file it refers to doesn't exist yet. and uh β€” if both the key file and password are empty, no database will be created. nothing happens. the void. 😭
  • db-edit [options] <database> β€” edits a database. when you set a key file, that key file will be created if the file it refers to does not exist. same deal as above ✨
  • db-info [options] <database> β€” shows a database's information. the tea β˜•
  • diceware [options] β€” generates a random diceware passphrase. literally the most old-school-cool way to get a passphrase 🎲
  • edit [options] <database> <entry> β€” edits a database entry. again: generate the password with -g, or get a prompt to type it in with -p. and again, when -g is set you can use all the same password generation options documented for the generate command. 🫢
  • estimate [options] [password] β€” estimates the entropy of a password. you can hand the password over as a positional argument, or feed it in through standard input. either way, we're judging it πŸ’–
  • exit β€” exits interactive mode. synonymous with quit. two names, one exit door πŸšͺ
  • export [options] <database> β€” exports the content of a database to standard output in the specified format (defaults to XML). out it goes πŸ“€
  • generate [options] β€” generates a random password. that's it. that's the whole thing. and yet, so powerful πŸ”₯
  • help [command] β€” displays a list of available commands, or detailed information about the specified command. when you're lost, start here 🧭
  • import [options] <xml> <database> β€” imports the contents of an XML exported database into a newly created database with a password and/or key file.
    • the key file gets created if the file it refers to doesn't exist.
    • if both the key file and password are empty, no database will be created.
    • the new database will be in kdbx 4 format. ✨
  • ls [options] <database> [group] β€” lists the contents of a group in a database. if you don't specify a group, it defaults to the root group. πŸ—‚οΈ
  • merge [options] <database1> <database2> β€” merges two databases together. important: the first database file is going to be replaced by the result of the merge β€” so it is advisable to keep a backup of the two database files before attempting a merge. seriously. back it up bestie 😭
    • in the case that both databases make use of the same credentials, you can use the --same-credentials or -s option.
  • mkdir [options] <database> <group> β€” adds a new group to a database. new folder energy πŸŽ€
  • mv [options] <database> <entry> <group> β€” moves an entry to a new group. relocating ✈️
  • open [options] <database> β€” opens the given database in a shell-style interactive mode. this is useful for performing multiple operations on a single database (e.g. ls followed by show). honestly the best way to live πŸ’…
  • quit β€” exits interactive mode. synonymous with exit. same door, different name πŸšͺ
  • rm [options] <database> <entry> β€” removes an entry from a database. if the database has a recycle bin, the entry gets moved there instead. and if the entry is already in the recycle bin, it will be removed permanently. no takebacks 😬
  • rmdir [options] <database> <group> β€” removes a group from a database. if the database has a recycle bin, the group gets moved there. if the group is already in the recycle bin, it will be removed permanently. same rules, group edition πŸ’€
  • search [options] <database> <term> β€” searches all entries that match a specific search term in a database. go find your stuff πŸ”Ž
  • show [options] <database> <entry> β€” shows the title, username, password, URL and notes of a database entry. it can also show the current TOTP. and about the whole "multiple entries with the same name in different groups" situation β€” everything stated in the clip command section also applies here. so go read that one again 🫢

✨ OPTIONS ✨

General options

the everyday essentials, bestie πŸ’œ

  • --debug-info β€” displays debugging information. for when you need the lore πŸ•΅οΈ
  • -k, --key-file <path> β€” specifies a path to a key file for unlocking the database. in a merge operation, this option is used to specify the key file path for the first database. πŸ”‘
  • --no-password β€” deactivates the password key for the database. no password, no problem πŸ’…
  • -y, --yubikey <slot[:serial]> β€” specifies a yubikey slot for unlocking the database. in a merge operation, this option is used to specify the YubiKey slot for the first database. hardware keys are so main character πŸ”₯
  • -q, --quiet <path> β€” silences the password prompt and other secondary outputs. shhh 🀫
  • -h, --help β€” displays help information. the classic 🫢
  • -v, --version β€” displays the program version. know your build ✨

Merge options

these only matter when you're doing the whole merge thing, okay? 🌸

  • -d, --dry-run <path> β€” prints the changes detected by the merge operation without making any changes to the database. peek, don't touch πŸ‘€
  • --key-file-from <path> β€” sets the path of the key file for the second database. πŸ”‘
  • --no-password-from β€” deactivates the password key for the database to merge from. 🚫
  • --yubikey-from <slot[:serial]> β€” YubiKey slot for the second database. πŸ”₯
  • -s, --same-credentials β€” uses the same credentials for unlocking both databases. one login, two databases, slay πŸ’…

Add and edit options

the same password generation options as documented for the generate command can be used with those 2 commands when the -g option is set. πŸŽ€
  • -u, --username <username> β€” specifies the username of the entry. who dis πŸ‘‘
  • --url <url> β€” specifies the URL of the entry. the link 🌈
  • --notes
  • <notes> β€” specifies the notes of the entry πŸ“ like the little lore dump that lives on your entry, slay.
  • -p, --password-prompt β€” uses a password prompt for the entry's password πŸ” so you type it live instead of it just sitting there, iykyk.
  • -g, --generate β€” generates a new password for the entry ✨ fresh out the oven, no cap.

πŸŽ€ Edit options πŸŽ€

  • -t, --title <title> β€” specifies the title of the entry πŸ’… the name tag basically.

🧚 Estimate options 🧚

  • -a, --advanced β€” performs advanced analysis on the password πŸ” like a full vibe check on how strong it actually is.

πŸ”₯ Analyze options πŸ”₯

  • -H, --hibp <filename> β€” checks if any passwords have been publicly leaked, by comparing against the given list of password SHA-1 hashes, which must be in "Have I Been Pwned" format. Such files are available from https://haveibeenpwned.com/Passwords; note that they are large, and so this operation typically takes some time (minutes up to an hour or so) 😭 literally go make a snack.
  • --okon <okon-cli path> β€” use the specified okon-cli program to perform offline breach checks. You can obtain okon-cli from https://github.com/stryku/okon. When using this option, -H, --hibp must point to a post-processed okon file (e.g. file.okon) 🫢.

πŸ¦‹ Clip options πŸ¦‹

  • -a, --attribute β€” copies the specified attribute to the clipboard. If no attribute is specified, the password attribute is the default. For example, -a username would copy the username to the clipboard. [Default: password]
  • -t, --totp β€” copies the current TOTP instead of the specified attribute to the clipboard. Will report an error if no TOTP is configured for the entry πŸ’€.
  • -b, --best β€” try to find and copy to clipboard a unique entry matching the input. If a unique matching entry is found it will be copied to the clipboard. If multiple entries are found they will be listed to refine the search. (no clip performed) πŸ‘‘

πŸ’œ Db-create, Db-edit and Import options πŸ’œ

  • --set-key-file <path> β€” set the key file for the database πŸ”‘.
  • -p, --set-password β€” set a password for the database πŸ”’.

🌈 Db-create, Import options 🌈

  • -t, --decryption-time <time> β€” target decryption time in MS for the database ⏱️.

πŸ“ Db-edit options πŸ“

  • --unset-password <path> β€” removes the password for the database 🚫.
  • --unset-key-file <path> β€” removes the key file for the database 🚫.

⭐ Show options ⭐

  • -a, --attributes <attribute>... β€” shows the named attributes. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified and -t is not specified, a summary of the default attributes is given. Protected attributes will be displayed in clear text if specified explicitly by this option πŸ‘€.
  • --all β€” show all the attributes of the entry πŸ’–.
  • -s, --show-protected β€” shows the protected attributes in clear text πŸ™ˆ.
  • --show-attachments β€” shows the attachment names along with the size of the attachments πŸ“Ž.
  • -t, --totp β€” also shows the current TOTP, reporting an error if no TOTP is configured for the entry πŸ•.

🌸 Diceware options 🌸

  • -W, --words <count> β€” sets the desired number of words for the generated passphrase. [Default: 7]
  • -w, --word-list <path> β€” sets the Path of the wordlist for the diceware generator. The wordlist must have > 1000 words, otherwise the program will fail. If the wordlist has < 4000 words a warning will be printed to STDERR. Any diceware-compatible wordlist can be used. Note however that ChiPass will NOT verify the PGP signature of signed wordlists 😀 important bestie, don't skip that.

πŸŽ€ Export options πŸŽ€

  • -f, --format β€” format to use when exporting. Available choices are xml or csv. Defaults to xml πŸ“¦.

🧚 List options 🧚

  • -R, --recursive β€” recursively lists the elements of the group πŸŒ€.
  • -f, --flatten β€” flattens the output to single lines. When this option is enabled, subgroups and subentries will be displayed with a relative group path instead of indentation πŸ“.

πŸ”₯ Generate options πŸ”₯

  • -L, --length <length> β€” sets the desired length for the generated password. [Default: 16]
  • -l, --lower β€” uses lowercase characters for the generated password. [Default: Enabled]
  • -U, --upper β€” uses uppercase characters for the generated password. [Default: Enabled]
  • -n, --numeric β€” uses numbers characters for the generated password. [Default: Enabled]
  • -s, --special β€” uses special characters for the generated password. [Default: Disabled]
  • -e, --extended β€” uses extended ASCII characters for the generated password. [Default: Disabled]
  • -x, --exclude <chars> β€” comma-separated list of characters to exclude from the generated password. None is excluded by default πŸ™…β€β™€οΈ.
  • --exclude-similar β€” exclude similar looking characters. [Default: Disabled]
  • --every-group β€” include characters from every selected group. [Default: Disabled]

πŸ“Œ NOTES πŸ“Œ


πŸ‘‘ AUTHOR πŸ‘‘

This manual page was originally written by Manolis Agkopian <m.agkopian@gmail.com> πŸ’–.


πŸ› REPORTING BUGS πŸ›

Bugs and feature requests can be reported on Codeberg at https://codeberg.org/ChiPass/ChiPass/issues 🫢 go off, tell them everything.


Copyright (C) 2016-2020 KeePassXC Team <team@keepassxc.org>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, either version 2 or version 3. There is NO WARRANTY, to the extent permitted by law 🫑.


🌈 SEE ALSO 🌈

keepassxc(1) ✨

πŸ‘‘ AUTHOR πŸ‘‘

Okay bestie, credit where credit is due πŸ’… this manual page (yes, the very one you're reading, meta much?) was written by the lovely human behind <m.agkopian@gmail.com>. Say thank you 🫢


πŸ› found a bug? got a feature idea?

No gatekeeping here β€” bugs and feature requests can be reported on Codeberg at https://codeberg.org/ChiPass/ChiPass/issues. Go off, tell them everything, they literally want to know πŸ’–

Fr fr though, that's the spot for it β€” not the group chat, not the replies. The issue tracker. Periodt.

Copyright (C) 2016-2020 KeePassXC Team, https://keepassxc.org

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, either version 2 or version 3.

There is NO WARRANTY, to the extent permitted by law. Like, none. Zero. Nada 😭 So don't come for anybody if it goes sideways β€” the license said what it said.

✨ And that's a wrap on the whole page, bestie! You made it to the very end β€” main character energy fr πŸŽ€

This edition is Version 2026.09.0, and it was last updated on 2026-09-11 19:12:11 UTC. Go forth and chipass responsibly πŸ‘‘πŸ’œ

πŸ“¦ where this page comes from