jesseduffield/lazygit · error
git.diffRenderers: 'command' must be specified for diff rend
Error message
git.diffRenderers: 'command' must be specified for diff renderer type 'stdinFilter'.
What it means
Validation error from validateDiffRenderers (user_config_validation.go:118). A diff renderer entry with type 'stdinFilter' (the default when type is empty) must specify 'command' — the external filter program that reads a git diff on stdin and writes the rendered output. Without a command there is nothing to execute, so config load fails.
Source
Thrown at pkg/config/user_config_validation.go:118
func validateSpinner(spinner SpinnerConfig) error {
if len(spinner.Frames) == 0 {
return errors.New("gui.spinner.frames must not be empty.")
}
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
}View on GitHub (pinned to c477a2959b)
Solutions
- Add the 'command' field naming the filter executable, e.g. command: delta
- Verify the executable is on PATH with 'which delta'
- If you wanted lazygit's raw git diff instead, set type: rawGit and remove command
- Check YAML indentation so command sits under the correct list item
Example fix
# before
git:
diffRenderers:
- type: stdinFilter
# after
git:
diffRenderers:
- type: stdinFilter
command: delta Defensive patterns
Strategy: validation
Validate before calling
function diffRendererEntryValid(e DiffRendererEntry) string | null {
if (e.type === "stdinFilter" || e.type === "") && !e.command) return "stdinFilter needs command";
return null;
} Prevention
- Always pair type: stdinFilter with a command
- Confirm the filter binary exists on PATH ('which delta')
- Watch YAML indentation: command must be a sibling of type under the same item
When it happens
Trigger: Adding a git.diffRenderers entry with type stdinFilter (or omitting type) and no command field, e.g. 'diffRenderers: [{type: stdinFilter}]'. Validation runs at startup before the GUI appears.
Common situations: Configuring delta/difftastic as a stdin filter and forgetting the command; YAML indentation putting command at the wrong nesting level so the field is never set.
Related errors
- gui.sidePanels: a side panel must have at least one tab.
- gui.sidePanels must not be empty.
- gui.spinner.frames must not be empty.
- git.diffRenderers: 'args' cannot be used with diff renderer
- git.diffRenderers: 'args' cannot be used with diff renderer
AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15).
Data as JSON: /api/errors/adf4eb589bacf2ec.
Report an issue: GitHub.