jesseduffield/lazygit · error
git.diffRenderers: 'args' cannot be used with diff renderer
Error message
git.diffRenderers: 'args' cannot be used with diff renderer type 'stdinFilter'.
What it means
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.
Source
Thrown at pkg/config/user_config_validation.go:121
}
firstWidth := utils.StringWidth(spinner.Frames[0])
if lo.SomeBy(spinner.Frames, func(frame string) bool {
return utils.StringWidth(frame) != firstWidth
}) {
return errors.New("All gui.spinner.frames entries must have the same width.")
}
return nil
}
func validateDiffRenderers(diffRenderers []DiffRendererConfig) error {
for _, diffRenderer := range diffRenderers {
switch diffRenderer.Type {
case "stdinFilter", "":
if diffRenderer.Command == "" {
return errors.New("git.diffRenderers: 'command' must be specified for diff renderer type 'stdinFilter'.")
}
if len(diffRenderer.Args) > 0 {
return errors.New("git.diffRenderers: 'args' cannot be used with diff renderer type 'stdinFilter'.")
}
case "extDiff":
if len(diffRenderer.Args) > 0 {
return errors.New("git.diffRenderers: 'args' cannot be used with diff renderer type 'extDiff'.")
}
case "rawGit":
if diffRenderer.Command != "" {
return errors.New("git.diffRenderers: 'command' cannot be used with diff renderer type 'rawGit'.")
}
default:
return fmt.Errorf("git.diffRenderers: unknown type '%s'. Allowed values: stdinFilter, extDiff, rawGit", diffRenderer.Type)
}
}
return nil
}
func validateEnum(name string, value string, allowedValues []string) error {
if slices.Contains(allowedValues, value) {View on GitHub (pinned to c477a2959b)
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
Example fix
# before
git:
diffRenderers:
- type: stdinFilter
command: delta
args: ['--side-by-side']
# after
git:
diffRenderers:
- type: stdinFilter
command: delta --side-by-side Defensive patterns
Strategy: validation
Validate before calling
func stdinFilterHasNoArgs(e DiffRendererConfig) bool {
return (e.Type == "stdinFilter" || e.Type == "") && len(e.Args) == 0
} Prevention
- 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
When it happens
Trigger: 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'].
Common situations: Users porting an external diff tool config where args were separate; assuming lazygit passes args through to the filter like git's extDiff does.
Related errors
- git.diffRenderers: 'command' must be specified for diff rend
- git.diffRenderers: 'args' cannot be used with diff renderer
- git.diffRenderers: 'command' cannot be used with diff render
- gui.sidePanels: a side panel must have at least one tab.
- gui.sidePanels must not be empty.
AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15).
Data as JSON: /api/errors/9815cb309fc46562.
Report an issue: GitHub.