{"record":{"id":"d34158e885b5dc21","repo":"projectdiscovery/nuclei","slug":"could-not-find-any-templates-with-tech-tag","errorCode":null,"errorMessage":"could not find any templates with tech tag","messagePattern":"could not find any templates with tech tag","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"pkg/protocols/common/automaticscan/util.go","lineNumber":45,"sourceCode":"\t\t\treturn nil, errors.Wrap(err, \"could not get templates in directory\")\n\t\t}\n\t\tallTemplates = append(allTemplates, templates...)\n\t}\n\tallTemplates = sliceutil.Dedupe(allTemplates)\n\tif len(allTemplates) == 0 {\n\t\treturn nil, fmt.Errorf(\"%w for given input\", disk.ErrNoTemplatesFound)\n\t}\n\treturn allTemplates, nil\n}\n\n// LoadTemplatesWithTags loads and returns templates with given tags\nfunc LoadTemplatesWithTags(opts Options, templateDirs []string, tags []string, logInfo bool) ([]*templates.Template, error) {\n\tfinalTemplates, err := opts.Store.LoadTemplatesWithTags(templateDirs, tags)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(err, \"could not load templates\")\n\t}\n\tif len(finalTemplates) == 0 {\n\t\treturn nil, errors.New(\"could not find any templates with tech tag\")\n\t}\n\n\tif !opts.ExecuterOpts.Options.DisableClustering {\n\t\t// cluster and reduce requests\n\t\ttotalReqBeforeCluster := getRequestCount(finalTemplates) * int(opts.Target.Count())\n\t\tfinalTemplates, clusterCount, _ := templates.ClusterTemplates(finalTemplates, opts.ExecuterOpts)\n\t\ttotalReqAfterClustering := getRequestCount(finalTemplates) * int(opts.Target.Count())\n\t\tif totalReqAfterClustering < totalReqBeforeCluster && logInfo {\n\t\t\topts.ExecuterOpts.Logger.Info().Msgf(\"Automatic scan tech-detect: Templates clustered: %d (Reduced %d Requests)\", clusterCount, totalReqBeforeCluster-totalReqAfterClustering)\n\t\t}\n\t}\n\n\t// log template loaded if VerboseVerbose flag is set\n\tif opts.ExecuterOpts.Options.VerboseVerbose {\n\t\tfor _, tpl := range finalTemplates {\n\t\t\topts.ExecuterOpts.Logger.Print().Msgf(\"%s\\n\", templates.TemplateLogMessage(tpl.ID,\n\t\t\t\ttypes.ToString(tpl.Info.Name),\n\t\t\t\ttpl.Info.Authors.ToSlice(),","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/projectdiscovery/nuclei/blob/265b3a3dec374741614e342f813c10f8b38d2bb7/pkg/protocols/common/automaticscan/util.go#L27-L63","documentation":"Raised by LoadTemplatesWithTags in the automatic-scan (tech-detect) flow. The template store was queried for templates carrying the detected technology tags (opts.Store.LoadTemplatesWithTags) and returned an empty list, meaning no loaded template is tagged with any of the target's detected technologies. It is returned before clustering/executing anything, so the automatic scan stops for that target.","triggerScenarios":"Running an automatic scan against a host where tech-detect identifies e.g. 'packer' or a niche CMS, while the loaded template directories contain no template tagged with that technology.","commonSituations":"Pointing -templates at a small custom directory that lacks tech tags; running with -ntags/-etag filters that excluded the tagged templates; a very new/niche technology with no upstream template yet.","solutions":["Include the full nuclei-templates directory so technology-tagged templates are available","Verify the tag exists in your store: nuclei -tl lists available template tags","Check that -tags/-etag/-ntags filters are not excluding the matching templates","For niche techs, add a custom template carrying the technology as a tag"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"tags := detectedTechTags(target) // from wappalyzergo/tech-detect\navailable := opts.Store.Tags() // or `nuclei -tl` output parsed once\nfor _, t := range tags {\n    if !available[t] { log.Warnf(\"no templates tagged %s; skipping\", t) }\n}","typeGuard":null,"tryCatchPattern":"templates, err := automaticscan.LoadTemplatesWithTags(opts, dirs, tags, false)\nif err != nil && strings.Contains(err.Error(), \"could not find any templates with tech tag\") {\n    // degrade gracefully: continue scan without tech-specific templates\n}","preventionTips":["Ship the full nuclei-templates repo for automatic scans","Cache the tag list and diff detected tags against it before launching","Treat empty result as 'skip target', not fatal scan error"],"tags":["automatic-scan","tech-detect","templates","configuration"],"backgroundTag":null,"analyzedSha":"265b3a3dec374741614e342f813c10f8b38d2bb7","analyzedAt":"2026-08-15T20:05:51.855Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}