jesseduffield/lazygit · error
git.diffRenderers: unknown type '%s'. Allowed values: stdinF
Error message
git.diffRenderers: unknown type '%s'. Allowed values: stdinFilter, extDiff, rawGit
What it means
Raised by the diff-renderer validation in pkg/config/user_config_validation.go. Each entry in git.diffRenderers must declare one of the exact types 'stdinFilter', 'extDiff' or 'rawGit' (enforced by a switch whose default branch throws); each type also has field constraints ('args' forbidden for stdinFilter/extDiff, 'command' forbidden for rawGit).
Source
Thrown at pkg/config/user_config_validation.go:132
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)
if value.Kind() == reflect.Struct {
for _, field := range reflect.VisibleFields(reflect.TypeOf(node)) {
var newPath stringView on GitHub (pinned to c477a2959b)
Solutions
- Set type to exactly one of: stdinFilter, extDiff, rawGit.
- Also satisfy the per-type constraints: no 'args' with stdinFilter/extDiff, no 'command' with rawGit.
- Trim whitespace and check casing — the switch is case-sensitive.
- Restart lazygit to re-run validation.
Example fix
# before
git:
diffRenderers:
- type: externalDiff
command: delta
# after
git:
diffRenderers:
- type: extDiff
command: delta Defensive patterns
Strategy: validation
Validate before calling
allowed := map[string]bool{"stdinFilter": true, "extDiff": true, "rawGit": true}
for _, dr := range cfg.Git.DiffRenderers {
if !allowed[dr.Type] {
return fmt.Errorf("bad diff renderer type %q", dr.Type)
}
} Prevention
- Use the exact literals stdinFilter/extDiff/rawGit; the switch is case- and whitespace-sensitive.
- Respect per-type constraints: no args with stdinFilter/extDiff, no command with rawGit.
When it happens
Trigger: Setting git.diffRenderers[i].type to anything other than stdinFilter/extDiff/rawGit — a typo like 'extDiff ' with trailing space, 'external', or a type from older docs — during config validation at startup.
Common situations: Migrating from the older git.paging.externalDiffPage config to the diffRenderers schema and guessing the type name; trailing whitespace or casing mistakes; configs written against a different lazygit version.
Related errors
- Updates rejected and you have disabled force pushing
- Your branch has diverged from the remote branch and you've d
- Unexpected value '%s' for '%s'. Allowed values: %s
- Git version must be at least %s. Please upgrade your git ver
- Lazygit does not support bare repos.
AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15).
Data as JSON: /api/errors/1e308a5b27972bed.
Report an issue: GitHub.