diff --git a/__tests__/restore.test.ts b/__tests__/restore.test.ts
index 11a4c32..69002d2 100644
--- a/__tests__/restore.test.ts
+++ b/__tests__/restore.test.ts
@@ -214,7 +214,7 @@ test("Fail restore when fail on cache miss is enabled and primary key not found"
         path: path,
         key,
         restoreKeys: [restoreKey],
-        failOnCacheMiss: "true"
+        failOnCacheMiss: true
     });
 
     const failedMock = jest.spyOn(core, "setFailed");
@@ -229,7 +229,13 @@ test("Fail restore when fail on cache miss is enabled and primary key not found"
     await run();
 
     expect(restoreCacheMock).toHaveBeenCalledTimes(1);
-    expect(restoreCacheMock).toHaveBeenCalledWith([path], key, [restoreKey]);
+    expect(restoreCacheMock).toHaveBeenCalledWith(
+        [path],
+        key,
+        [restoreKey],
+        {},
+        false
+    );
 
     expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
     expect(setCacheHitOutputMock).toHaveBeenCalledTimes(0);
@@ -248,7 +254,7 @@ test("Fail restore when fail on cache miss is enabled and primary key doesn't ma
         path: path,
         key,
         restoreKeys: [restoreKey],
-        failOnCacheMiss: "true"
+        failOnCacheMiss: true
     });
 
     const failedMock = jest.spyOn(core, "setFailed");
@@ -263,7 +269,13 @@ test("Fail restore when fail on cache miss is enabled and primary key doesn't ma
     await run();
 
     expect(restoreCacheMock).toHaveBeenCalledTimes(1);
-    expect(restoreCacheMock).toHaveBeenCalledWith([path], key, [restoreKey]);
+    expect(restoreCacheMock).toHaveBeenCalledWith(
+        [path],
+        key,
+        [restoreKey],
+        {},
+        false
+    );
 
     expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
     expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
diff --git a/action.yml b/action.yml
index 9eb3857..73e3060 100644
--- a/action.yml
+++ b/action.yml
@@ -11,10 +11,6 @@ inputs:
   restore-keys:
     description: 'An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case.'
     required: false
-  fail-on-cache-miss:
-    description: 'Fail the workflow if the cache is not found for the primary key'
-    required: false
-    default: "false"
   upload-chunk-size:
     description: 'The chunk size used to split up large files during upload, in bytes'
     required: false
@@ -22,6 +18,10 @@ inputs:
     description: 'An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms'
     default: 'false'
     required: false
+  fail-on-cache-miss:
+    description: 'Fail the workflow if the cache is not found for the primary key'
+    default: 'false'
+    required: false
 outputs:
   cache-hit:
     description: 'A boolean value to indicate an exact match was found for the primary key'
diff --git a/dist/restore-only/index.js b/dist/restore-only/index.js
index 3a2a36d..0be5b5e 100644
--- a/dist/restore-only/index.js
+++ b/dist/restore-only/index.js
@@ -50496,9 +50496,10 @@ function restoreImpl(stateProvider) {
                 required: true
             });
             const enableCrossOsArchive = utils.getInputAsBool(constants_1.Inputs.EnableCrossOsArchive);
