Incorrect import/order rules being applied in job

I have a React application, and am using the Code Quality template to check the code on every merge request.

.gitlab-ci.yml

include:
  - template: Code-Quality.gitlab-ci.yml
code_quality:
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'

I’m configuring Code Climate like this.
.codeclimate.yml

version: '2'
plugins:
  eslint:
    enabled: true
    channel: eslint-8

And I have this in my .eslintrc.json file.

{
  "extends": [
    "plugin:import/errors",
    "plugin:import/warnings",
  ],
  "rules": {
    "import/order": [
      "warn",
      {
        "alphabetize": {
          "order": "asc"
        },
        "newlines-between": "always",
        "pathGroups": [
          {
            "pattern": "react",
            "group": "external",
            "position": "before"
          }
        ],
        "pathGroupsExcludedImportTypes": [
          "react"
        ]
      }
    ]
  }
}

Finally, in my package.json

{
  "devDependencies": {
    "eslint-plugin-import": "^2.28.1",
  }
}

Now, if I run eslint, I get a clean bill of health.

$ node_modules/.bin/eslint ./src
$

However, when the checks run via Code Climate during a merge request I get failures like this:

Description path/to/module import should occur before import of prop-types

There’s a few hundred of these, and it is mucking up our process, as we can never know if any of those hundreds of failures is one we should actually fix up before accepting the merge request.

I am using a private group on gitlab.com with the premium plan.

Any ideas why Code Climate is getting different eslint failures than we get locally.