diff --git a/.circleci/config.yml b/.circleci/config.yml
index 317abe60c..b9ac1ab13 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -145,6 +145,7 @@ workflows:
             parameters:
               jobname:
                 - all-files
+                - all-files-cwd
                 - backend
                 - batch-send-coverage
                 - before-all-visit
@@ -174,6 +175,7 @@ workflows:
             - lint
             - test-code-coverage-plugin
             - test-all-files
+            - test-all-files-cwd
             - test-backend
             - test-batch-send-coverage
             - test-before-all-visit
diff --git a/task-utils.js b/task-utils.js
index 7e39cfdef..6ebf1ae68 100644
--- a/task-utils.js
+++ b/task-utils.js
@@ -293,6 +293,7 @@ function tryFindingLocalFiles(nycFilename) {
 function findSourceFiles(nycOptions) {
   debug('include all files options: %o', {
     all: nycOptions.all,
+    cwd: nycOptions.cwd,
     include: nycOptions.include,
     exclude: nycOptions.exclude,
     extension: nycOptions.extension
@@ -330,7 +331,12 @@ function findSourceFiles(nycOptions) {
 
   debug('searching files to include using patterns %o', patterns)
 
-  const allFiles = globby.sync(patterns, { absolute: true })
+  const globbyOptions = { absolute: true }
+  if (nycOptions.cwd) {
+    globbyOptions.cwd = nycOptions.cwd
+  }
+  const allFiles = globby.sync(patterns, globbyOptions)
+
   return allFiles
 }
 /**
diff --git a/test-apps/all-files-cwd/.babelrc b/test-apps/all-files-cwd/.babelrc
new file mode 100644
index 000000000..7a016cf8e
--- /dev/null
+++ b/test-apps/all-files-cwd/.babelrc
@@ -0,0 +1,3 @@
+{
+  "plugins": ["istanbul"]
+}
diff --git a/test-apps/all-files-cwd/README.md b/test-apps/all-files-cwd/README.md
new file mode 100644
index 000000000..e5faf2889
--- /dev/null
+++ b/test-apps/all-files-cwd/README.md
@@ -0,0 +1 @@
+# example: all files
diff --git a/test-apps/all-files-cwd/cypress.config.js b/test-apps/all-files-cwd/cypress.config.js
new file mode 100644
index 000000000..7b34c2f8e
--- /dev/null
+++ b/test-apps/all-files-cwd/cypress.config.js
@@ -0,0 +1,11 @@
+const { defineConfig } = require('cypress')
+
+module.exports = defineConfig({
+  fixturesFolder: false,
+  e2e: {
+    setupNodeEvents(on, config) {
+      return require('./cypress/plugins/index.js')(on, config)
+    },
+    baseUrl: 'http://localhost:1234'
+  }
+})
diff --git a/test-apps/all-files-cwd/cypress/e2e/spec.cy.js b/test-apps/all-files-cwd/cypress/e2e/spec.cy.js
new file mode 100644
index 000000000..d7ca62b2f
--- /dev/null
+++ b/test-apps/all-files-cwd/cypress/e2e/spec.cy.js
@@ -0,0 +1,12 @@
+/// 
+it('works', () => {
+  cy.visit('/')
+  cy.contains('Page body')
+
+  cy.window()
+    .invoke('reverse', 'super')
+    .should('equal', 'repus')
+
+  // application's code should be instrumented
+  cy.window().should('have.property', '__coverage__')
+})
diff --git a/test-apps/all-files-cwd/cypress/plugins/index.js b/test-apps/all-files-cwd/cypress/plugins/index.js
new file mode 100644
index 000000000..101311b68
--- /dev/null
+++ b/test-apps/all-files-cwd/cypress/plugins/index.js
@@ -0,0 +1,4 @@
+module.exports = (on, config) => {
+  require('@cypress/code-coverage/task')(on, config)
+  return config
+}
diff --git a/test-apps/all-files-cwd/cypress/support/commands.js b/test-apps/all-files-cwd/cypress/support/commands.js
new file mode 100644
index 000000000..cc6040de7
--- /dev/null
+++ b/test-apps/all-files-cwd/cypress/support/commands.js
@@ -0,0 +1 @@
+import '@cypress/code-coverage/support'
diff --git a/test-apps/all-files-cwd/cypress/support/e2e.js b/test-apps/all-files-cwd/cypress/support/e2e.js
new file mode 100644
index 000000000..b5c578c9d
--- /dev/null
+++ b/test-apps/all-files-cwd/cypress/support/e2e.js
@@ -0,0 +1 @@
+require('./commands')
diff --git a/test-apps/all-files-cwd/index.html b/test-apps/all-files-cwd/index.html
new file mode 100644
index 000000000..993f0c189
--- /dev/null
+++ b/test-apps/all-files-cwd/index.html
@@ -0,0 +1,17 @@
+
+  Page body
+  
+  
+  
+
diff --git a/test-apps/all-files-cwd/main.js b/test-apps/all-files-cwd/main.js
new file mode 100644
index 000000000..5dd69be2f
--- /dev/null
+++ b/test-apps/all-files-cwd/main.js
@@ -0,0 +1,3 @@
+window.add = (a, b) => a + b
+
+window.sub = (a, b) => a - b
diff --git a/test-apps/all-files-cwd/package.json b/test-apps/all-files-cwd/package.json
new file mode 100644
index 000000000..b0cc9cdb8
--- /dev/null
+++ b/test-apps/all-files-cwd/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "example-all-files-cwd",
+  "description": "Report all files cwd",
+  "private": true,
+  "scripts": {
+    "cy:run": "cypress run",
+    "start": "parcel serve ../all-files/index.html",
+    "start:windows": "npx bin-up parcel serve ../all-files/index.html",
+    "pretest": "rimraf .nyc_output .cache coverage dist",
+    "test": "start-test 1234 cy:run",
+    "coverage:verify": "npx nyc report --temp-dir ../all-files-cwd/.nyc_output --check-coverage true --lines 100",
+    "coverage:check-files": "check-coverage main.js && check-coverage second.js && check-coverage not-covered.js && check-coverage cypress.config.js && only-covered --from coverage/coverage-final.json main.js second.js not-covered.js cypress.config.js"
+  },
+  "nyc": {
+    "all": true,
+    "cwd": "../all-files",
+    "include": "*.js"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.22.15"
+  }
+}
diff --git a/test-apps/all-files-cwd/second.js b/test-apps/all-files-cwd/second.js
new file mode 100644
index 000000000..494a0c5fc
--- /dev/null
+++ b/test-apps/all-files-cwd/second.js
@@ -0,0 +1,7 @@
+// this file should be excluded from the final coverage numbers
+// using "nyc.exclude" list in package.json
+window.reverse = s =>
+  s
+    .split('')
+    .reverse()
+    .join('')