{"record":{"id":"ca305309edaa951b","repo":"jesseduffield/lazygit","slug":"feature-not-available-for-users-using-gpg-if-you-ca3053","errorCode":null,"errorMessage":"Feature not available for users using GPG.\n\nIf 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\n\ngit:\n  overrideGpg: true\n\nto your lazygit config file.","messagePattern":"Feature not available for users using GPG\\.\n\nIf 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\n\ngit:\n  overrideGpg: true\n\nto your lazygit config file\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/gui/controllers/local_commits_controller.go","lineNumber":842,"sourceCode":"\t\t\t\t},\n\t\t\t\tTooltip: self.c.Tr.FixupDiscardMessageTooltip,\n\t\t\t},\n\t\t\t{\n\t\t\t\tLabel: self.c.Tr.FixupKeepMessage,\n\t\t\t\tKeys:  menuKey('c'),\n\t\t\t\tOnPress: func() error {\n\t\t\t\t\treturn self.updateTodosWithFlag(todo.Fixup, []*models.Commit{commit}, \"-C\")\n\t\t\t\t},\n\t\t\t\tTooltip: self.c.Tr.FixupKeepMessageTooltip,\n\t\t\t},\n\t\t},\n\t})\n}\n\nfunc (self *LocalCommitsController) reword(commit *models.Commit) error {\n\tcommitIdx := self.context().GetSelectedLineIdx()\n\tif self.c.Git().Config.NeedsGpgSubprocessForCommit() && !self.isHeadCommit(commitIdx) {\n\t\treturn errors.New(self.c.Tr.DisabledForGPG)\n\t}\n\tcommitMessage, err := self.c.Git().Commit.GetCommitMessage(commit.Hash())\n\tif err != nil {\n\t\treturn err\n\t}\n\tif self.c.UserConfig().Git.Commit.AutoWrapCommitMessage {\n\t\tcommitMessage = helpers.TryRemoveHardLineBreaks(commitMessage, self.c.UserConfig().Git.Commit.AutoWrapWidth)\n\t}\n\tself.c.Helpers().Commits.OpenCommitMessagePanel(\n\t\t&helpers.OpenCommitMessagePanelOpts{\n\t\t\tCommitIndex:      commitIdx,\n\t\t\tInitialMessage:   commitMessage,\n\t\t\tSummaryTitle:     self.c.Tr.Actions.RewordCommit,\n\t\t\tDescriptionTitle: self.c.Tr.CommitDescriptionTitle,\n\t\t\tPreserveMessage:  false,\n\t\t\tOnConfirm:        self.handleReword,\n\t\t\tOnSwitchToEditor: self.switchFromCommitMessagePanelToEditor,\n\t\t},","sourceCodeStart":824,"sourceCodeEnd":860,"githubUrl":"https://github.com/jesseduffield/lazygit/blob/c477a2959b229fbf3284be0d4d2904ab61ec3c94/pkg/gui/controllers/local_commits_controller.go#L824-L860","documentation":"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.","triggerScenarios":"Invoking reword on any commit below HEAD while commit signing (commit.gpgSign / GPG setup) is active and NeedsGpgSubprocessForCommit() is true; isHeadCommit(commitIdx) is false.","commonSituations":"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.","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."],"exampleFix":"# before\n# ~/.config/lazygit/config.yml (absent)\n\n# after\ngit:\n  overrideGpg: true","handlingStrategy":"validation","validationCode":"if self.c.Git().Config.NeedsGpgSubprocessForCommit() && !self.isHeadCommit(idx) {\n    return self.c.Confirm(/* suggest setting git.overrideGpg */) // or block\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["gpg","signing","rebase","config"],"backgroundTag":null,"analyzedSha":"c477a2959b229fbf3284be0d4d2904ab61ec3c94","analyzedAt":"2026-08-15T08:34:32.451Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}