{
  "id": "amass",
  "name": "Amass",
  "homepage": "https://owasp.org/www-project-amass/",
  "description": "In-depth attack surface mapping and asset discovery.",
  "executables": [
    "amass"
  ],
  "dotfiles": {
    "paths": [],
    "secret": [
      "[configHome]/amass/config.ini",
      "[appData]/amass/config.ini",
      "%APPDATA%/amass/config.ini"
    ]
  },
  "commands": {
    "format": 1,
    "label": "Amass",
    "description": "Run amass enum for asset discovery. Data-source, wordlist-mask and resolver options are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "enum"
        ],
        "label": "Enumerate a domain",
        "description": "Discover subdomains and assets for one or more root domains.",
        "source": [
          {
            "id": "source",
            "kind": "help",
            "url": "https://github.com/owasp-amass/amass/blob/main/internal/enum/cli.go",
            "revision": "2026-10-27",
            "evidence": "-d value  Domain names separated by commas (can be used multiple times)\n-active  Attempt zone transfers and certificate name grabs\n-brute  Execute brute forcing after searches\n-w value  Path to a different wordlist file for brute forcing\n-alts  Enable generation of altered names\n-norecursive  Turn off recursive brute forcing\n-timeout int  Minutes to run without progress before terminating (Default: 30)\n-dir string  Path to the directory containing the output files\n-config string  Path to the YAML configuration file. Additional details below\n-silent  Disable all output during execution\n-v  Output status / debug / troubleshooting info\nfs.Var(args.Domains, \"d\", \"Domain names separated by commas (can be used multiple times)\")\nfs.BoolVar(&args.Options.Active, \"active\", false, \"Attempt zone transfers and certificate name grabs\")\nfs.BoolVar(&args.Options.BruteForcing, \"brute\", false, \"Execute brute forcing after searches\")\nfs.BoolVar(&args.Options.Alterations, \"alts\", false, \"Enable generation of altered names\")\nfs.BoolVar(&args.Options.NoRecursive, \"norecursive\", false, \"Turn off recursive brute forcing\")\nfs.BoolVar(&args.Options.Silent, \"silent\", false, \"Disable all output during execution\")\nfs.BoolVar(&args.Options.Verbose, \"v\", false, \"Output status / debug / troubleshooting info\")\nfs.IntVar(&args.Timeout, \"timeout\", 30, \"Minutes to run without progress before terminating (Default: 30)\")\nfs.StringVar(&args.Filepaths.Directory, \"dir\", \"\", \"Path to the directory containing the output files\")\nfs.StringVar(&args.Filepaths.ConfigFile, \"config\", \"\", \"Path to the YAML configuration file. Additional details below\")\nfs.Var(&args.Filepaths.BruteWordlist, \"w\", \"Path to a different wordlist file for brute forcing\")\n"
          }
        ],
        "field": [
          {
            "id": "domains",
            "label": "Domains",
            "description": "Comma-separated root domains.",
            "type": "string",
            "option": [
              "-d"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "active",
            "label": "Active techniques",
            "description": "Attempt zone transfers and certificate name grabs.",
            "type": "boolean",
            "option": [
              "-active"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "brute",
            "label": "Brute force subdomains",
            "type": "boolean",
            "option": [
              "-brute"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "wordlist",
            "label": "Brute-force wordlist",
            "type": "path",
            "path": {
              "kind": "file",
              "role": "input"
            },
            "option": [
              "-w"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "alts",
            "label": "Generate altered names",
            "type": "boolean",
            "option": [
              "-alts"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "norecursive",
            "label": "No recursive brute forcing",
            "type": "boolean",
            "option": [
              "-norecursive"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "timeout",
            "label": "Timeout (minutes)",
            "description": "Minutes to run without progress before terminating.",
            "type": "integer",
            "option": [
              "-timeout"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "dir",
            "label": "Output directory",
            "type": "path",
            "path": {
              "kind": "directory",
              "role": "output"
            },
            "option": [
              "-dir"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "config",
            "label": "YAML config file",
            "type": "path",
            "path": {
              "kind": "file",
              "role": "input"
            },
            "option": [
              "-config"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "silent",
            "label": "Silent",
            "type": "boolean",
            "option": [
              "-silent"
            ],
            "sources": [
              "source"
            ]
          },
          {
            "id": "verbose",
            "label": "Verbose",
            "type": "boolean",
            "option": [
              "-v"
            ],
            "sources": [
              "source"
            ]
          }
        ],
        "task": [
          {
            "id": "passive",
            "label": "Passive enumeration",
            "fields": [
              "domains",
              "dir"
            ],
            "required": [
              "domains"
            ]
          },
          {
            "id": "active_brute",
            "label": "Active with brute force",
            "fields": [
              "domains",
              "active",
              "brute",
              "wordlist",
              "dir"
            ],
            "required": [
              "domains"
            ],
            "set": {
              "active": [
                true
              ],
              "brute": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "domains",
              "active",
              "brute",
              "wordlist",
              "dir",
              "verbose"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "alts",
              "norecursive",
              "timeout",
              "config",
              "silent"
            ]
          }
        ]
      }
    ]
  }
}
