# Pipeline Runs

This page provides detailed runtime insights for your GitLab CI pipelines, helping you monitor pipeline activity and detect anomalies in real time.

You can view the total number of pipeline runs observed for each project.

* Navigate to **Pipeline Runs** in the sidebar.
* Each project displays the total number of runs.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FV0Uzprsy4EPFkDfoStMt%2FScreenshot%202025-06-12%20at%2010.26.38.png?alt=media&#x26;token=281048cd-f2c9-4f8a-b10b-616f67d414f4" alt=""><figcaption></figcaption></figure>

* Click **Pipeline Runs** next to a project to see detailed job history.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FOYefMrKmeRWl2WCyUVcv%2FScreenshot%202025-06-13%20at%2016.00.08.png?alt=media&#x26;token=605e063c-e873-4259-be43-a448150f73b7" alt=""><figcaption></figcaption></figure>

### Features Available in Harden-Runner <a href="#features-available-in-harden-runner" id="features-available-in-harden-runner"></a>

* View outbound network traffic at the project level
* Detect anomalous outbound network traffic
* Filter outbound network traffic to allowed endpoints
* Detect tampering of source code during build
* View baseline status at project level
* View process name and arguments

#### View outbound network traffic at the job level <a href="#view-outbound-network-traffic-at-the-job-level" id="view-outbound-network-traffic-at-the-job-level"></a>

Harden-Runner monitors all outbound traffic from each project at the DNS and network layers

* To access this feature switch to the `Network Events` tab on your Project Insights page
* On this page you can see:
  * The process
  * PID
  * Destination
  * Port
  * Status
  * Timestamp

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FamlvpOR97Fyw2fKvxZ45%2FScreenshot%202025-06-12%20at%2011.02.52.png?alt=media&#x26;token=49f2fdeb-d76f-48b2-bc0a-98a79ceeae1b" alt=""><figcaption></figcaption></figure>

* You can click the PID to view the process arguments. You can walk up the process tree to analyze parent-child relationships, helping you detect suspicious activity and understand how processes interact.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2F4T0CT5H7aTKSRiMUzIPp%2FScreenshot%202025-06-12%20at%2011.04.43.png?alt=media&#x26;token=2d5fd076-c929-443b-8150-3ba4360acc58" alt=""><figcaption></figcaption></figure>

#### Detect anomalous outbound network traffic <a href="#detect-anomalous-outbound-network-traffic" id="detect-anomalous-outbound-network-traffic"></a>

Harden-Runner applies machine learning to historical workflow data to detect anomalies.

* Baseline requires 100 pipeline runs to be created.
* After the baseline is set, any outbound traffic to unknown destinations will be flagged.
* Alerts appear in the **Insights** and **Detections** pages.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FL1849UtPMh6TJ4goNLez%2FScreenshot%202025-06-13%20at%2015.21.15.png?alt=media&#x26;token=48e3d83f-c1fa-4bf2-ba2e-92314b8b1d52" alt=""><figcaption></figcaption></figure>

* You can view the list of all anomalous outbound network traffic in the `Detections` page on the dashboard

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FY6DZ48L9kKhlEpe1Pkl2%2FScreenshot%202025-06-13%20at%2015.24.14.png?alt=media&#x26;token=98112b66-2911-417f-b3db-7fc3283d5c92" alt=""><figcaption></figcaption></figure>

