id = "keeper-commander"
name = "Keeper Commander"
homepage = "https://github.com/Keeper-Security/Commander"
description = "A command-line and terminal UI interface to Keeper Password Manager and KeeperPAM."
executables = ["keeper"]
[dotfiles]
paths = []
exclude = []
secret = ["~/.keeper/config.json"]
side_effect = false
[commands]
format = 1
label = "Keeper Commander"
description = "Search the vault, list folder contents and read a record from the command line. Login, record editing, sharing and the other Commander commands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.subcommand]]
path = ["search"]
label = "Search the vault"
description = "Partial-word or regular-expression search over vault records."
[[commands.subcommand.source]]
id = "ref"
kind = "manual"
url = "https://docs.keeper.io/en/keeperpam/commander-cli/command-reference/record-commands"
revision = "2026-10-27"
evidence = """
Command: search or s
Detail: Search the vault using partial word matching or a regular expression
Search string keywords or regular expression (if --regex) supplied
-v, --verbose verbose output
-c, --categories <CATEGORY> filter by category.
--regex treat pattern as a regular expression instead of space-separated search terms
--format <{table, json}> choose the format of the output
"""
[[commands.subcommand.field]]
id = "pattern"
label = "Search terms"
type = "string"
position = 0
min = 1
sources = ["ref"]
[[commands.subcommand.field]]
id = "regex"
label = "Regular expression"
type = "boolean"
option = ["--regex"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "format"
label = "Output format"
type = "enum"
option = ["--format"]
choices = [{ value = "table", label = "Table" }, { value = "json", label = "JSON" }]
sources = ["ref"]
[[commands.subcommand.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["ref"]
[[commands.subcommand.task]]
id = "search"
label = "Search"
fields = ["pattern", "format"]
required = ["pattern"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["pattern", "regex", "format", "verbose"]
[[commands.subcommand]]
path = ["ls"]
label = "List folder contents"
description = "List the current vault folder."
[[commands.subcommand.source]]
id = "ref"
kind = "manual"
url = "https://docs.keeper.io/en/keeperpam/commander-cli/command-reference/record-commands"
revision = "2026-10-27"
evidence = """
Command: ls
Detail: List folder contents
-l, --list show detailed list
-f, --folders display folders
-r, --records display records
-v, --verbose verbose output
-R, --recursive show subfolder contents
--format format of output {table, csv, json, pdf}
--output path to resulting output file (ignored for "table" format)
"""
[[commands.subcommand.field]]
id = "detailed"
label = "Detailed list"
type = "boolean"
option = ["--list", "-l"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "folders"
label = "Folders only"
type = "boolean"
option = ["--folders", "-f"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "records"
label = "Records only"
type = "boolean"
option = ["--records", "-r"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "recursive"
label = "Recursive"
type = "boolean"
option = ["--recursive", "-R"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "format"
label = "Output format"
type = "enum"
option = ["--format"]
choices = [{ value = "table", label = "Table" }, { value = "csv", label = "CSV" }, { value = "json", label = "JSON" }, { value = "pdf", label = "PDF" }]
sources = ["ref"]
[[commands.subcommand.field]]
id = "output"
label = "Output file"
type = "path"
path = { kind = "file", role = "output" }
option = ["--output"]
effect = "overwrite"
sources = ["ref"]
[[commands.subcommand.task]]
id = "ls"
label = "List contents"
fields = ["detailed", "recursive"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["detailed", "folders", "records", "recursive"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["format", "output"]
[[commands.subcommand]]
path = ["get"]
label = "Show a record"
description = "Display a record, folder or team by UID."
[[commands.subcommand.source]]
id = "ref"
kind = "manual"
url = "https://docs.keeper.io/en/keeperpam/commander-cli/command-reference/record-commands"
revision = "2026-10-27"
evidence = """
Command: get or g
Detail: Retrieve and display a Keeper Record/Folder/Team in printable or JSON format, given a corresponding UID.
UID of a record, folder, or team
--unmask display hidden field content as plaintext
--format<{detail, json, password}> choose the format of the output
"""
[[commands.subcommand.field]]
id = "uid"
label = "UID"
type = "string"
position = 0
min = 1
sources = ["ref"]
[[commands.subcommand.field]]
id = "unmask"
label = "Show hidden fields"
description = "Prints hidden field content as plaintext."
type = "boolean"
option = ["--unmask"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "format"
label = "Output format"
type = "enum"
option = ["--format"]
choices = [{ value = "detail", label = "Detail" }, { value = "json", label = "JSON" }, { value = "password", label = "Password only" }]
sources = ["ref"]
[[commands.subcommand.task]]
id = "get"
label = "Show record"
fields = ["uid", "format"]
required = ["uid"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["uid", "format", "unmask"]