+            const failOnCacheMiss = utils.getInputAsBool(constants_1.Inputs.FailOnCacheMiss);
             const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, {}, enableCrossOsArchive);
             if (!cacheKey) {
-                if (core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
+                if (failOnCacheMiss) {
                     throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
                 }
                 core.info(`Cache not found for input keys: ${[
@@ -50511,7 +50512,7 @@ function restoreImpl(stateProvider) {
             stateProvider.setState(constants_1.State.CacheMatchedKey, cacheKey);
             const isExactKeyMatch = utils.isExactKeyMatch(core.getInput(constants_1.Inputs.Key, { required: true }), cacheKey);
             core.setOutput(constants_1.Outputs.CacheHit, isExactKeyMatch.toString());
-            if (!isExactKeyMatch && core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
+            if (!isExactKeyMatch && failOnCacheMiss) {
                 throw new Error(`Restored cache key doesn't match the given input key. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
             }
             core.info(`Cache restored from key: ${cacheKey}`);
diff --git a/dist/restore/index.js b/dist/restore/index.js
index 91d45ae..63342eb 100644
--- a/dist/restore/index.js
+++ b/dist/restore/index.js
@@ -50496,9 +50496,10 @@ function restoreImpl(stateProvider) {
                 required: true
             });
             const enableCrossOsArchive = utils.getInputAsBool(constants_1.Inputs.EnableCrossOsArchive);
+            const failOnCacheMiss = utils.getInputAsBool(constants_1.Inputs.FailOnCacheMiss);
             const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, {}, enableCrossOsArchive);
             if (!cacheKey) {
-                if (core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
+                if (failOnCacheMiss) {
                     throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
                 }
                 core.info(`Cache not found for input keys: ${[
@@ -50511,7 +50512,7 @@ function restoreImpl(stateProvider) {
             stateProvider.setState(constants_1.State.CacheMatchedKey, cacheKey);
             const isExactKeyMatch = utils.isExactKeyMatch(core.getInput(constants_1.Inputs.Key, { required: true }), cacheKey);
             core.setOutput(constants_1.Outputs.CacheHit, isExactKeyMatch.toString());
-            if (!isExactKeyMatch && core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
+            if (!isExactKeyMatch && failOnCacheMiss) {
                 throw new Error(`Restored cache key doesn't match the given input key. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
             }
             core.info(`Cache restored from key: ${cacheKey}`);
diff --git a/restore/action.yml b/restore/action.yml
index 1744a7f..6fa2935 100644
--- a/restore/action.yml
+++ b/restore/action.yml
@@ -17,8 +17,8 @@ inputs:
     required: false
   fail-on-cache-miss:
     description: 'Fail the workflow if the cache is not found for the primary key'
+    default: 'false'
     required: false
-    default: "false"
 outputs:
   cache-hit:
     description: 'A boolean value to indicate an exact match was found for the primary key'
diff --git a/src/restoreImpl.ts b/src/restoreImpl.ts
index 79d69f5..c851482 100644
--- a/src/restoreImpl.ts
+++ b/src/restoreImpl.ts
@@ -34,6 +34,7 @@ async function restoreImpl(
         const enableCrossOsArchive = utils.getInputAsBool(
             Inputs.EnableCrossOsArchive
         );
+        const failOnCacheMiss = utils.getInputAsBool(Inputs.FailOnCacheMiss);
 
         const cacheKey = await cache.restoreCache(
             cachePaths,
@@ -44,7 +45,7 @@ async function restoreImpl(
         );
 
         if (!cacheKey) {
-            if (core.getBooleanInput(Inputs.FailOnCacheMiss)) {
+            if (failOnCacheMiss) {
                 throw new Error(
                     `Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`
                 );
@@ -68,7 +69,7 @@ async function restoreImpl(
         );
 
         core.setOutput(Outputs.CacheHit, isExactKeyMatch.toString());
-        if (!isExactKeyMatch && core.getBooleanInput(Inputs.FailOnCacheMiss)) {
+        if (!isExactKeyMatch && failOnCacheMiss) {
             throw new Error(
                 `Restored cache key doesn't match the given input key. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`
             );
diff --git a/src/utils/testUtils.ts b/src/utils/testUtils.ts
index 7044cdb..18447c0 100644
--- a/src/utils/testUtils.ts
+++ b/src/utils/testUtils.ts
@@ -14,13 +14,12 @@ interface CacheInput {
     key: string;
     restoreKeys?: string[];
     enableCrossOsArchive?: boolean;
-    failOnCacheMiss?: string;
+    failOnCacheMiss?: boolean;
 }
 
 export function setInputs(input: CacheInput): void {
     setInput(Inputs.Path, input.path);
     setInput(Inputs.Key, input.key);
-    setInput(Inputs.FailOnCacheMiss, "false");
     input.restoreKeys &&
         setInput(Inputs.RestoreKeys, input.restoreKeys.join("\n"));
     input.enableCrossOsArchive !== undefined &&
@@ -28,15 +27,15 @@ export function setInputs(input: CacheInput): void {
             Inputs.EnableCrossOsArchive,
             input.enableCrossOsArchive.toString()
         );
-    input.failOnCacheMiss &&
-        setInput(Inputs.FailOnCacheMiss, input.failOnCacheMiss);
+    input.failOnCacheMiss !== undefined &&
+        setInput(Inputs.FailOnCacheMiss, input.failOnCacheMiss.toString());
 }
 
 export function clearInputs(): void {
     delete process.env[getInputName(Inputs.Path)];
     delete process.env[getInputName(Inputs.Key)];
     delete process.env[getInputName(Inputs.RestoreKeys)];
-    delete process.env[getInputName(Inputs.FailOnCacheMiss)];
     delete process.env[getInputName(Inputs.UploadChunkSize)];
     delete process.env[getInputName(Inputs.EnableCrossOsArchive)];
+    delete process.env[getInputName(Inputs.FailOnCacheMiss)];
 }