diff --git a/RELEASES.md b/RELEASES.md
index e81cb3e..4674c44 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -1,77 +1,50 @@
 # Releases
 
-### 3.0.0
+### 4.0.1
 
-- Updated minimum runner version support from node 12 -> node 16
+- Updated `isGhes` check
 
-### 3.0.1
+### 4.0.0
 
-- Added support for caching from GHES 3.5.
-- Fixed download issue for files > 2GB during restore.
+- Updated minimum runner version support from node 12 -> node 20
 
-### 3.0.2
+### 3.3.3
 
-- Added support for dynamic cache size cap on GHES.
+- Updates @actions/cache to v3.2.3 to fix accidental mutated path arguments to `getCacheVersion` [actions/toolkit#1378](https://github.com/actions/toolkit/pull/1378)
+- Additional audit fixes of npm package(s)
 
-### 3.0.3
+### 3.3.2
 
-- Fixed avoiding empty cache save when no files are available for caching. ([issue](https://github.com/actions/cache/issues/624))
+- Fixes bug with Azure SDK causing blob downloads to get stuck.
 
-### 3.0.4
+### 3.3.1
 
-- Fixed tar creation error while trying to create tar with path as `~/` home folder on `ubuntu-latest`. ([issue](https://github.com/actions/cache/issues/689))
+- Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck.
 
-### 3.0.5
+### 3.3.0
 
-- Removed error handling by consuming actions/cache 3.0 toolkit, Now cache server error handling will be done by toolkit. ([PR](https://github.com/actions/cache/pull/834))
+- Added option to lookup cache without downloading it.
 
-### 3.0.6
+### 3.2.6
 
-- Fixed [#809](https://github.com/actions/cache/issues/809) - zstd -d: no such file or directory error
-- Fixed [#833](https://github.com/actions/cache/issues/833) - cache doesn't work with github workspace directory
+- Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners.
 
-### 3.0.7
+### 3.2.5
 
-- Fixed [#810](https://github.com/actions/cache/issues/810) - download stuck issue. A new timeout is introduced in the download process to abort the download if it gets stuck and doesn't finish within an hour.
+- Added fix to prevent from setting MYSYS environment variable globally.
 
-### 3.0.8
+### 3.2.4
 
-- Fix zstd not working for windows on gnu tar in issues [#888](https://github.com/actions/cache/issues/888) and [#891](https://github.com/actions/cache/issues/891).
-- Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable `SEGMENT_DOWNLOAD_TIMEOUT_MINS`. Default is 60 minutes.
+- Added option to fail job on cache miss.
 
-### 3.0.9
+### 3.2.3
 
-- Enhanced the warning message for cache unavailablity in case of GHES.
+- Support cross os caching on Windows as an opt-in feature.
+- Fix issue with symlink restoration on Windows for cross-os caches.
 
-### 3.0.10
+### 3.2.2
 
-- Fix a bug with sorting inputs.
-- Update definition for restore-keys in README.md
-
-### 3.0.11
-
-- Update toolkit version to 3.0.5 to include `@actions/core@^1.10.0`
-- Update `@actions/cache` to use updated `saveState` and `setOutput` functions from `@actions/core@^1.10.0`
-
-### 3.1.0-beta.1
-
-- Update `@actions/cache` on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. ([issue](https://github.com/actions/cache/issues/984))
-
-### 3.1.0-beta.2
-
-- Added support for fallback to gzip to restore old caches on windows.
-
-### 3.1.0-beta.3
-
-- Bug fixes for bsdtar fallback if gnutar not available and gzip fallback if cache saved using old cache action on windows.
-
-### 3.2.0-beta.1
-
-- Added two new actions - [restore](restore/action.yml) and [save](save/action.yml) for granular control on cache.
-
-### 3.2.0
-
-- Released the two new actions - [restore](restore/action.yml) and [save](save/action.yml) for granular control on cache
+- Reverted the changes made in 3.2.1 to use gnu tar and zstd by default on windows.
 
 ### 3.2.1
 
@@ -79,44 +52,75 @@
 - Added support for fallback to gzip to restore old caches on windows.
 - Added logs for cache version in case of a cache miss.
 
-### 3.2.2
+### 3.2.0
 
-- Reverted the changes made in 3.2.1 to use gnu tar and zstd by default on windows.
+- Released the two new actions - [restore](restore/action.yml) and [save](save/action.yml) for granular control on cache
 
-### 3.2.3
+### 3.2.0-beta.1
 
-- Support cross os caching on Windows as an opt-in feature.
-- Fix issue with symlink restoration on Windows for cross-os caches.
+- Added two new actions - [restore](restore/action.yml) and [save](save/action.yml) for granular control on cache.
 
-### 3.2.4
+### 3.1.0-beta.3
 
-- Added option to fail job on cache miss.
+- Bug fixes for bsdtar fallback if gnutar not available and gzip fallback if cache saved using old cache action on windows.
 
-### 3.2.5
+### 3.1.0-beta.2
 
-- Added fix to prevent from setting MYSYS environment variable globally.
+- Added support for fallback to gzip to restore old caches on windows.
 
-### 3.2.6
+### 3.1.0-beta.1
 
-- Fix zstd not being used after zstd version upgrade to 1.5.4 on hosted runners.
+- Update `@actions/cache` on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. ([issue](https://github.com/actions/cache/issues/984))
 
-### 3.3.0
+### 3.0.11
 
-- Added option to lookup cache without downloading it.
+- Update toolkit version to 3.0.5 to include `@actions/core@^1.10.0`
+- Update `@actions/cache` to use updated `saveState` and `setOutput` functions from `@actions/core@^1.10.0`
 
-### 3.3.1
+### 3.0.10
 
-- Reduced segment size to 128MB and segment timeout to 10 minutes to fail fast in case the cache download is stuck.
+- Fix a bug with sorting inputs.
+- Update definition for restore-keys in README.md
 
-### 3.3.2
+### 3.0.9
 
-- Fixes bug with Azure SDK causing blob downloads to get stuck.
+- Enhanced the warning message for cache unavailablity in case of GHES.
 
-### 3.3.3
+### 3.0.8
 
-- Updates @actions/cache to v3.2.3 to fix accidental mutated path arguments to `getCacheVersion` [actions/toolkit#1378](https://github.com/actions/toolkit/pull/1378)
-- Additional audit fixes of npm package(s)
+- Fix zstd not working for windows on gnu tar in issues [#888](https://github.com/actions/cache/issues/888) and [#891](https://github.com/actions/cache/issues/891).
+- Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable `SEGMENT_DOWNLOAD_TIMEOUT_MINS`. Default is 60 minutes.
 
-### 4.0.0
+### 3.0.7
 
-- Updated minimum runner version support from node 12 -> node 20
+- Fixed [#810](https://github.com/actions/cache/issues/810) - download stuck issue. A new timeout is introduced in the download process to abort the download if it gets stuck and doesn't finish within an hour.
+
+### 3.0.6
+
+- Fixed [#809](https://github.com/actions/cache/issues/809) - zstd -d: no such file or directory error
+- Fixed [#833](https://github.com/actions/cache/issues/833) - cache doesn't work with github workspace directory
+
+### 3.0.5
+
+- Removed error handling by consuming actions/cache 3.0 toolkit, Now cache server error handling will be done by toolkit. ([PR](https://github.com/actions/cache/pull/834))
+
+### 3.0.4
+
+- Fixed tar creation error while trying to create tar with path as `~/` home folder on `ubuntu-latest`. ([issue](https://github.com/actions/cache/issues/689))
+
+### 3.0.3
+
+- Fixed avoiding empty cache save when no files are available for caching. ([issue](https://github.com/actions/cache/issues/624))
+
+### 3.0.2
+
+- Added support for dynamic cache size cap on GHES.
+
+### 3.0.1
+
+- Added support for caching from GHES 3.5.
+- Fixed download issue for files > 2GB during restore.
+
+### 3.0.0
+
+- Updated minimum runner version support from node 12 -> node 16
diff --git a/dist/restore-only/index.js b/dist/restore-only/index.js
index d1695d2..e8148ee 100644
--- a/dist/restore-only/index.js
+++ b/dist/restore-only/index.js
@@ -707,7 +707,10 @@ function assertDefined(name, value) {
 exports.assertDefined = assertDefined;
 function isGhes() {
     const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
-    return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
+    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
+    const isGitHubHost = hostname === 'GITHUB.COM';
+    const isGheHost = hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST');
+    return !isGitHubHost && !isGheHost;
 }
 exports.isGhes = isGhes;
 //# sourceMappingURL=cacheUtils.js.map
diff --git a/dist/restore/index.js b/dist/restore/index.js
index f32c494..9995844 100644
--- a/dist/restore/index.js
+++ b/dist/restore/index.js
@@ -707,7 +707,10 @@ function assertDefined(name, value) {
 exports.assertDefined = assertDefined;
 function isGhes() {
     const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
-    return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
+    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
+    const isGitHubHost = hostname === 'GITHUB.COM';
+    const isGheHost = hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST');
+    return !isGitHubHost && !isGheHost;
 }
 exports.isGhes = isGhes;
 //# sourceMappingURL=cacheUtils.js.map
diff --git a/dist/save-only/index.js b/dist/save-only/index.js
index e590b47..f542b2c 100644
--- a/dist/save-only/index.js
+++ b/dist/save-only/index.js
@@ -707,7 +707,10 @@ function assertDefined(name, value) {
 exports.assertDefined = assertDefined;
 function isGhes() {
     const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
-    return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
+    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
+    const isGitHubHost = hostname === 'GITHUB.COM';
+    const isGheHost = hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST');
+    return !isGitHubHost && !isGheHost;
 }
 exports.isGhes = isGhes;
 //# sourceMappingURL=cacheUtils.js.map
diff --git a/dist/save/index.js b/dist/save/index.js
index c27f5f8..f137655 100644
--- a/dist/save/index.js
+++ b/dist/save/index.js
@@ -707,7 +707,10 @@ function assertDefined(name, value) {
 exports.assertDefined = assertDefined;
 function isGhes() {
     const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
-    return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
+    const hostname = ghUrl.hostname.trimEnd().toUpperCase();
+    const isGitHubHost = hostname === 'GITHUB.COM';
+    const isGheHost = hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST');
+    return !isGitHubHost && !isGheHost;
 }
 exports.isGhes = isGhes;
 //# sourceMappingURL=cacheUtils.js.map
diff --git a/package-lock.json b/package-lock.json
index 3a3b441..0780399 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "cache",
-  "version": "4.0.0",
+  "version": "4.0.1",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "cache",
-      "version": "4.0.0",
+      "version": "4.0.1",
       "license": "MIT",
       "dependencies": {
         "@actions/cache": "^3.2.3",
@@ -36,9 +36,9 @@
       }
     },
     "node_modules/@actions/cache": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.3.tgz",
-      "integrity": "sha512-m8KvmcD+JxSLOfNUXuBF2jL0Lp+co/Fhbf0NTt0M9lz61WnXRdqpIGrOvTRZmKIl+7HaHil6kGE3fkEfrKQCQA==",
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.4.tgz",
+      "integrity": "sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==",
       "dependencies": {
         "@actions/core": "^1.10.0",
         "@actions/exec": "^1.0.1",
@@ -9533,9 +9533,9 @@
   },
   "dependencies": {
     "@actions/cache": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.3.tgz",
-      "integrity": "sha512-m8KvmcD+JxSLOfNUXuBF2jL0Lp+co/Fhbf0NTt0M9lz61WnXRdqpIGrOvTRZmKIl+7HaHil6kGE3fkEfrKQCQA==",
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-3.2.4.tgz",
+      "integrity": "sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==",
       "requires": {
         "@actions/core": "^1.10.0",
         "@actions/exec": "^1.0.1",
diff --git a/package.json b/package.json
index 2a4391e..fc29a4d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cache",
-  "version": "4.0.0",
+  "version": "4.0.1",
   "private": true,
   "description": "Cache dependencies and build outputs",
   "main": "dist/restore/index.js",