> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/harness-platform/3.0/harness-platform-resources/overview/input-sets.md).

# Input sets

Save and reuse runtime input values across pipeline runs using input sets and overlays.

Pipelines often run the same stages and steps but need different values across environments or scenarios. Pipeline inputs let you define those variable values as named parameters. Input sets and overlays let you save those values and reuse them across runs, so you do not re-enter the same configuration every time you run a pipeline.

* **Input set**: a saved collection of values for a pipeline's inputs. Select an input set when running the pipeline and Harness pre-fills the inputs for you.
* **Overlay input set**: a combination of multiple input sets applied together. Instead of maintaining monolithic configurations that repeat shared values, you build overlays from modular, reusable input sets.

## What you will learn

* How input sets save runtime input values so you do not re-enter them on every run
* How to create, manage, and apply input sets from the Input Sets tab
* How overlay input sets combine multiple input sets into a single reusable configuration
* How input values are handled when rerunning a pipeline from a failed stage

{% hint style="info" %}
**Pipeline inputs required**

Input sets only work when the pipeline has inputs declared. Go to [Pipeline settings](/harness-platform/3.0/harness-platform-resources/overview/pipeline-settings.md) to learn how to define inputs for your pipeline.
{% endhint %}

***

## Input sets

An input set is a named collection of values for a pipeline's inputs. You can create multiple input sets for the same pipeline, one per environment, service, or scenario, and select the right one at runtime.

Because pipelines with inputs prompt for values each time they run, input sets save those values so runs are consistent and repeatable. You do not need to remember or re-enter the same values for every run.

For example, you can create:

* A **dev** input set with a development image tag and `dev.example.com` as the target URL.
* A **production** input set with a stable release tag and `prod.example.com`.

You do not have to fill every input in an input set. Leave fields empty to keep them as manual inputs that you fill at runtime.

### Permissions

To create or edit input sets, you need **Pipeline: Create/Edit** permission. To run a pipeline with an input set, you need both **View** permission on the input set and **Pipeline: Execute** permission.

### Create an input set

1. Select **Input Sets** in the pipeline header.
2. Click **+ Create input set**.
3. In the **Input Set** panel, enter a **Name**. Harness suggests an **Id** automatically.
4. Under **Input Set Type**, select **New input set**.
5. Under **Inputs**, enter values for the pipeline inputs you want to pre-define. You do not need to fill every input. Leave fields empty to keep them as manual inputs at runtime.
6. Optionally add a **Description** and **Tags** under **Metadata**.
7. Click **Add Input Set**.

{% hint style="info" %}
**Create an input set while running**

You can also create an input set directly from the **Run Pipeline** dialog without navigating to the Input Sets tab. Fill in the input values, then click **Save as new Input set** before clicking **Run pipeline**. Harness saves those values as a new input set for future use.
{% endhint %}

### Use an input set

1. In Pipeline Studio, click **Run**.
2. In the **Run Pipeline** dialog, click **+ Add** under **Input Sets** and select an input set.
3. Under **Inputs**, the pipeline inputs are shown with values pre-filled from the selected input set. You can edit any value before running.
4. Optionally select **Skip preflight checks** or **Notify only me**.
5. Click **Run pipeline**.

Required inputs with no pre-filled value must be filled before you can run.

***

## Overlays

An overlay input set combines multiple input sets into one reusable configuration. Instead of duplicating shared values across input sets, you split your configuration into focused, modular sets and combine them in an overlay.

For example, for a CD pipeline that deploys multiple services to multiple environments, you might create:

* **Common**: shared defaults used by every deployment, such as logging level, timeout values, or a notification email.
* **Service A**: configuration specific to Service A, such as its image name and service endpoint.
* **Production**: environment-specific overrides, such as replica count and resource limits.

Apply the **Common + Service A + Production** overlay to get the right combined configuration without duplicating values across every input set. Swap out **Service A** for **Service B** in a different overlay and reuse everything else.

When you run a pipeline with an overlay, Harness applies the input sets in order. If the same input is defined in multiple sets, the value from the last set wins. For example, if **Common** defines `replicas: 1` and **Production** defines `replicas: 5`, the overlay resolves to `replicas: 5` because **Production** is applied last.

### Create an overlay

1. Select **Input Sets** in the pipeline header.
2. Click **+ Create input set**.
3. Enter a **Name**. Harness suggests an **Id** automatically.
4. Under **Input Set Type**, select **Overlay input set**.
5. Under **Input Sets**, click **+ Add** and select the input sets to include.
6. Arrange them in the order you want them applied. Input sets resolved later override values set by earlier ones.
7. Optionally add a **Description** and **Tags** under **Metadata**.
8. Click **Add Input Set**.

### Use an overlay

Using an overlay follows the same steps as using an input set. In the **Run Pipeline** dialog, click **+ Add** under **Input Sets** and select the overlay. Harness resolves the combined values from all input sets in the overlay and pre-fills the pipeline inputs for you.

When running with an overlay, you can choose which input sets from the overlay to include. Input sets you deselect are skipped for that run.

***

## Rerun a pipeline

When you rerun a pipeline, how input values are handled depends on the rerun option you choose:

* **From Last Failed Stage**: Harness reuses the input values from the original execution. Any input values you change before the rerun are not applied. The pipeline continues with the exact same inputs as the original run.
* **From Specific Stage**: Harness reloads inputs for the selected stage. Updated input values apply for that stage and everything after it.

To use different input values on a rerun, select **From Specific Stage**.

**Example**: a pipeline ran with image tag `v1.1.0`. You rerun and update the image tag to `v1.2.0` in the dialog. If you select **From Last Failed Stage**, the pipeline continues with `v1.1.0`. If you select **From Specific Stage**, the pipeline uses `v1.2.0`.

***

## Next steps

* Go to [Pipeline settings](/harness-platform/3.0/harness-platform-resources/overview/pipeline-settings.md) to define inputs for your pipeline.
* Go to [Execution logs](/harness-platform/3.0/harness-platform-resources/overview/overview-2.md) to view the inputs used in a specific run from the **Inputs** tab of any execution.
