diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d78e96c..a1c38eb 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -323,6 +323,7 @@ jobs:
           - master
           - refs/tags/v0.5.1
           - refs/pull/648/head
+          - 67bd6f4dc82a9cd96f34133dab3f6f7af803bb14
     steps:
       -
         name: Checkout
diff --git a/__tests__/buildx.test.ts b/__tests__/buildx.test.ts
index fcc99b6..d689879 100644
--- a/__tests__/buildx.test.ts
+++ b/__tests__/buildx.test.ts
@@ -93,12 +93,17 @@ describe('inspect', () => {
 });
 
 describe('build', () => {
-  it.skip('valid', async () => {
-    const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'setup-buildx-'));
+  const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'setup-buildx-'));
+  it.skip('builds refs/pull/648/head', async () => {
     const buildxBin = await buildx.build('https://github.com/docker/buildx.git#refs/pull/648/head', tmpDir);
     console.log(buildxBin);
     expect(fs.existsSync(buildxBin)).toBe(true);
   }, 100000);
+  it.skip('builds 67bd6f4dc82a9cd96f34133dab3f6f7af803bb14', async () => {
+    const buildxBin = await buildx.build('https://github.com/docker/buildx.git#67bd6f4dc82a9cd96f34133dab3f6f7af803bb14', tmpDir);
+    console.log(buildxBin);
+    expect(fs.existsSync(buildxBin)).toBe(true);
+  }, 100000);
 });
 
 describe('install', () => {
diff --git a/dist/index.js b/dist/index.js
index 08c3e21..62bcaed 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -151,10 +151,16 @@ function build(inputBuildRef, dockerConfigHome) {
         if (ref.length == 0) {
             ref = 'master';
         }
-        const sha = yield git.getRemoteSha(repo, ref);
-        core.debug(`Remote ref ${sha} found`);
+        let vspec;
+        if (ref.match(/^[0-9a-fA-F]{40}$/)) {
+            vspec = ref;
+        }
+        else {
+            vspec = yield git.getRemoteSha(repo, ref);
+        }
+        core.debug(`Tool version spec ${vspec}`);
         let toolPath;
-        toolPath = tc.find('buildx', sha);
+        toolPath = tc.find('buildx', vspec);
         if (!toolPath) {
             const outFolder = path.join(context.tmpDir(), 'out').split(path.sep).join(path.posix.sep);
             toolPath = yield exec
@@ -165,7 +171,7 @@ function build(inputBuildRef, dockerConfigHome) {
                 if (res.stderr.length > 0 && res.exitCode != 0) {
                     core.warning(res.stderr.trim());
                 }
-                return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', sha);
+                return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', vspec);
             });
         }
         return setPlugin(toolPath, dockerConfigHome);
diff --git a/src/buildx.ts b/src/buildx.ts
index 97bb475..c2518ed 100644
--- a/src/buildx.ts
+++ b/src/buildx.ts
@@ -117,11 +117,16 @@ export async function build(inputBuildRef: string, dockerConfigHome: string): Pr
     ref = 'master';
   }
 
-  const sha = await git.getRemoteSha(repo, ref);
-  core.debug(`Remote ref ${sha} found`);
+  let vspec: string;
+  if (ref.match(/^[0-9a-fA-F]{40}$/)) {
+    vspec = ref;
+  } else {
+    vspec = await git.getRemoteSha(repo, ref);
+  }
+  core.debug(`Tool version spec ${vspec}`);
 
   let toolPath: string;
-  toolPath = tc.find('buildx', sha);
+  toolPath = tc.find('buildx', vspec);
   if (!toolPath) {
     const outFolder = path.join(context.tmpDir(), 'out').split(path.sep).join(path.posix.sep);
     toolPath = await exec
@@ -132,7 +137,7 @@ export async function build(inputBuildRef: string, dockerConfigHome: string): Pr
         if (res.stderr.length > 0 && res.exitCode != 0) {
           core.warning(res.stderr.trim());
         }
-        return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', sha);
+        return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', vspec);
       });
   }