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

  1. Delete the command field from the rawGit entry
  2. If you actually wanted an external filter, change type back to stdinFilter (with command) or extDiff
  3. 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

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


AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15). Data as JSON: /api/errors/4e29525113cbf8bb. Report an issue: GitHub.