diff --git a/plugins/git4idea/resources/intellij.vcs.git.xml b/plugins/git4idea/resources/intellij.vcs.git.xml
index 4d474b00cc64..ea60d762a486 100644
--- a/plugins/git4idea/resources/intellij.vcs.git.xml
+++ b/plugins/git4idea/resources/intellij.vcs.git.xml
@@ -520,6 +520,8 @@
+
+
diff --git a/plugins/git4idea/resources/messages/GitBundle.properties b/plugins/git4idea/resources/messages/GitBundle.properties
index 4fdfa9f9be5e..06dbc3f8e01e 100644
--- a/plugins/git4idea/resources/messages/GitBundle.properties
+++ b/plugins/git4idea/resources/messages/GitBundle.properties
@@ -768,6 +768,8 @@ pgp.pinentry.configuration.proposal.title=GPG agent configuration
pgp.pinentry.configuration.proposal.message=Configure GPG Agent to support own pinentry
pgp.pinentry.configuration.proposal.configure=Configure
+action.gpg.agent.configuration.text=Configure GPG Agent
+
gpg.pinentry.title=Unlock GPG Private Key
gpg.pinentry.default.description=Please enter the passphrase to unlock the GPG private key:
diff --git a/plugins/git4idea/src/git4idea/commit/signing/GpgAgentConfigurationAction.kt b/plugins/git4idea/src/git4idea/commit/signing/GpgAgentConfigurationAction.kt
new file mode 100644
index 000000000000..75dcfa17e370
--- /dev/null
+++ b/plugins/git4idea/src/git4idea/commit/signing/GpgAgentConfigurationAction.kt
@@ -0,0 +1,24 @@
+// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package git4idea.commit.signing
+
+import com.intellij.openapi.actionSystem.ActionUpdateThread
+import com.intellij.openapi.actionSystem.AnActionEvent
+import com.intellij.openapi.components.service
+import com.intellij.openapi.project.DumbAwareAction
+import git4idea.config.GitExecutableManager
+
+internal class GpgAgentConfigurationAction : DumbAwareAction() {
+
+ override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT
+
+ override fun update(e: AnActionEvent) {
+ val project = e.project
+ e.presentation.isEnabledAndVisible = project != null
+ && GpgAgentConfigurator.isEnabled(project, GitExecutableManager.getInstance().getExecutable(project))
+ && !project.service().isConfigured(project)
+ }
+
+ override fun actionPerformed(e: AnActionEvent) {
+ e.project?.service()?.configure()
+ }
+}