jesseduffield/lazygit · error
Feature not available for users using GPG. If you are using
Error message
Feature not available for users using GPG. If you are using a passphrase agent (e.g. gpg-agent) so that you don't have to type your passphrase when signing, you can enable this feature by adding git: overrideGpg: true to your lazygit config file.
What it means
Returned by LocalCommitsController.reword when Git config requires a GPG subprocess for signing (NeedsGpgSubprocessForCommit) and the target commit is not the HEAD commit. Rewording a non-HEAD commit happens inside an interactive rebase, where lazygit cannot spawn the interactive gpg signing helper, so the feature is disabled with instructions to set git.overrideGpg if a passphrase agent makes signing non-interactive.
Source
Thrown at pkg/gui/controllers/local_commits_controller.go:842
},
Tooltip: self.c.Tr.FixupDiscardMessageTooltip,
},
{
Label: self.c.Tr.FixupKeepMessage,
Keys: menuKey('c'),
OnPress: func() error {
return self.updateTodosWithFlag(todo.Fixup, []*models.Commit{commit}, "-C")
},
Tooltip: self.c.Tr.FixupKeepMessageTooltip,
},
},
})
}
func (self *LocalCommitsController) reword(commit *models.Commit) error {
commitIdx := self.context().GetSelectedLineIdx()
if self.c.Git().Config.NeedsGpgSubprocessForCommit() && !self.isHeadCommit(commitIdx) {
return errors.New(self.c.Tr.DisabledForGPG)
}
commitMessage, err := self.c.Git().Commit.GetCommitMessage(commit.Hash())
if err != nil {
return err
}
if self.c.UserConfig().Git.Commit.AutoWrapCommitMessage {
commitMessage = helpers.TryRemoveHardLineBreaks(commitMessage, self.c.UserConfig().Git.Commit.AutoWrapWidth)
}
self.c.Helpers().Commits.OpenCommitMessagePanel(
&helpers.OpenCommitMessagePanelOpts{
CommitIndex: commitIdx,
InitialMessage: commitMessage,
SummaryTitle: self.c.Tr.Actions.RewordCommit,
DescriptionTitle: self.c.Tr.CommitDescriptionTitle,
PreserveMessage: false,
OnConfirm: self.handleReword,
OnSwitchToEditor: self.switchFromCommitMessagePanelToEditor,
},View on GitHub (pinned to c477a2959b)
Solutions
- Add 'git:\n overrideGpg: true' to the lazygit config file if a passphrase agent (gpg-agent) handles signing without prompting.
- Reword only the HEAD commit, or do the interactive rebase outside lazygit (git rebase -i) where GPG can prompt.
- Disable commit signing for the session (git -c commit.gpgSign=false ...) if signing is not required.
Example fix
# before # ~/.config/lazygit/config.yml (absent) # after git: overrideGpg: true
Defensive patterns
Strategy: validation
Validate before calling
if self.c.Git().Config.NeedsGpgSubprocessForCommit() && !self.isHeadCommit(idx) {
return self.c.Confirm(/* suggest setting git.overrideGpg */) // or block
} Prevention
- Set git.overrideGpg: true when gpg-agent caches the passphrase.
- Check NeedsGpgSubprocessForCommit() before exposing non-HEAD commit-editing actions.
- Prefer rewording HEAD (amend) when GPG signing without an agent.
When it happens
Trigger: Invoking reword on any commit below HEAD while commit signing (commit.gpgSign / GPG setup) is active and NeedsGpgSubprocessForCommit() is true; isHeadCommit(commitIdx) is false.
Common situations: User has GPG signing configured globally and tries to reword an older commit to trigger an implicit interactive rebase; users with gpg-agent who could actually sign non-interactively but lack the lazygit overrideGpg setting.
Related errors
- Feature not available for users using GPG. If you are using
- Feature not available for users using GPG. If you are using
- Git command failed. Check command log for details (open with
- index outside of range of commits
- You are midway through another rebase operation. Please abor
AI-assisted analysis of jesseduffield/lazygit@c477a2959b (2026-08-15).
Data as JSON: /api/errors/ca305309edaa951b.
Report an issue: GitHub.