diff --git a/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java b/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java
index 16cd7d2..948215b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/download/command/CloneWithCommitMsgHook.java
@@ -16,6 +16,7 @@
 
 import com.google.gerrit.extensions.config.DownloadScheme;
 import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
@@ -23,16 +24,23 @@
 import com.googlesource.gerrit.plugins.download.scheme.HttpScheme;
 import com.googlesource.gerrit.plugins.download.scheme.SshScheme;
 
+import org.eclipse.jgit.lib.Config;
+
 public class CloneWithCommitMsgHook extends CloneCommand {
   private static final String HOOK = "hooks/commit-msg";
   private static final String TARGET = " `git rev-parse --git-dir`/";
 
+  private final String configCommand;
   private final SshScheme sshScheme;
   private final Provider<CurrentUser> userProvider;
 
   @Inject
-  CloneWithCommitMsgHook(SshScheme sshScheme,
+  CloneWithCommitMsgHook(
+      @GerritServerConfig Config config,
+      SshScheme sshScheme,
       Provider<CurrentUser> userProvider) {
+    this.configCommand =
+        config.getString("gerrit", null, "installCommitMsgHookCommand");
     this.sshScheme = sshScheme;
     this.userProvider = userProvider;
   }
@@ -45,6 +53,17 @@
     }
     String projectName = getBaseName(project);
 
+    if (configCommand != null) {
+      return new StringBuilder()
+          .append(super.getCommand(scheme, project))
+          .append(" && (cd ")
+          .append(projectName)
+          .append(" && ")
+          .append(configCommand)
+          .append(")")
+          .toString();
+    }
+
     if (scheme instanceof SshScheme) {
       return new StringBuilder()
           .append(super.getCommand(scheme, project))
