diff --git a/lib/modules/datasource/github-releases/cache/cache-base.spec.ts b/lib/modules/datasource/github-releases/cache/cache-base.spec.ts
index 640fcdcc7f2b785acc53d6e804324281cc229872..b36e1ce61a544ad2bd83dbd33e360aae3ade0c2b 100644
--- a/lib/modules/datasource/github-releases/cache/cache-base.spec.ts
+++ b/lib/modules/datasource/github-releases/cache/cache-base.spec.ts
@@ -234,7 +234,7 @@ describe('modules/datasource/github-releases/cache/cache-base', () => {
     ]);
   });
 
-  it('returns cached values on server errors', async () => {
+  it('throws for http errors', async () => {
     packageCache.get.mockResolvedValueOnce({
       items: {
         v1: { version: 'v1', releaseTimestamp: t1, bar: 'aaa' },
@@ -257,4 +257,26 @@ describe('modules/datasource/github-releases/cache/cache-base', () => {
     expect(packageCache.get).toHaveBeenCalled();
     expect(packageCache.set).not.toHaveBeenCalled();
   });
+
+  it('throws for graphql errors', async () => {
+    packageCache.get.mockResolvedValueOnce({
+      items: {},
+      createdAt: t3,
+      updatedAt: t3,
+    });
+    responses = [
+      {
+        statusCode: 200,
+        headers: {},
+        body: { errors: [{ message: 'Ooops' }] },
+      },
+    ];
+    const cache = new TestCache(http, { resetDeltaMinutes: 0 });
+
+    await expect(cache.getItems({ packageName: 'foo/bar' })).rejects.toThrow(
+      'Ooops'
+    );
+    expect(packageCache.get).toHaveBeenCalled();
+    expect(packageCache.set).not.toHaveBeenCalled();
+  });
 });
diff --git a/lib/modules/datasource/github-releases/cache/cache-base.ts b/lib/modules/datasource/github-releases/cache/cache-base.ts
index 3a846a31998ee1f6c7c4914f24a2aa76fd2cd7d5..4ed5742ae273634f07e1fe89831d7c593eccbd85 100644
--- a/lib/modules/datasource/github-releases/cache/cache-base.ts
+++ b/lib/modules/datasource/github-releases/cache/cache-base.ts
@@ -203,7 +203,13 @@ export abstract class AbstractGithubDatasourceCache<
           });
           pagesRemained -= 1;
 
-          const data = graphqlRes.body.data;
+          const { data, errors } = graphqlRes.body;
+
+          const errorMessage = errors?.[0]?.message;
+          if (errorMessage) {
+            throw Error(errorMessage);
+          }
+
           if (data) {
             const {
               nodes: fetchedItems,
diff --git a/lib/util/http/github.ts b/lib/util/http/github.ts
index e4b43912763106179e407f8a2c5dcb9fc458981d..dfb697e9d4c439dadaef4810d62503e2914349ff 100644
--- a/lib/util/http/github.ts
+++ b/lib/util/http/github.ts
@@ -50,7 +50,6 @@ export interface GithubGraphqlResponse<T = unknown> {
   errors?: {
     type?: string;
     message: string;
-    locations: unknown;
   }[];
 }