jesseduffield/lazygit · error
git.diffRenderers: 'command' cannot be used with diff render
Error message
git.diffRenderers: 'command' cannot be used with diff renderer type 'rawGit'.
What it means
Validation error from validateDiffRenderers (user_config_validation.go:129). Type 'rawGit' means 'render diffs using git itself with lazygit's own theming' — no external program is involved, so a 'command' field is contradictory and rejected at config load.
Source
Thrown at pkg/config/user_config_validation.go:129
}
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) {
return nil
}
allowedValuesStr := strings.Join(allowedValues, ", ")
return fmt.Errorf("Unexpected value '%s' for '%s'. Allowed values: %s", value, name, allowedValuesStr)
}
func validateKeybindingsRecurse(path string, node any) error {
value := reflect.ValueOf(node)View on GitHub (pinned to c477a2959b)
Solutions
- Delete the command field from the rawGit entry
- If you actually wanted an external filter, change type back to stdinFilter (with command) or extDiff
- Restart lazygit to confirm validation passes
Example fix
# before
git:
diffRenderers:
- type: rawGit
command: delta
# after
git:
diffRenderers:
- type: rawGit Defensive patterns
Strategy: validation
Validate before calling
func rawGitHasNoCommand(e DiffRendererConfig) bool {
return e.Type == "rawGit" && e.Command == ""
} Prevention
- rawGit means 'git's own diff with lazygit theming' — no command belongs there
- When switching renderer types, delete fields the new type forbids
- Diff the config change before saving when toggling types
When it happens
Trigger: A git.diffRenderers entry with type rawGit that also sets command, e.g. type: rawGit, command: delta.
Common situations: Switching a renderer from stdinFilter to rawGit and forgetting to delete the command field; config merge leaving a stale command behind.
Related errors
- git.diffRenderers: 'command' must be specified for diff rend
- git.diffRenderers: 'args' cannot be used with diff renderer
- git.diffRenderers: 'args' cannot be used with diff renderer
- 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/4e29525113cbf8bb.
Report an issue: GitHub.