glab-runner
Skill1 starsChanged 7 months agoMITView on GitHub
Manage GitLab CI/CD runners — list, assign, unassign, inspect recent jobs and managers, pause/unpause via update, and delete runners at project, group, or instance level. Use when viewing runner status, assigning runners to projects, checking what jobs a runner handled, seeing manager processes, temporarily pausing a runner, or removing a decommissioned runner. Triggers on runner, glab runner, list runners, assign runner, unassign runner, runner jobs, runner managers, pause runner, unpause runner, delete runner, CI runner.
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 77
Before decommissioning (verify no jobs are running first)
- Distinctive: line 106
Use this when you need to understand which runner manager processes/backends are associated with a runner.
- Very specific: line 152
Verify runner ID with glab runner list.
- Distinctive: line 153
Check permissions (must be at least Maintainer on the project).
- Very specific: line 154
Use glab runner update <id> --pause or --unpause.
- Distinctive: line 162
Check if runner is assigned to multiple projects.
- Distinctive: line 176
Remove a runner from a project (does not delete the runner):
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
glab runner
Manage GitLab CI/CD runners from the command line.
Added in glab v1.87.0
Quick Start
# List runners for current project
glab runner list
# Pause a runner (v1.90.0+: via update)
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 --all
# Output as JSON
glab runner list --output json
# Paginate
glab runner list --page 2 --per-page 50Sample 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 (v1.90.0+)
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/projectWhen 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 in v1.90.0 the supported command surface usesglab runner update --pause/--unpause.
Inspect Jobs Processed by a Runner (v1.90.0+)
# 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 jsonUseful for checking whether a runner is currently busy before pausing or deleting it.
Inspect Runner Managers (v1.90.0+)
# List managers attached to a runner
glab runner managers 9
# JSON output
glab runner managers 9 --output jsonUse 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 --forceRunner Status Reference
| Status | Meaning |
online | Connected and ready to accept jobs |
offline | Not connected (check runner process) |
paused | Connected but not accepting new jobs |
stale | No contact in the last 3 months |
Troubleshooting
"runner: command not found":
- Requires glab v1.87.0+. 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> --pauseor--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 (v1.88.0+)
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/projectRemove 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/projectNote: 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 jobsglab-job— Retry, cancel, trace logs for individual jobs
v1.90.0 Changes
- Added
glab runner jobs <runner-id>— list jobs processed by a runner - Added
glab runner managers <runner-id>— list runner managers - Added
glab runner update <runner-id> --pause|--unpause— pause or resume a runner
v1.88.0 Changes
- Added
glab runner assign <runner-id>— assign a runner to a project - Added
glab runner unassign <runner-id>— unassign a runner from a project
Command Reference
glab runner <command> [--flags]
Commands:
assign Assign a runner to a project (v1.88.0+)
delete Delete a runner
jobs List jobs processed by a runner (v1.90.0+)
list Get a list of runners available to the user
managers List runner managers (v1.90.0+)
unassign Unassign a runner from a project (v1.88.0+)
update Update runner settings, including pause/unpause (v1.90.0+)
Flags (list):
--all List all runners (instance-level, admin only)
--output Format output as: text, json
--page Page number
--per-page Number of items per page
--repo Select a repository
-h, --help Show helpOther versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- vince-winkintel/gitlab-cli-skills★ 4977% same
- cormacc/dotagents★ 191% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository52 other files it gives its agents.
- gh-cliSkill
- glab-aliasSkill
- glab-apiSkill
- glab-attestationSkill
- glab-authSkill
- glab-changelogSkill
- glab-check-updateSkill
- glab-ciSkill
- glab-clusterSkill
- glab-completionSkill
- glab-configSkill
- glab-deploy-keySkill
- glab-duoSkill
- glab-gpg-keySkill
- glab-helpSkill
- glab-incidentSkill
- glab-issueSkill
- glab-iterationSkill
- glab-jobSkill
- glab-labelSkill
- glab-mcpSkill
- glab-milestoneSkill
- glab-mrSkill
- glab-opentofuSkill
- glab-quick-actionsSkill
- glab-releaseSkill
- glab-repoSkill
- glab-runner-controllerSkill
- glab-scheduleSkill
- glab-securefileSkill
- glab-snippetSkill
- glab-ssh-keySkill
- glab-stackSkill
- glab-todoSkill
- glab-tokenSkill
- glab-userSkill
- glab-variableSkill
- glab-versionSkill
- glab-workitemsSkill
- gitlab-cli-skillsSkill
- ui-color-palette-audit-paletteSkill
- ui-color-palette-build-color-systemSkill
- ui-color-palette-figmaSkill
- ui-color-palette-framerSkill
- ui-color-palette-generate-codeSkill
- ui-color-palette-generate-semantic-codeSkill
- ui-color-palette-generate-source-colorsSkill
- ui-color-palette-helpSkill
- ui-color-palette-manage-palettesSkill
- ui-color-palette-penpotSkill
- ui-color-palette-scale-paletteSkill
- ui-color-palette-sketchSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

