# Baseline

Baseline monitoring is the practice of establishing what normal external network calls your CI/CD pipelines typically make, and then monitoring for deviations that might indicate a security breach.

At its core, it helps answer the question: *“Is this job making expected and safe outbound network calls?”*

### Baseline Status Categories <a href="#baseline-status-categories" id="baseline-status-categories"></a>

Each monitored resource, such as a job or repository, is evaluated for the predictability of its network activity. This evaluation helps uncover anomalies that could signal security issues.

Each resource can be in one of the following baseline states:

* Creating – The system is still collecting data to determine the resource’s baseline behavior.
* Stable – The resource’s network activity is predictable and consistent. A resource is considered stable once it has completed 40 runs without baseline changes.
* Unstable – The resource’s network activity is erratic and prone to triggering frequent alerts. If the baseline has changed within the last 20 runs, the resource is classified as unstable.

### Baseline Coverage at StepSecurity <a href="#baseline-coverage-at-stepsecurity" id="baseline-coverage-at-stepsecurity"></a>

StepSecurity applies baseline monitoring to four distinct resource types within your CI/CD environment:

#### **Jobs**

The Jobs tab provides detailed insights into individual pipeline jobs and their external network destinations. You can:

* View each job’s Baseline Status (Stable, Unstable, Creating)
* See the Sample Size that indicates how many runs were used to calculate the baseline. A minimum of 40 runs is required
* Track Baseline Changes to know when and why the baseline last changed
* Access the underlying Pipeline File, and jump directly to Pipeline Runs or Log Samples for investigation

<figure><img src="https://1410514776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdMU7uDytQwFdSykTeAVU%2Fuploads%2FkkKKzEt69a35vsvTrUQd%2FScreenshot%202025-08-26%20at%2022.33.01.png?alt=media&#x26;token=b3921f40-cb79-487d-beaa-b25c1045f760" alt=""><figcaption></figcaption></figure>

**Network Insights per Job**

For each destination contacted by a job, you can view:

* The domain/IP
* Port used (e.g., 443)
* Whether the destination is allowed
* First seen / Last contacted timestamps
* Total number of calls (if available)
* Links to pipeline runs making those calls

#### **Repositories**

The Repositories tab aggregates baseline data across all jobs and pipelines within a specific repository. It offers the same insights as the Jobs tab, but from a repository-wide perspective. This helps identify broader behavioral patterns and anomalies.

<figure><img src="https://1410514776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdMU7uDytQwFdSykTeAVU%2Fuploads%2FXpNbyFlClG2oBlU5jtGU%2FScreenshot%202025-08-26%20at%2022.33.32.png?alt=media&#x26;token=5863be8e-3cfc-4765-a65f-8589c38c55f3" alt=""><figcaption></figcaption></figure>

#### Projects

The Projects tab aggregates baseline data across a specific project.

<figure><img src="https://1410514776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdMU7uDytQwFdSykTeAVU%2Fuploads%2FTQL1O0EqjTwFgasQOUeu%2FScreenshot%202025-08-26%20at%2022.33.50.png?alt=media&#x26;token=73f14687-9e0a-434e-a0f9-5cd07c7545a0" alt=""><figcaption></figcaption></figure>

#### **Azure DevOps Organization**

This view aggregates baseline data across all projects in your Azure DevOps organization. It enables organization-wide monitoring to detect systemic threats or changes.

You can:

* View all external destinations contacted by any project across the organization
* See project counts for each destination
* Detect organization-wide issues, such as unexpected domain access or behavioral shifts

<figure><img src="https://1410514776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdMU7uDytQwFdSykTeAVU%2Fuploads%2Fr2TyBkbZoSylzI6C1gnE%2FScreenshot%202025-08-26%20at%2022.34.12.png?alt=media&#x26;token=f64cf3fe-65bd-46d2-af2f-aa345d724ede" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.stepsecurity.io/azure-devops/harden-runner/baseline.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
