id = "ggshield" name = "ggshield" homepage = "https://docs.gitguardian.com/ggshield-docs/" description = "A CLI application to help secure your software development lifecycle." executables = ["ggshield"] [dotfiles] # https://docs.gitguardian.com/ggshield-docs/configuration documents the # global file ~/.gitguardian.yaml on Linux and macOS; local .gitguardian.yaml # files are project-specific and are intentionally not included. paths = ["~/.gitguardian.yaml"] exclude = [] secret = [] side_effect = false [commands] format = 1 label = "Scan for secrets" description = "Scan files or a repository for leaked secrets. Authentication, hooks, Docker and PyPI scans are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["secret", "scan", "path"] label = "Scan files and directories" [[commands.subcommand.source]] id = "readme" kind = "help" url = "https://github.com/GitGuardian/ggshield#usage" revision = "2026-10-27" evidence = """ - in files: `ggshield secret scan path -r .` Lines that are too long are truncated to match the size of the terminal, unless the verbose mode is used (`-v` or `--verbose`). """ [[commands.subcommand.field]] id = "recursive" label = "Recurse into directories" type = "boolean" option = ["-r"] sources = ["readme"] [[commands.subcommand.field]] id = "verbose" label = "Verbose output" type = "boolean" option = ["--verbose", "-v"] sources = ["readme"] [[commands.subcommand.field]] id = "paths" label = "Files or directories" type = "path" position = 0 multiple = true path = { kind = "any", role = "input" } sources = ["readme"] [[commands.subcommand.task]] id = "scan-dir" label = "Scan a directory recursively" set = { recursive = [true] } fields = ["paths", "recursive", "verbose"] required = ["paths"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["paths", "recursive", "verbose"]