---
title: "Project values and variables"
description: "Reference for all built-in environment variables and pipeline values available in your CircleCI projects, and which VCS integrations support each one."
platform: "Cloud, Server"
doc_version: "unversioned"
last_updated: "2026-09-29"
cloud_plans: "Free, Performance, Scale"
version_control: "All supported providers"
---

> For current CircleCI product defaults, deprecated patterns, and Cloud/Server differences, see [AGENTS.md](https://circleci.com/docs/AGENTS.md).
>
> For the complete documentation index and site structure, see [llms.txt](https://circleci.com/docs/llms.txt).

# Project values and variables

**Cloud plans:** Free, Performance, Scale

**Version control:** [All supported providers](https://circleci.com/docs/guides/integration/version-control-system-integration-overview/)

This page is a reference for all built-in values available for use in your CircleCI projects.

## Built-in environment variables

The following built-in environment variables are available for CircleCI projects. Some environment variables are available for GitHub OAuth and Bitbucket Cloud projects and are deprecated for GitLab, GitHub App, and GitHub Enterprise Server support. If you must continue to use those as environment variables in your GitLab pipelines, refer to the workaround described after the list below.

Environment variables are scoped at the job level and can be used within the context of a job. Environment variables do not exist at a pipeline level, therefore they cannot be used for any logic at the pipeline or workflow level.

You cannot use a built-in environment variable to define another environment variable. Instead, you must use a `run` step to export the new environment variables using `BASH_ENV`. For more details, see [Setting an Environment Variable in a Shell Command](https://circleci.com/docs/guides/security/set-environment-variable/#set-an-environment-variable-in-a-shell-command).

| Variable | VCS | Type | Value | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `CI` | GitHub, Bitbucket, GitLab, Cursor Origin | Boolean | `true` (represents whether the current environment is a CI environment) | **Yes** | **Yes** |
| `CIRCLECI` | GitHub, Bitbucket, GitLab, Cursor Origin | Boolean | `true` (represents whether the current environment is a CircleCI environment) | **Yes** | **Yes** |
| `CIRCLE_BRANCH` | GitHub, Bitbucket, GitLab, Cursor Origin | String | The name of the Git branch currently being built. | **Yes** | **Yes** |
| `CIRCLE_BUILD_NUM` | GitHub, Bitbucket, GitLab, Cursor Origin | Integer | The number of the current job. Job numbers are unique for each job. | **Yes** | **Yes** |
| `CIRCLE_BUILD_URL` | GitHub, Bitbucket, GitLab, Cursor Origin | String | The URL for the current job on CircleCI. | **Yes** | **Yes** |
| `CIRCLE_JOB` | GitHub, Bitbucket, GitLab, Cursor Origin | String | The name of the current job. | **Yes** | **Yes** |
| `CIRCLE_NODE_INDEX` | GitHub, Bitbucket, GitLab, Cursor Origin | Integer | For jobs that run with parallelism enabled, this is the index of the current parallel run. The value ranges from 0 to (`CIRCLE_NODE_TOTAL` - 1). | **Yes** | **Yes** |
| `CIRCLE_NODE_TOTAL` | GitHub, Bitbucket, GitLab, Cursor Origin | Integer | For jobs that run with parallelism enabled, this is the number of parallel runs. The value is equivalent to the value of `parallelism` in your config file. | **Yes** | **Yes** |
| `CIRCLE_OIDC_TOKEN` | GitHub, Bitbucket, GitLab, Cursor Origin | String | An OpenID Connect token signed by CircleCI which includes details about the current job. | **Yes** | **Yes** from v4.4 |
| `CIRCLE_OIDC_TOKEN_V2` | GitHub, Bitbucket, GitLab, Cursor Origin | String | An OpenID Connect token signed by CircleCI which includes details about the current job. | **Yes** | **Yes** from v4.4 |
| `CIRCLE_ORGANIZATION_ID` | GitHub, Bitbucket, GitLab, Cursor Origin | String | A unique identifier for the CircleCI organization. | **Yes** | **Yes** |
| `CIRCLE_PIPELINE_ID` | GitHub, Bitbucket, GitLab, Cursor Origin | String | A unique identifier for the current pipeline. | **Yes** | **Yes** |
| `CIRCLE_PR_NUMBER` | GitHub OAuth, Bitbucket Cloud | Integer | The number of the associated GitHub or Bitbucket pull request. Only available on forked PRs. | **Yes** | **Yes** |
| `CIRCLE_PR_REPONAME` | GitHub OAuth, Bitbucket Cloud | String | The name of the GitHub or Bitbucket repository where the pull request was created. Only available on forked PRs. | **Yes** | **Yes** |
| `CIRCLE_PR_USERNAME` | GitHub OAuth, Bitbucket Cloud | String | The GitHub or Bitbucket username of the user who created the pull request. Only available on forked PRs. | **Yes** | **Yes** |
| `CIRCLE_PROJECT_ID` | GitHub, Bitbucket, GitLab, Cursor Origin | String | A unique identifier for the current project. | **Yes** | **Yes** |
| `CIRCLE_PROJECT_REPONAME` | GitHub, GitLab, Bitbucket, Cursor Origin | String | The name of the repository of the current project. | **Yes** | **Yes** |
| `CIRCLE_PROJECT_USERNAME` | GitHub, GitLab, Bitbucket, Cursor Origin | String | The GitHub or Bitbucket username of the current project. | **Yes** | **Yes** |
| `CIRCLE_PULL_REQUEST` | GitHub, Bitbucket Cloud | String | The URL of the associated pull request. If there are multiple associated pull requests, one URL is randomly chosen. | **Yes** | **Yes** |
| `CIRCLE_PULL_REQUESTS` | GitHub OAuth, Bitbucket Cloud | List | Comma-separated list of URLs of the current build’s associated pull requests. | **Yes** | **Yes** |
| `CIRCLE_REPOSITORY_URL` | GitHub OAuth, Bitbucket Cloud | String | The URL of your GitHub or Bitbucket repository. | **Yes** | **Yes** |
| `CIRCLE_SHA1` | GitHub, GitLab, Bitbucket, Cursor Origin | String | The SHA1 hash of the last commit of the current build. | **Yes** | **Yes** |
| `CIRCLE_TAG` | GitHub, Bitbucket, GitLab, Cursor Origin | String | The name of the git tag, if the current build is tagged. For more information, see the Git tag job execution section of the [Workflows](https://circleci.com/docs/guides/orchestrate/workflows/#executing-workflows-for-a-git-tag) page. | **Yes** | **Yes** |
| `CIRCLE_USERNAME` | GitHub, Bitbucket, GitLab | String | The GitHub or Bitbucket username of the user who triggered the pipeline (only if the user has a CircleCI account). | **Yes** | **Yes** |
| `CIRCLE_WORKFLOW_ID` | GitHub, Bitbucket, GitLab, Cursor Origin | String | A unique identifier for the workflow instance of the current job. This identifier is the same for every job in a given workflow instance. | **Yes** | **Yes** |
| `CIRCLE_WORKFLOW_JOB_ID` | GitHub, Bitbucket, GitLab, Cursor Origin | String | A unique identifier for the current job. | **Yes** | **Yes** |
| `CIRCLE_WORKFLOW_WORKSPACE_ID` | GitHub, Bitbucket, GitLab, Cursor Origin | String | An identifier for the [workspace](https://circleci.com/docs/reference/glossary/#workspace) of the current job. This identifier is the same for every job in a given workflow. | **Yes** | **Yes** |
| `CIRCLE_WORKING_DIRECTORY` | GitHub, Bitbucket, GitLab, Cursor Origin | String | The value of the `working_directory` key of the current job. | **Yes** | **Yes** |

If you must use the environment variables that are deprecated for GitLab SaaS in your GitLab pipelines, you can recreate this functionality using pipeline values in your configuration file. The following example shows how to set an environment variable `CIRCLE_PROJECT_REPONAME` using the [`environment` key](https://circleci.com/docs/guides/security/env-vars/#environment-variable-usage-options) and populating it with the `pipeline.trigger_parameters.gitlab.repo_name` value:

```yaml
build:
  docker:
    - image: cimg/node:17.0
      auth:
        username: mydockerhub-user
        password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
  environment:
    CIRCLE_PROJECT_REPONAME: << pipeline.trigger_parameters.gitlab.repo_name >>
  steps:
    - run: echo $CIRCLE_PROJECT_REPONAME
```

## Pipeline values

Pipeline values are available to all pipeline configurations and can be used without previous declaration. Pipeline values are scoped at the pipeline level. They are interpolated at compilation time, not workflow/job runtime.

The pipeline values available to you depend on your pipeline/integration type, as shown in the "Source" column of each table below. The tables below group values by their purpose and namespace.

### Pipeline and project information

These values provide core identifiers for the pipeline itself and the project it belongs to. They are available across all pipeline types and integration methods.

| Variable | Pipeline type | Type | Value | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `pipeline.id` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | A [globally unique identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier) for the pipeline. | **Yes** | **Yes** |
| `pipeline.number` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | Integer | A project-scoped integer identifier for the pipeline. | **Yes** | **Yes** |
| `pipeline.definition.id` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin<br>_(except schedule workflows)_ | String | The unique ID of the pipeline definition. | **Yes** | **Yes** |
| `pipeline.project.git_url` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The URL where the current project is hosted. For example, `[https://github.com/circleci/circleci-docs](https://github.com/circleci/circleci-docs)`. | **Yes** | **Yes** |
| `pipeline.project.type` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The lower-case name of the VCS provider, for example, `github`, `bitbucket`. | **Yes** | **Yes** |
| `pipeline.project.slug` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The slug of the project the pipeline definition belongs to. | **Yes** | **Yes** |
| `pipeline.name` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin<br>_(except schedule workflows)_ | String | The name of the pipeline definition. | **Yes** | **No** |
| `pipeline.integration_source` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The pipeline type, determined by the VCS integration used to check out code. Possible values: `github_app`, `github_server`, `github`, `bitbucket`, `bitbucket_dc`, `gitlab`. | **Yes** | **Yes** |

### Checkout information

Values prefixed with `pipeline.git.*` describe the git state of the code CircleCI checks out for the pipeline. These values reflect the code CircleCI checks out and builds. For GitHub App and GitHub App Server pipelines, this may differ from the following:

*   The commit or branch that triggered the event.
    
*   The commit or branch used to fetch the configuration file.
    

| Variable | Pipeline type | Type | Value | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `pipeline.git.tag` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The name of the git tag that CircleCI checks out. Empty if the pipeline checks out from a branch. | **Yes** | **Yes** |
| `pipeline.git.branch` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The name of the git branch that CircleCI checks out. Empty if the pipeline checks out from a tag. | **Yes** | **Yes** |
| `pipeline.git.branch.is_default` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | Boolean | Whether CircleCI checks out the default branch. | **Yes** | **Yes** (>= v4.7) |
| `pipeline.git.revision` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The long (40-character) git SHA of the commit that CircleCI checks out. | **Yes** | **Yes** |
| `pipeline.git.repo_url` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The URL of the repository. | **Yes** | **No** |
| `pipeline.git.repo_owner` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The VCS username of the repository owner. | **Yes** | **No** |
| `pipeline.git.repo_name` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The name of the repository, without the owner prefix. | **Yes** | **No** |
| `pipeline.git.repo_id` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The unique identifier of the repository. | **Yes** | **No** |
| `pipeline.git.commit.url` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin<br>_(except schedule workflows)_ | String | The URL of the checkout commit. | **Yes** | **Yes** |
| `pipeline.git.commit.subject` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The subject line of the checkout commit message. | **Yes** | **No** |
| `pipeline.git.commit.body` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The body of the checkout commit message. | **Yes** | **No** |
| `pipeline.git.commit.author_login` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>GitLab<br>Cursor Origin | String | The VCS username of the author of the checkout commit. Not available for Bitbucket Cloud because Bitbucket has [deprecated usernames](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-changes-gdpr/). | **Yes** | **No** |
| `pipeline.git.base_revision` | GitHub OAuth<br>Bitbucket Cloud | String | The long (40-character) git SHA of the build that ran before the current build. **Note:** While in most cases `pipeline.git.base_revision` will be the SHA of the commit that ran before your currently running pipeline, there are some caveats. When the build runs first for a branch, the variable will not appear. In addition, if you trigger the build via the API, the variable will not appear. | **Yes** | **Yes** |

### Configuration source information

Values prefixed with `pipeline.config.*` describe where CircleCI fetched the configuration file from. These values currently only apply to GitHub App and GitHub App Server pipelines where the configuration file can reside in a separate repository from the one CircleCI builds. For all other pipeline types, the configuration file always lives in the same repository as the code CircleCI checks out, so you can use the corresponding `pipeline.git.*` values instead.

| Variable | Pipeline type | Type | Value | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `pipeline.config.repository.name` | GitHub App<br>GitHub App Server<br>Cursor Origin | String | The name of the repository containing the CircleCI configuration file, in the format `owner/repo-name`. | **Yes** | **No** |
| `pipeline.config.repository.url` | GitHub App<br>GitHub App Server<br>Cursor Origin | String | The URL of the repository containing the CircleCI configuration file. | **Yes** | **No** |
| `pipeline.config.file_path` | GitHub App<br>GitHub App Server<br>Cursor Origin | String | The file path to the CircleCI configuration file used by the pipeline. | **Yes** | **No** |
| `pipeline.config.ref` | GitHub App<br>GitHub App Server<br>Cursor Origin | String | The full Git ref used to fetch the CircleCI configuration file, for example `refs/heads/main` or `refs/tags/v1.0`. | **Yes** | **No** |
| `pipeline.config.sha` | GitHub App<br>GitHub App Server<br>Cursor Origin | String | The long (40-character) git SHA of the commit used to fetch the CircleCI configuration file. | **Yes** | **No** |

### Trigger and event information

These values describe how and why the pipeline was triggered, including the event source, timing, and any event-specific data passed by the VCS provider.

All `pipeline.trigger_parameters.circleci.*` and `pipeline.trigger_parameters.github_app.*` values are deprecated and their presence is not guaranteed after **2026-09-21**. Use the replacement values listed in the table below.

| Variable | Pipeline type | Type | Value | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `pipeline.trigger.received_at` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | The timestamp of when the pipeline was triggered, in ISO 8601 format. | **Yes** | **Yes** |
| `pipeline.trigger.id` | GitHub App<br>GitHub App Server<br>Cursor Origin | String | The unique ID of the trigger that initiated the pipeline. | **Yes** | **No** |
| `pipeline.trigger.type` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The type of trigger that initiated the pipeline. Possible values: `github_app`, `github_server`, `github_oauth`, `bitbucket_cloud`, `bitbucket_dc`, `schedule`, `webhook`, `api`. | **Yes** | **No** |
| `pipeline.trigger_source`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>GitLab<br>Cursor Origin | String | Use `pipeline.trigger.type` instead. | **Yes** | **Yes** |
| `pipeline.schedule.name` | GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The name of the schedule trigger if the pipeline was triggered via schedule. Empty if the pipeline was not triggered via schedule. | **Yes** | **Yes** |
| `pipeline.schedule.id` | GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The unique ID of the schedule if the pipeline was triggered via schedule. Empty if the pipeline was not triggered via schedule. | **Yes** | **Yes** |
| `pipeline.event.name` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The name of the event that triggered the pipeline. Possible values: `custom_webhook`, `api`, `push`, `pull_request`, `schedule`. | **Yes** | **No** |
| `pipeline.event.action` | GitHub App<br>GitHub App Server<br>GitHub OAuth<br>Bitbucket Cloud<br>Cursor Origin | String | The action associated with the event. This value is the same as `pipeline.event.name` except for events that have an `action` subtype: [GitHub `pull_request`](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request) events and [Bitbucket Cloud `pullrequest:*`](https://support.atlassian.com/bitbucket-cloud/docs/event-payloads/#Pull-request-events) events. Possible values: `custom_webhook`, `api`, `push`, `schedule`, `opened`, `synchronize`, `reopened`, `closed`, `ready_for_review`, `labeled`, `created`, `updated`, `fulfilled`, `rejected`. Read more about [GitHub Trigger Event Options](https://circleci.com/docs/guides/orchestrate/github-trigger-event-options/#supported-trigger-options). | **Yes** | **No** |
| `pipeline.event.github.after` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The SHA of the most recent commit on the branch after the push. Corresponds to the `after` field on the [GitHub push event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#push). Only populated for push events. | **Yes** | **No** |
| `pipeline.event.github.head_commit.url` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The URL of the most recent commit on the branch. Corresponds to the `head_commit.url` field on the [GitHub push event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#push). Only populated for push events. | **Yes** | **No** |
| `pipeline.event.github.ref` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The full Git ref that was pushed. Corresponds to the `ref` field on the [GitHub push event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#push). Only populated for push events. | **Yes** | **No** |
| `pipeline.event.context.github.pr_url` | GitHub App<br>GitHub App Server | String | The URL of the associated GitHub pull request, if one exists. If there are multiple associated pull requests, one URL is randomly chosen. This value matches environment variable `CIRCLE_PULL_REQUEST`. | **Yes** | **No** |
| `pipeline.event.github.pull_request.base.ref` | GitHub App<br>GitHub App Server | String | The name of the base (or target) branch of the pull request. Corresponds to the `pull_request.base.ref` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.base.sha` | GitHub App<br>GitHub App Server | String | The SHA of the base branch of the pull request. Corresponds to the `pull_request.base.sha` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.head.ref` | GitHub App<br>GitHub App Server | String | The name of the head branch of the pull request. Corresponds to the `pull_request.head.ref` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.head.sha` | GitHub App<br>GitHub App Server | String | The SHA of the head branch of the pull request. Corresponds to the `pull_request.head.sha` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.draft` | GitHub App<br>GitHub App Server | Boolean | A boolean value indicating whether the pull request is a draft. Corresponds to the `pull_request.draft` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.title` | GitHub App<br>GitHub App Server | String | The title of the pull request. Corresponds to the `pull_request.title` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.number` | GitHub App<br>GitHub App Server | Integer | The numeric identifier of the pull request. Corresponds to the `pull_request.number` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.merged` | GitHub App<br>GitHub App Server | Boolean | A boolean value indicating whether the pull request has been merged. Corresponds to the `pull_request.merged` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.pull_request.url` | GitHub App<br>GitHub App Server | String | The URL of the pull request. Corresponds to the `pull_request.url` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events. | **Yes** | **No** |
| `pipeline.event.github.label.name` | GitHub App<br>GitHub App Server | String | The name of the label applied to the pull request. Corresponds to the `label.name` field on the [GitHub pull request event payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#pull_request). Only populated for pull request events with the `labeled` action. | **Yes** | **No** |
| `pipeline.event.github.comment.body` | GitHub App<br>GitHub App Server | String | The body of the comment that triggered the pipeline, with leading and trailing whitespace removed. Corresponds to the `comment.body` field on `issue_comment` and `pull_request_review_comment` GitHub event payloads. Only populated for pipelines triggered by a PR comment. | **Yes** | **No** |
| `pipeline.event.github.sender.type` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The type of GitHub user that triggered the event. Corresponds to the `sender.type` field on GitHub event payloads. Possible values are `User`, `Organization`, and `Bot`. | **Yes** | **No** |
| `pipeline.event.github.sender.avatar_url` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The avatar URL of the GitHub user who triggered the event. Corresponds to the `sender.avatar_url` field on GitHub event payloads. | **Yes** | **No** |
| `pipeline.event.github.sender.login` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The VCS username of the GitHub user who triggered the event. Corresponds to the `sender.login` field on GitHub event payloads. | **Yes** | **No** |
| `pipeline.event.github.repository.name` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The name of the repository that triggered the event, without the owner prefix. Corresponds to the `repository.name` field on repository-related GitHub event payloads. | **Yes** | **No** |
| `pipeline.event.github.repository.owner.login` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The VCS username of the repository owner. Corresponds to the `repository.owner.login` field on repository-related GitHub event payloads. | **Yes** | **No** |
| `pipeline.event.github.repository.url` | GitHub App<br>GitHub App Server<br>GitHub OAuth | String | The URL of the repository that triggered the event. Corresponds to the `repository.url` field on repository-related GitHub event payloads. | **Yes** | **No** |
| `pipeline.trigger_parameters.webhook.body` | Custom webhook | String | The body of the payload that was sent with a [Custom Webhook](https://circleci.com/docs/guides/orchestrate/triggers-overview/#trigger-a-pipeline-from-a-custom-webhook). | **Yes** | **No** |
| `pipeline.trigger_parameters.circleci.trigger_type`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server<br>GitLab | String | Use `pipeline.trigger.type` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.circleci.event_time`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server<br>GitLab | String | Use `pipeline.trigger.received_at` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.circleci.event_type`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server<br>GitLab | String | Use `pipeline.event.name` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.ref`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | For push events, use `pipeline.event.github.ref`. For pull request events, use `pipeline.event.github.pull_request.head.ref`. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.checkout_sha`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.git.revision` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.user_id`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | No direct replacement is available. If this value is critical to your workflows, contact CircleCI Support. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.user_name`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.event.github.sender.login` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.user_username`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.event.github.sender.login` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.user_avatar`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.event.github.sender.avatar_url` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.repo_name`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.event.github.repository.name` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.repo_url`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.event.github.repository.url` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.web_url`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.event.github.repository.url` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.commit_sha`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.event.github.after` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.commit_title`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.git.commit.subject` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.commit_message`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.git.commit.body` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.commit_timestamp`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | Use `pipeline.trigger.received_at` instead. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.commit_author_name`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | For the user who triggered the push event, use `pipeline.event.github.sender.*`. For the checkout commit author, use `pipeline.git.commit.author_login`. | **Yes** | **No** |
| `pipeline.trigger_parameters.github_app.branch`<br>**Deprecated** - support ends on 2026-08-01. | GitHub App<br>GitHub App Server |  | For push events, use `pipeline.event.github.ref`. For pull request events, use `pipeline.event.github.pull_request.head.ref`. | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.type` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.ref` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.checkout_sha` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.user_id` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.user_name` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.user_username` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.user_avatar` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.repo_name` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.repo_url` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.web_url` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.commit_sha` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.commit_title` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.commit_message` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.commit_timestamp` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.commit_author_name` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.commit_author_email` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.branch` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.default_branch` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.x_gitlab_event_id` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |
| `pipeline.trigger_parameters.gitlab.is_fork_merge_request` | GitLab |  | See GitLab documentation for [webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) and [webhook events](https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html). | **Yes** | **No** |

### Deploy information

Values prefixed with `pipeline.deploy.*` are only available for deployment pipelines. See the [Set Up a Rollback Pipeline](https://circleci.com/docs/guides/deploy/set-up-rollbacks/) and [Set Up a Deploy Pipeline](https://circleci.com/docs/guides/deploy/set-up-deploys/) guides for more information.

| Variable | Pipeline type | Type | Value | Cloud | Server |
| --- | --- | --- | --- | --- | --- |
| `pipeline.deploy.component_name` | GitHub App<br>GitHub App Server | String | The name of the component that will be rolled back or deployed. | **Yes** | **No** |
| `pipeline.deploy.environment_name` | GitHub App<br>GitHub App Server | String | The name of the environment in which the rollback or deploy will be performed. | **Yes** | **No** |
| `pipeline.deploy.target_version` | GitHub App<br>GitHub App Server | String | The version of the component that needs to be rolled back to or deployed. | **Yes** | **No** |
| `pipeline.deploy.current_version` | GitHub App<br>GitHub App Server | String | The current version of the component that CircleCI will roll back or deploy. Use this to verify that the component status matches expectations. | **Yes** | **No** |
| `pipeline.deploy.namespace` | GitHub App<br>GitHub App Server | String | The namespace of the environment that was deployed to. | **Yes** | **No** |
| `pipeline.deploy.reason` | GitHub App<br>GitHub App Server | String | The reason for the deployment or rollback. | **Yes** | **No** |

### Usage example

```yaml
version: 2.1

jobs:
  build:
    docker:
      - image: cimg/node:20.3.0
    environment:
      CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<<pipeline.git.revision>>
    working_directory: ~/main
    steps:
      - run: echo "This is pipeline ID << pipeline.id >>"
      - run: echo $CIRCLE_COMPARE_URL
```

When using the above method to set the variables in the `environment` key, note that if the pipeline variable is empty it will be set to `<nil>`. If you need an empty string instead, set the environment variable in a [Shell Command](https://circleci.com/docs/guides/security/set-environment-variable/#set-an-environment-variable-in-a-shell-command).