self-hosted-runner-security-overview

Harden self-hosted GitHub Actions runners with ephemeral execution and strict isolation.

3|3|Updated Jan 4, 2026
One-click install
npx skills add https://github.com/adaptive-enforcement-lab/claude-skills --skill self-hosted-runner-security-overview
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: self-hosted-runner-security-overview
Source: https://github.com/adaptive-enforcement-lab/claude-skills/tree/main/plugins/secure/skills/self-hosted-runner-security-overview
Command: npx skills add https://github.com/adaptive-enforcement-lab/claude-skills --skill self-hosted-runner-security-overview

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Self-hosted GitHub Actions runners pose persistent access risks and misconfigurations; this Skill provides a defensive threat model and hardening guidance to reduce the attack surface.

Core Features & Use Cases

  • Ephemeral Execution: Ensure per-job freshness to prevent persistence across jobs.
  • Network Isolation: Recommend isolated networks and deny-by-default policies for production resources.
  • Least Privilege & Auditing: Per-job credentials, IAM restrictions, and comprehensive logging for forensics.
  • Use Case: Teams running internal CI workflows with external PRs can securely deploy ephemeral runners that wipe state after each run.

Quick Start

Deploy ephemeral, container-based runners with per-job credentials and strict network isolation to minimize risk during CI jobs.

Frequently Asked Questions about self-hosted-runner-security-overview

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I secure self-hosted GitHub Actions runners for internal CI workflows?

Secure self-hosted GitHub Actions runners by deploying ephemeral container-based instances with per-job credentials and strict network isolation to wipe state after each run and minimize attack surface.

What are the security risks of using persistent self-hosted runners?

Persistent self-hosted runners pose risks of unauthorized access and misconfigurations that allow malicious persistence across jobs. Ephemeral execution prevents state carryover to mitigate these threats.

How do I configure OIDC for per-job credentials in GitHub Actions?

Configure OIDC for per-job credentials to enforce least privilege by issuing temporary tokens scoped to individual jobs. This restricts IAM access and prevents credential reuse across runner executions.

Does this approach work for organizations deploying runners with external PRs?

Yes, this approach specifically secures teams running internal CI workflows with external PRs. Ephemeral runtimes ensure fresh states for each job, safely handling untrusted external code contributions.

What is the best way to isolate networks for self-hosted runners?

The best way to isolate networks for self-hosted runners is applying deny-by-default policies for production resources. This strict network isolation limits lateral movement and unauthorized access.

Why do I need audit logging for ephemeral GitHub Actions runners?

Audit logging for ephemeral GitHub Actions runners provides comprehensive records for forensic analysis. It tracks per-job credential usage and execution events to detect anomalies and maintain security visibility.