# (Breaking Change) Undeclared Parameters Will Fail Config Compilation

**URL:** <https://discuss.circleci.com/t/breaking-change-undeclared-parameters-will-fail-config-compilation/54630>\
**Category:** Build Environment\
**Created:** [June 8, 2026, 9:28pm UTC](https://discuss.circleci.com/t/breaking-change-undeclared-parameters-will-fail-config-compilation/54630 "2026-06-08T21:28:00Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mseong6251](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/mseong6251/32/36597_2.png) [@mseong6251](https://discuss.circleci.com/u/mseong6251)\
**Post date:** [June 8, 2026, 9:28pm UTC](https://discuss.circleci.com/t/breaking-change-undeclared-parameters-will-fail-config-compilation/54630/1 "2026-06-08T21:28:00Z")

</div>

IMPORTANT: **⚠ This post has been superseded.** This breaking change has been consolidated with two others into a single post, and the effective date is now **July 17, 2026**. Please refer to [the updated Discuss post](https://discuss.circleci.com/t/breaking-changes-config-compilation-updates-july-17-2026/54719) for the up to date details. The information below is retained for reference only.

> **Old discuss post**
>
> On July 8th, 2026, CircleCI is updating how undeclared parameters are handled. Previously, referencing a parameter that is not declared in the current scope could silently resolve instead of raising an error, allowing invalid configs to compile.
> 
> After this date, any config that references an undeclared parameter will **fail to compile** with an undeclared-parameter error.
> 
> **Background**
> 
> This corrects a long-standing issue where invalid configs were silently accepted. As we build the next generation of config tooling, stricter and more predictable validation ensures more reliable config.
> 
> Pipeline parameters can only be resolved in the config file in which they are declared. Currently, there are niche cases when a reference points to a parameter that isn’t declared or in scope, the config compiles anyway, and the reference silently resolves to `null` instead of failing. This can lead to unintentional, difficult to troubleshoot behaviour
> 
> **A common example**
> 
> In this example, the config is invalid because [orbs cannot use pipeline parameters](https://circleci.com/docs/guides/orchestrate/pipeline-variables/#the-scope-of-parameters-in-configuration):
> 
> yaml
> 
> ```auto
> version: 2.1
> 
> parameters:
> bug:
> type: string
> default: "this is buggy"
> 
> orbs:
> buggy-orb:
> jobs:
> exhibit-bug:
> docker: [image: "python:2.7"]
> parameters:
> bug:
> type: string
> default: << pipeline.parameters.bug >>
> environment:
> FOO: << parameters.bug >>
> steps:
> - checkout
> 
> workflows:
> build-test-deploy:
> jobs:
> - buggy-orb/exhibit-bug
> 
> ```
> 
> Today, this compiles and `FOO` resolves to `null`. After the change, it will fail to compile.
> 
> **How to check and fix your config**
> 
> You can preview whether your config is affected today, before the change is enabled.
> 
> 1. **Validate your config** using either:
> 
> 2. **Review the errors** — look for undeclared-parameter errors in the output.
> 
> 3. **Fix them** — remove references to parameters that aren’t declared in the current scope, or declare the parameter where it’s used.
> 
> 4. **Revalidate** using the same UI toggle or CLI command to confirm the errors are resolved.
> 
> ## **Need help?**
> 
> If you have questions or run into issues migrating, reply to this thread or [open a support ticket](https://support.circleci.com/).
