Skip to main content

The config editor fills pipeline values with placeholders

The config editor and circleci config process have no pipeline, so each pipeline value is a placeholder. A comparison with your real branch is false there. A triggered pipeline still uses the real value.

The config editor in the web app, and circleci config process, compile your config with no pipeline. Each pipeline value is a placeholder. A comparison with a real branch, tag, owner, or repository name is false in that compile. A pipeline you trigger later still uses the real value.

Most string values are the name after pipeline., with every . and _ changed to -. pipeline.git.branch is git-branch. pipeline.git.tag is git-tag. pipeline.git.repo_owner is git-repo-owner. Booleans are false. Integers are one. Timestamps are 2026-06-23T00:00:00.000Z. A few project fields are fixed instead: pipeline.project.type is github, pipeline.project.slug is gh/user/project, and pipeline.project.git_url is https://git.example.invalid/user/project.

The editor also sets the branch and the tag at the same time. A triggered pipeline does not. A branch checkout leaves the tag empty. A tag checkout leaves the branch empty.

What the compiled config shows

and and or return one of the two values. They do not return only true or false. A false comparison keeps the second value, so the editor saves that second value.

A branch check compiles as false, and the editor keeps medium:

resource_class: << pipeline.git.branch == "main" and "xlarge" or "medium" >>

A pipeline triggered on main uses xlarge.

A default-branch check compiles as false, because pipeline.git.branch.is_default is false. The editor omits this job. A pipeline on the default branch still includes it.

jobs:
  - deploy:
      when: << pipeline.git.branch.is_default >>

An owner check compiles as false, because the placeholder is git-repo-owner, not your organization.

when: << pipeline.git.repo_owner == "my-org" >>

A tag check compiles as true, because the placeholder tag is git-tag. The editor includes the job. A branch pipeline omits it, because the tag is empty there.

when: << pipeline.git.tag >>

pipeline.number is one. pipeline.number > 1 is false in the editor.

When the placeholder is left in place

Config expressions are available on Cloud and on CircleCI Server 4.7 or later. On Server before 4.7, the compiler does not evaluate the expression. It writes the placeholder string into the key. A key that must be an integer or a boolean then fails, and the error quotes that string. parallelism is one of those keys. The message looks like this:

Type error for argument parallelism: expected type: integer, actual value: "git-branch" (type string)

Upgrade Server to 4.7 or later to evaluate the expression. On an older Server version, split the work into separate workflows and filter each workflow by branch.

Compile it locally

From the repository:

circleci config process .circleci/config.yml

Read the compiled job as the placeholder result. It is not the result for main, and it is not a failure of the expression.

On Server, point the v0 CLI at the Server host. Use Install the CircleCI CLI (v0) for CircleCI Server when the local circleci command is the 1.0 CLI.

Did this answer your question?