For more details, refer to [Anomalous Outbound Call Detection Using Machine Learning](https://www.stepsecurity.io/blog/announcing-anomalous-outbound-call-detection-using-machine-learning)

#### Filter outbound network traffic to allowed endpoints <a href="#filter-outbound-network-traffic-to-allowed-endpoints" id="filter-outbound-network-traffic-to-allowed-endpoints"></a>

You can specify an allowlist in your `.gitlab-ci.yml` file for self-hosted runners. Any endpoint not on the list will be blocked.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FcnFcovIq8WxkrE5beFpK%2FScreenshot%202025-06-13%20at%2015.36.48.png?alt=media&#x26;token=de01a60d-0090-4f7a-9161-87514cc6ea5f" alt=""><figcaption></figcaption></figure>

When this pipeline is run attacker.com will be blocked because it is not part of the allowlist

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2F96inn8p2e9BFX9tjd9nT%2FScreenshot%202025-06-13%20at%2015.38.39.png?alt=media&#x26;token=61a9c4ae-5885-465b-b948-0c32cce998c4" alt=""><figcaption></figcaption></figure>

#### Detect tampering of source code during build

Harden-Runner monitors file writes and detects if any source code files are overwritten during a build.

**Why is this important?**

* Source code overwrites are unexpected in a release build.
* All source code files are monitored, including infrastructure-as-code (IaC) files such as Kubernetes manifests and Terraform configurations.
* Notifications can be enabled to receive alerts when source code modifications occur.
* No additional changes are needed for self-hosted runners to enable file monitoring.

**How to Detect Source Code Overwrites**

* Click on the workflow insights
* Go to the `File Write Events` tab
* You’ll see a list of overwritten files, including their paths and timestamps.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FEdt1xlVUKQiYfRqnpyfg%2FScreenshot%202025-06-13%20at%2015.44.56.png?alt=media&#x26;token=2615b4ce-5563-476b-b46e-5d77e3ddb621" alt=""><figcaption></figcaption></figure>

* Identify the file and its path.
* Review the detection timestamp for when the overwrite occurred.
* If unexpected, trigger a security review or rollback to a safe commit.

#### View baseline status at the project level <a href="#view-baseline-status-at-the-job-level" id="view-baseline-status-at-the-job-level"></a>

To assess the stability of a project network behavior, you can use the Baseline feature

A Baseline is created after 100 pipeline runs

**How to Access**

Navigate to the `Baseline` tab under the Pipeline runs

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FRcgmJBUztwnQfRutQfrJ%2FScreenshot%202025-06-13%20at%2015.49.33.png?alt=media&#x26;token=344ad603-2175-4b1d-8e04-d745327935e4" alt=""><figcaption></figcaption></figure>

The baseline stability status indicates whether a job is making predictable or unpredictable network calls. This is crucial for determining the reliability of detections from that job.

**Baseline Status Categories**

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

* Creating – The system is still collecting data to determine the job’s baseline behavior.
* Stable – The job’s network activity is predictable and consistent.
* Unstable – The job’s network activity is erratic and prone to triggering frequent alerts.

You can view the changelog to see when last the baseline changed and what made it to change

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FbkKu5dzhczJW6omU2fOr%2FScreenshot%202025-06-13%20at%2015.51.18.png?alt=media&#x26;token=94df7195-988a-43d2-ba1f-5b1fca803fe9" alt=""><figcaption></figcaption></figure>

#### View process name and arguments

Get deeper visibility into your CI/CD workflows by viewing all executed process names, Process IDs (PIDs), and process arguments within your environment. This capability is especially useful for forensics and incident response, allowing you to understand what ran and why.

To access this feature switch to the `Process Events` tab on your Insights page

**How it Works**

* Harden-Runner tracks every process that is run during the build process.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2F5Fqhna69F26ZqrlEaw1U%2FScreenshot%202025-10-07%20at%2020.30.56.png?alt=media&#x26;token=f15e58d5-11a9-40a9-9931-8ac3a69b1674" alt=""><figcaption></figcaption></figure>

* Clicking on any process ID (PID) in the process events shows the process that caused the event, along with the process arguments.

<figure><img src="https://1581953963-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYFxETuN91qNPkGoCUqeM%2Fuploads%2FbdquoTb8vmir4hFbvwel%2FScreenshot%202025-10-07%20at%2020.33.09.png?alt=media&#x26;token=01bcac77-ada8-4f32-8e5b-e615e73dac10" alt=""><figcaption></figcaption></figure>
