{"record":{"id":"9815cb309fc46562","repo":"jesseduffield/lazygit","slug":"git-diffrenderers-args-cannot-be-used-with-diff","errorCode":null,"errorMessage":"git.diffRenderers: 'args' cannot be used with diff renderer type 'stdinFilter'.","messagePattern":"git\\.diffRenderers: 'args' cannot be used with diff renderer type 'stdinFilter'\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/config/user_config_validation.go","lineNumber":121,"sourceCode":"\t}\n\tfirstWidth := utils.StringWidth(spinner.Frames[0])\n\tif lo.SomeBy(spinner.Frames, func(frame string) bool {\n\t\treturn utils.StringWidth(frame) != firstWidth\n\t}) {\n\t\treturn errors.New(\"All gui.spinner.frames entries must have the same width.\")\n\t}\n\treturn nil\n}\n\nfunc validateDiffRenderers(diffRenderers []DiffRendererConfig) error {\n\tfor _, diffRenderer := range diffRenderers {\n\t\tswitch diffRenderer.Type {\n\t\tcase \"stdinFilter\", \"\":\n\t\t\tif diffRenderer.Command == \"\" {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'command' must be specified for diff renderer type 'stdinFilter'.\")\n\t\t\t}\n\t\t\tif len(diffRenderer.Args) > 0 {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'args' cannot be used with diff renderer type 'stdinFilter'.\")\n\t\t\t}\n\t\tcase \"extDiff\":\n\t\t\tif len(diffRenderer.Args) > 0 {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'args' cannot be used with diff renderer type 'extDiff'.\")\n\t\t\t}\n\t\tcase \"rawGit\":\n\t\t\tif diffRenderer.Command != \"\" {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'command' cannot be used with diff renderer type 'rawGit'.\")\n\t\t\t}\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"git.diffRenderers: unknown type '%s'. Allowed values: stdinFilter, extDiff, rawGit\", diffRenderer.Type)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateEnum(name string, value string, allowedValues []string) error {\n\tif slices.Contains(allowedValues, value) {","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/jesseduffield/lazygit/blob/c477a2959b229fbf3284be0d4d2904ab61ec3c94/pkg/config/user_config_validation.go#L103-L139","documentation":"Validation error from validateDiffRenderers (user_config_validation.go:121). A 'stdinFilter' diff renderer pipes the diff on stdin and expects no extra CLI arguments; the filter program's own options belong in the command string itself (e.g. 'delta --dark'). Supplying 'args' is rejected at config load to prevent ambiguity about how args would be appended.","triggerScenarios":"A git.diffRenderers entry with type stdinFilter that sets both command and a non-empty args list, e.g. command: delta, args: ['--side-by-side'].","commonSituations":"Users porting an external diff tool config where args were separate; assuming lazygit passes args through to the filter like git's extDiff does.","solutions":["Fold the arguments into the command string: 'command: delta --side-by-side'","Or switch type to extDiff if you want command+args semantics for a whole-file external diff tool","Restart lazygit to confirm validation passes"],"exampleFix":"# before\ngit:\n  diffRenderers:\n    - type: stdinFilter\n      command: delta\n      args: ['--side-by-side']\n\n# after\ngit:\n  diffRenderers:\n    - type: stdinFilter\n      command: delta --side-by-side","handlingStrategy":"validation","validationCode":"func stdinFilterHasNoArgs(e DiffRendererConfig) bool {\n    return (e.Type == \"stdinFilter\" || e.Type == \"\") && len(e.Args) == 0\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Inline filter flags into the command string","Reserve args for tools that actually consume them (via extDiff wrappers)","Read the diffRenderers section of docs-master when porting gitconfig"],"tags":["config","validation","diff"],"backgroundTag":null,"analyzedSha":"c477a2959b229fbf3284be0d4d2904ab61ec3c94","analyzedAt":"2026-08-15T08:34:32.451Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}