glab-runner-controller
Skill1 starsChanged 7 months agoMITView on GitHub
Manage GitLab runner controllers and authentication tokens. Create, inspect, update, delete controllers; manage scopes; and generate, rotate, and revoke tokens. Admin-only experimental feature for managing runner controller lifecycle. Triggers on runner controller, controller token, controller scope, experimental runner, admin runner.
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 11 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Use at your own risk
- Distinctive: line 21
Create and configure runner controllers
- Distinctive: line 202
Revoke immediately: when compromised
- Distinctive: line 219
Verify you're authenticated as an admin user
- Very specific: line 220
Check glab auth status to confirm current user
- Very specific: line 223
Verify controller ID with glab runner-controller list
- Distinctive: line 225
Check if you have access to the correct GitLab instance
- Distinctive: line 228
Ensure controller exists and is enabled
- Distinctive: line 230
Check GitLab instance version (experimental features may require recent versions)
- Distinctive: line 234
Wait 10-30 seconds and test again
- Distinctive: line 235
Check controller state (disabled controllers don't enforce token validation)
- Distinctive: line 238
Check if controller has active runners
- Very specific: line 240
Use --force to override (⚠️ destructive)
- Very specific: line 243
Verify glab version: glab version (requires a recent glab build)
- Distinctive: line 244
Check if feature flag is enabled on GitLab instance
≈ “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-controller
Manage GitLab runner controllers and their authentication tokens.
⚠️ Experimental Feature
Status: EXPERIMENTAL (Admin-only)
- This feature may be broken or removed without prior notice
- Use at your own risk
- Requires GitLab admin privileges
- See: https://docs.gitlab.com/policy/development_stages_support/
What It Does
Runner controllers manage the orchestration of GitLab Runners in your infrastructure. This skill provides commands to:
- Create and configure runner controllers
- Inspect controller details and connection status
- Manage controller lifecycle (list, get, update, delete)
- Manage controller scopes (instance-level or runner-level)
- Generate and rotate authentication tokens
- Revoke compromised tokens
Common Workflows
Create Runner Controller
# Create with default settings
glab runner-controller create
# Create with description
glab runner-controller create --description "Production runners"
# Create enabled controller
glab runner-controller create --description "Prod" --state enabledStates:
disabled- Controller exists but inactiveenabled- Controller is active (default)dry_run- Test mode (no actual runner execution)
List and View Controllers
# List all controllers
glab runner-controller list
# List with pagination
glab runner-controller list --page 2 --per-page 50
# Output as JSON
glab runner-controller list --output json
# Get one controller with status details (v1.90.0+)
glab runner-controller get 42
glab runner-controller get 42 --output jsonUpdate Controller
# Update description
glab runner-controller update 42 --description "Updated name"
# Change state
glab runner-controller update 42 --state disabled
# Update both
glab runner-controller update 42 --description "Prod" --state enabledDelete Controller
# Delete with confirmation prompt
glab runner-controller delete 42
# Delete without confirmation
glab runner-controller delete 42 --forceScope Management (v1.90.0+)
Runner controller scopes determine what the controller is allowed to evaluate.
List Scopes
# List all scopes for controller 42
glab runner-controller scope list 42
# JSON output
glab runner-controller scope list 42 --output jsonAdd Scopes
# Allow the controller to evaluate all instance runners
glab runner-controller scope create 42 --instance
# Allow the controller to evaluate a specific runner
glab runner-controller scope create 42 --runner 5
# Add multiple runner scopes
glab runner-controller scope create 42 --runner 5 --runner 10
glab runner-controller scope create 42 --runner 5,10Remove Scopes
# Remove the instance-level scope
glab runner-controller scope delete 42 --instance
# Remove a specific runner-level scope
glab runner-controller scope delete 42 --runner 5 --forceNote: Older docs/examples may refer to
glab runner-controller runner ...subcommands. In v1.90.0, the user-facing surface isglab runner-controller scope ...plusglab runner-controller get.
Token Management Workflows
Token Lifecycle
Create → Rotate → Revoke is the typical token lifecycle for security best practices.
1. Create Token
# Create token for controller 42
glab runner-controller token create 42
# Create with description
glab runner-controller token create 42 --description "production"
# Output as JSON (for automation)
glab runner-controller token create 42 --output jsonImportant: Save the token value immediately - it's only shown once at creation.
2. List Tokens
# List all tokens for controller 42
glab runner-controller token list 42
# List as JSON
glab runner-controller token list 42 --output json
# Paginate
glab runner-controller token list 42 --page 1 --per-page 203. Rotate Token
Rotation generates a new token and invalidates the old one.
# Rotate token 1 (with confirmation)
glab runner-controller token rotate 42 1
# Rotate without confirmation
glab runner-controller token rotate 42 1 --force
# Rotate and output as JSON
glab runner-controller token rotate 42 1 --force --output jsonUse cases:
- Scheduled rotation (security policy compliance)
- Token compromise response
- Key rotation before employee departure
4. Revoke Token
# Revoke token 1 (with confirmation)
glab runner-controller token revoke 42 1
# Revoke without confirmation
glab runner-controller token revoke 42 1 --forceWhen to revoke:
- Token compromised or leaked
- Controller decommissioned
- Access no longer needed
Token Security Best Practices
- Rotate regularly - Set up scheduled rotation (e.g., every 90 days)
- Use descriptions - Track token purpose and owner
- Revoke immediately when compromised
- Never commit tokens to version control
- Use
--output jsonfor automation (parse token value securely)
Decision Tree: Controller State Selection
Do you need the controller active?
├─ Yes → --state enabled
├─ Testing configuration? → --state dry_run
└─ No (maintenance/setup) → --state disabledTroubleshooting
"Permission denied" or "403 Forbidden":
- Runner controller commands require GitLab admin privileges
- Verify you're authenticated as an admin user
- Check
glab auth statusto confirm current user
"Runner controller not found":
- Verify controller ID with
glab runner-controller list - Controller may have been deleted
- Check if you have access to the correct GitLab instance
Token creation fails:
- Ensure controller exists and is enabled
- Verify admin privileges
- Check GitLab instance version (experimental features may require recent versions)
Token rotation shows old token still works:
- Token invalidation may take a few seconds to propagate
- Wait 10-30 seconds and test again
- Check controller state (disabled controllers don't enforce token validation)
Cannot delete controller:
- Check if controller has active runners
- May need to decommission runners first
- Use
--forceto override (⚠️ destructive)
Experimental feature not available:
- Verify glab version:
glab version(requires a recent glab build) - Check if feature flag is enabled on GitLab instance
- Confirm GitLab instance version supports runner controllers
Related Skills
CI/CD & Runners:
glab-ci- View and manage CI/CD pipelines and jobsglab-job- Retry, cancel, view logs for individual jobsglab-runner- Manage individual runners (list, assign, jobs, managers, update, delete)
Repository Management:
glab-repo- Manage repositories (runner controllers are instance-level)
Authentication:
glab-auth- Login and authentication management
v1.90.0 Changes
- Added
glab runner-controller get <controller-id>— inspect one controller and its connection status - Reworked scope management under
glab runner-controller scope list|create|delete - Older
glab runner-controller runner ...scope examples should be treated as pre-v1.90.0 guidance
Command Reference
For complete command syntax and all available flags, see:
- references/commands.md
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- vince-winkintel/gitlab-cli-skills★ 4998% same
- cormacc/dotagents★ 198% 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-runnerSkill
- 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.

