diff --git a/node_modules/check-es-compat/bin/cli.mjs b/node_modules/check-es-compat/bin/cli.mjs
index 928780f..026eb9a 100755
--- a/node_modules/check-es-compat/bin/cli.mjs
+++ b/node_modules/check-es-compat/bin/cli.mjs
@@ -17,7 +17,8 @@ if (args.length === 0) {
   }
 }
 
-async function execute(files) {
+async function execute(args) {
+  const { files, polyfills } = parseArguments(args);
   const eslint = new ESLint({
     // Ignore any config; it's for target's own linter setup rather than this tool.
     useEslintrc: false,
@@ -35,7 +36,7 @@ async function execute(files) {
         es2023: true,
       },
       rules: {
-        'ecmascript-compat/compat': 'error',
+        'ecmascript-compat/compat': ['error', { polyfills }],
       },
     },
   });
@@ -47,3 +48,42 @@ async function execute(files) {
 
   return { hasErrors: results.some((result) => result.errorCount > 0) };
 }
+
+function parseArguments(args) {
+  const files = [];
+  const polyfills = [];
+  let nextArgIsPolyfills = false;
+
+  for (const arg of args) {
+    if (nextArgIsPolyfills) {
+      nextArgIsPolyfills = false;
+      polyfills.push(...splitPolyfillsArgument(arg));
+      continue;
+    }
+
+    if (arg.startsWith('--polyfills')) {
+      if (arg.startsWith('--polyfills=')) {
+        polyfills.push(...splitPolyfillsArgument(arg.slice(12)));
+      } else {
+        nextArgIsPolyfills = true;
+      }
+
+      continue;
+    }
+
+    files.push(arg);
+  }
+
+  return { files, polyfills };
+}
+
+function splitPolyfillsArgument(polyfills) {
+  const prototypeAtPolyfill = '{Array,String,TypedArray}.prototype.at';
+  const prototypeAtPlaceholder = '{{PROTOTYPEAT}}';
+
+  return polyfills
+    .replaceAll('\\', '')
+    .replace(prototypeAtPolyfill, prototypeAtPlaceholder)
+    .split(',')
+    .map(polyfill => polyfill === prototypeAtPlaceholder ? prototypeAtPolyfill : polyfill);
+}
