Skip to main content
Understand how GitHub Actions self-hosted runners organize files into _diag/ (diagnostics) and _work/ (workflow workspace). This guide helps you troubleshoot connectivity, inspect logs, and debug live jobs.

Table of Contents

  1. Starting the Runner
  2. Diagnostic Directory (_diag/)
  3. Workflow Workspace (_work/)
  4. Running a Long-Running Workflow
  5. Inspecting Pipeline Mapping
  6. Exploring the _temp Folder
  7. Runner File Commands
  8. Live Diagnostics
  9. Cleanup and Termination

1. Starting the Runner

Launch the runner process in one shell:
Expected output:
Verify the runner directories:

2. Diagnostic Directory (_diag/)

This folder contains runner and worker logs:
Check pages/ for connectivity, authentication, or execution errors.
Sample entry:

3. Workflow Workspace (_work/)

Populated when jobs run, this directory includes repository checkouts, temp scripts, and tools:

4. Running a Long-Running Workflow

To inspect _work/ mid-run, add a sleep in your workflow:
Trigger manually. Logs will show:
While the job sleeps, list _work/ again:

5. Inspecting Pipeline Mapping

PipelineFolder.json maps repo metadata to local paths:

6. Exploring the _temp Folder

Each step’s commands and metadata live here:
View the generated script:

7. Runner File Commands

Actions communicate with the runner via file commands stored under _runner_file_commands:
These contain directives like ::add-path::… and ::set-env::….

8. Live Diagnostics

Tail worker logs for real-time monitoring:
Watch for execution steps, container pulls, or authentication events as they occur.

9. Cleanup and Termination

After troubleshooting, stop the runner:
Verify it’s no longer running:

Watch Video