CircleCI Reusable Executor Parameters Unresolved - Fix Inheritance
A job references a parameterized reusable executor but the parameters do not resolve - the job passes a parameter the executor never declared, or tries to override a field the executor does not expose. The job environment cannot be built.
What this error means
Validation fails resolving the executor’s parameters, or the job silently runs with the executor’s defaults instead of the values you passed. The executor reference does not bind the parameters the way you intended.
Config is invalid:
- job 'test': executor 'node-builder' has no parameter 'tag'
- executor 'node-builder': parameter 'tag' used in image but not declaredCommon causes
Job passes an undeclared executor parameter
To pass parameters to an executor, the job must use the executor: { name: ..., <param>: ... } form, and every key must be declared under the executor’s parameters:.
Executor references an undeclared parameter
The executor’s docker/resource_class uses << parameters.tag >> but never declares tag under its own parameters:, so expansion fails.
Trying to override a non-parameterized field
You can only override fields the executor parameterizes. Passing a value for a field the executor hardcodes has no effect or errors.
How to fix it
Declare executor parameters and pass them by name
executors:
node-builder:
parameters:
tag: { type: string, default: "20.11" }
docker:
- image: cimg/node:<< parameters.tag >>
resource_class: medium
jobs:
test:
executor:
name: node-builder
tag: "22.2"
steps: [checkout, { run: npm test }]Only override what the executor exposes
- Declare every parameter the executor’s fields reference under its
parameters:. - Use the
executor: { name:, <param>: }form when passing values. - Parameterize any field you need to vary per job (image tag, resource_class).
How to prevent it
- Declare all executor parameters the executor’s fields use.
- Pass executor parameters with the
name:form, by declared key. - Parameterize fields that must vary, rather than overriding hardcoded ones.