mcpField
G
glab-runner

glab-runner

github.com/vince-winkintelCloud & DevOps49110 installsUpdated 1d ago
Repository

About glab-runner

A command-line skill for managing GitLab CI/CD runners. It covers listing and inspecting runners, changing their state, assigning them to projects, and deleting them.

Key features

  1. 01List project and instance runners
  2. 02Pause or resume runners
  3. 03Inspect runner jobs and managers
  4. 04Assign or unassign project runners
  5. 05Delete runners

Use cases

  1. 01Pausing a runner for maintenance
  2. 02Checking jobs before changing runner state
  3. 03Associating a runner with a project
  4. 04Removing a runner that is no longer needed

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/vince-winkintel/gitlab-cli-skills --skill glab-runner

After installing, type/glab-runnerin Claude Code to confirm it loaded.

Details

From the project README

glab runner

Manage GitLab CI/CD runners from the command line.

Quick Start

# List runners for current project
glab runner list

# Pause a runner
glab runner update <runner-id> --pause

# Delete a runner
glab runner delete <runner-id>

Common Workflows

List Runners
# List all runners for current project
glab runner list

# List for a specific project
glab runner list --repo owner/project

# List all runners (instance-level, admin only)
glab runner list --instance

# Output as JSON
glab runner list --output json

# Paginate
glab runner list --page 2 --per-page 50

Sample JSON output parsing:

# Find all paused runners
glab runner list --output json | python3 -c "
import sys, json
runners = json.load(sys.stdin)
paused = [r for r in runners if r.get('paused')]
for r in paused:
    print(f"{r['id']}: {r.get('description','(no description)')} — {r.get('status')}")
"
Pause or Resume a Runner

Pausing a runner prevents it from picking up new jobs without removing it.

# Pause runner 123
glab runner update 123 --pause

# Resume a paused runner
glab runner update 123 --unpause

# Pause in a specific project context
glab runner update 123 --pause -R owner/project

When to pause:

  • Maintenance window (updates, reboots)
  • Investigating a failing runner
  • Temporarily reducing runner capacity
  • Before decommissioning (verify no jobs are running first)

Note: Older docs/examples may mention glab runner pause, but the supported command surface uses glab runner update --pause / --unpause.

Inspect Jobs Processed by a Runner
# List recent jobs for runner 9
glab runner jobs 9

# Show only running jobs
glab runner jobs 9 --status running

# JSON output for automation
glab runner jobs 9 --output json

Useful for checking whether a runner is currently busy before pausing or deleting it.

Inspect Runner Managers
# List managers attached to a runner
glab runner managers 9

# JSON output
glab runner managers 9 --output json

Use this when you need to understand which runner manager processes/backends are associated with a runner.

Delete a Runner
# Delete with confirmation prompt
glab runner delete 123

# Delete without confirmation
glab runner delete 123 --force

# Delete in a specific project context
glab runner delete 123 --repo owner/project

⚠️ Deletion is permanent. Pause first if unsure.

Decision Tree: Pause vs Delete

Do you need the runner gone permanently?
├─ No → Pause it (recoverable)
└─ Yes → Is it actively running jobs?
          ├─ Yes → Check `glab runner jobs <id>`, then pause first and wait for jobs to finish
          └─ No → Delete with --force

Runner Status Reference

StatusMeaning
onlineConnected and ready to accept jobs
offlineNot connected (check runner process)
pausedConnected but not accepting new jobs
staleNo contact in the last 3 months

Troubleshooting

"runner: command not found":

  • Requires a current glab release. Check with glab version.

"Permission denied" on instance-level runners:

  • Instance-level runner management requires GitLab admin privileges.
  • Project runners can be managed by project maintainers.

Runner won't pause or unpause:

  • Verify runner ID with glab runner list.
  • Check permissions (must be at least Maintainer on the project).
  • Use glab runner update <id> --pause or --unpause.

Runner stuck "online" after pause:

  • The runner process is still running on the host — it just won't accept new jobs.
  • This is expected. To fully stop, SSH into the runner host and stop the process.

Cannot delete runner:

  • Runner may be shared/group-level (requires higher privileges).
  • Check if runner is assigned to multiple projects; removing from one project may require project-level deletion vs instance-level.
Assign / Unassign Runners to Projects

Assign an existing runner to a project so it can pick up jobs:

# Assign a runner to the current project
glab runner assign <runner-id>

# Assign to a specific project
glab runner assign <runner-id> --repo owner/project

Remove a runner from a project (does not delete the runner):

# Unassign from current project
glab runner unassign <runner-id>

# Unassign from a specific project
glab runner unassign <runner-id> --repo owner/project

Note: Assigning/unassigning requires at least Maintainer role on the project. This is different from glab runner delete which permanently removes the runner.

Related Skills

  • glab-runner-controller — Manage runner controllers and orchestration (admin-only, experimental)
  • glab-ci — View and manage CI/CD pipelines and jobs
  • glab-job — Retry, cancel, trace logs for individual jobs

Command Reference

glab runner <command> [--flags]

Commands:
  assign    Assign a runner to a project
  delete    Delete a runner
  jobs      List jobs processed by a runner
  list      Get a list of runners available to the user
  managers  List runner managers
  unassign  Unassign a runner from a project
  update    Update runner settings, including pause/unpause

Flags (list):
  --instance     List all runners available to the user (instance scope)
  --output       Format output as: text, json
  --page         Page number
  --per-page     Number of items per page
  --repo         Select a repository
  -h, --help     Show help

Comments

Markdown supported