Matched signals
- not a valid resource class
- resource class.*is not a valid
- machine image.*is not a valid
- image.*not a valid resource class
- Job was rejected
- job failed to schedule
- unsupported machine image
- image was renamed
CircleCI machine image or resource class not valid
What this failure means
A CircleCI job failed to start because the specified machine image or resource class is no longer valid, was removed, or was never available for the organization.
Symptoms
Faultline looks for one or more of these log fragments:
not a valid resource class
resource class.*is not a valid
machine image.*is not a valid
image.*not a valid resource class
Job was rejected
job failed to schedule
unsupported machine image
image was renamed
Diagnosis
CircleCI rejected the job at scheduling time because:
- The machine image (e.g.,
ubuntu-2404:2026.02.2) was an internal or preview image that was removed from the index. - The resource class is not available for the specified executor or org plan.
- The image name was renamed or deprecated between releases.
Fix steps
-
Check the current list of available machine images on CircleCI Developer - Machine Images.
-
Update the machine image to a stable, released version:
machine: image: ubuntu-2404:2026.02.20 -
For resource class errors, verify the class is available for your plan:
resource_class: medium -
If using a preview or internal image, migrate to the stable alias:
ubuntu-2404:2026.02.2→ubuntu-2404:2026.02.20- Or use
docker-docker29alias instead of direct image name.
-
Contact CircleCI support if the error persists for stable images.
Validation
- The pipeline triggers and the job is scheduled on the expected executor.
- The job reaches the first step successfully.
- No “not a valid resource class” or “image is not valid” error in the job setup.
Why it matters
A machine image or resource class error fails the job before any of your code runs — the failure is in CircleCI’s scheduling layer, not in your job steps. These errors often occur after CircleCI releases new images and removes old preview images.
Prevention
- Pin machine images to stable released versions, not preview or internal names.
- Use the
docker-docker29alias for the latest Docker image instead of direct naming. - Monitor CircleCI releaseannouncements for image deprecations.
- Run
circleci doctorto verify your config is valid before pushing.
Try it locally
circleci config validate .circleci/config.yml
circleci config validate .circleci/config.yml
circleci doctor
How Faultline detects it
Use faultline explain circleci-resource-class-invalid to see the full playbook.
faultline analyze build.log
faultline explain circleci-resource-class-invalid
Generated from playbooks/bundled/log/ci/circleci-resource-class-invalid.yaml. Do not edit directly.