{
  "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": {
    "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
    },
    "subcommand": [
      {
        "path": [
          "secret",
          "scan",
          "path"
        ],
        "label": "Scan files and directories",
        "source": [
          {
            "id": "readme",
            "kind": "help",
            "url": "https://github.com/GitGuardian/ggshield#usage",
            "revision": "2026-10-27",
            "evidence": "- in files: `ggshield secret scan path -r .`\nLines that are too long are truncated to match the size of the terminal, unless the verbose mode is used (`-v` or `--verbose`).\n"
          }
        ],
        "field": [
          {
            "id": "recursive",
            "label": "Recurse into directories",
            "type": "boolean",
            "option": [
              "-r"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "verbose",
            "label": "Verbose output",
            "type": "boolean",
            "option": [
              "--verbose",
              "-v"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "paths",
            "label": "Files or directories",
            "type": "path",
            "position": 0,
            "multiple": true,
            "path": {
              "kind": "any",
              "role": "input"
            },
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "scan-dir",
            "label": "Scan a directory recursively",
            "set": {
              "recursive": [
                true
              ]
            },
            "fields": [
              "paths",
              "recursive",
              "verbose"
            ],
            "required": [
              "paths"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "paths",
              "recursive",
              "verbose"
            ]
          }
        ]
      }
    ]
  }
}
