{"record":{"id":"400374c1b1df8584","repo":"golangci/golangci-lint","slug":"can-t-load-config-w-400374","errorCode":null,"errorMessage":"can't load config: %w","messagePattern":"can't load config: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/commands/fmt.go","lineNumber":87,"sourceCode":"\tsetupFormattersFlagSet(c.viper, fs)\n\n\tfs.BoolVarP(&c.opts.diff, \"diff\", \"d\", false, color.GreenString(\"Display diffs instead of rewriting files\"))\n\tfs.BoolVar(&c.opts.diffColored, \"diff-colored\", false, color.GreenString(\"Display diffs instead of rewriting files (with colors)\"))\n\tfs.BoolVar(&c.opts.stdin, \"stdin\", false, color.GreenString(\"Use standard input for piping source files\"))\n\n\tc.cmd = fmtCmd\n\n\treturn c\n}\n\nfunc (c *fmtCommand) persistentPreRunE(cmd *cobra.Command, args []string) error {\n\tc.log.Infof(\"%s\", c.buildInfo.String())\n\n\tloader := config.NewFormattersLoader(c.log.Child(logutils.DebugKeyConfigReader), c.viper, cmd.Flags(), c.opts.LoaderOptions, c.cfg, args)\n\n\terr := loader.Load(config.LoadOptions{CheckDeprecation: true, Validation: true})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"can't load config: %w\", err)\n\t}\n\n\treturn nil\n}\n\nfunc (c *fmtCommand) preRunE(_ *cobra.Command, _ []string) error {\n\tif c.cfg.GetConfigDir() != \"\" && c.cfg.Version != \"2\" {\n\t\treturn fmt.Errorf(\"invalid version of the configuration: %q\", c.cfg.Version)\n\t}\n\n\tmetaFormatter, err := goformatters.NewMetaFormatter(c.log, &c.cfg.Formatters, &c.cfg.Run)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create meta-formatter: %w\", err)\n\t}\n\n\tmatcher := processors.NewGeneratedFileMatcher(c.cfg.Formatters.Exclusions.Generated)\n\n\topts, err := goformat.NewRunnerOptions(c.cfg, c.opts.diff, c.opts.diffColored, c.opts.stdin)","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/golangci/golangci-lint/blob/ed7a235d2d771152056fdc142a9855567c5796a9/pkg/commands/fmt.go#L69-L105","documentation":"In the `fmt` command's persistentPreRunE, config.NewFormattersLoader().Load() with deprecation checks and validation enabled failed. The formatter configuration (from .golangci.yml / flags) could not be loaded, parsed, or validated, so fmt aborts before doing anything.","triggerScenarios":"Running `golangci-lint fmt` with a config file containing unknown keys, deprecated settings (CheckDeprecation:true), YAML syntax errors, or values failing validation (Validation:true).","commonSituations":"Malformed YAML; using linter-oriented keys that are invalid for formatters config; leftover deprecated options after upgrading golangci-lint; wrong --config path; schema violations like wrong types in `formatters:` section.","solutions":["Read the wrapped cause: it names the exact config key or parse error; fix that entry in .golangci.yml.","Run `golangci-lint config verify` to validate the config file against the JSON schema.","Remove or replace deprecated options flagged by the deprecation check.","Ensure the correct config file is being picked up (check --config flag and search paths)."],"exampleFix":"// before (.golangci.yml)\nformatters:\n  gofmt:\n    enble: true   # misspelled key\n// after\nformatters:\n  gofmt:\n    enable: true","handlingStrategy":"validation","validationCode":"// validate config before running fmt\nout, err := exec.Command(\"golangci-lint\", \"config\", \"verify\").CombinedOutput()\nif err != nil {\n  return fmt.Errorf(\"invalid golangci config: %s\", out)\n}","typeGuard":null,"tryCatchPattern":"err := fmtCmd.Run()\nif err != nil {\n  var cfgErr *ConfigError // or match on the wrapped cause\n  if errors.As(err, &cfgErr) {\n    log.Fatalf(\"fix .golangci.yml: %v\", errors.Unwrap(err))\n  }\n  return err\n}","preventionTips":["Run `golangci-lint config verify` in CI before formatting/linting.","Keep the config schema-current after each golangci-lint upgrade; read deprecation notes.","Specify --config explicitly to avoid loading an unintended file.","Use a YAML linter/editor schema (JSON schema for golangci config) to catch typos."],"tags":["golangci-lint","config","validation"],"backgroundTag":"config-load-failed","analyzedSha":"ed7a235d2d771152056fdc142a9855567c5796a9","analyzedAt":"2026-09-02T18:47:33.865Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}