
glab-runner-controller
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.
- Installs
- 96
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/vince-winkintel/gitlab-cli-skills --skill glab-runner-controller- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads glab-runner-controller automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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 enabled
States:
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
glab runner-controller get 42
glab runner-controller get 42 --output json
Update 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 enabled
Delete Controller
# Delete with confirmation prompt
glab runner-controller delete 42
# Delete without confirmation
glab runner-controller delete 42 --force
Scope Management
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 json
Add 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,10
Remove 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 --force
Note: Older docs/examples may refer to
glab runner-controller runner ...subcommands. The current 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 json
Important: 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 20
3. 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 json
Use 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 --force
When 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 disabled
Troubleshooting
"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
Command Reference
For complete command syntax and all available flags, see:
- references/commands.md
FAQ
What does the glab-runner-controller skill do?
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.
How do I install glab-runner-controller?
Run npx skills add https://github.com/vince-winkintel/gitlab-cli-skills --skill glab-runner-controller in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/glab-runner-controller/ (personal) or .claude/skills/glab-runner-controller/ (project).
Which AI agents can use glab-runner-controller?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is glab-runner-controller safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains glab-runner-controller?
It is published by vince-winkintel in vince-winkintel/gitlab-cli-skills. It has 96 recorded installs.
More from vince-winkintel/gitlab-cli-skills
gitlab-cli-skills
vince-winkintel/gitlab-cli-skills
Comprehensive GitLab CLI (glab) command reference and workflows for all GitLab operations via terminal. Use when user mentions GitLab CLI, glab commands, GitLab automation, MR/issue management via CLI, CI/CD pipeline commands, Artifact Registry token exchange, repo operations, authentication setup, or any GitLab terminal operations. Routes to specialized sub-skills for auth, CI, MRs, issues, releases, repos, and 30+ other glab commands. Triggers on glab, GitLab CLI, GitLab commands, GitLab terminal, GitLab automation.
glab-mr
vince-winkintel/gitlab-cli-skills
Open the skill to read its SKILL.md instructions.
glab-ci
vince-winkintel/gitlab-cli-skills
Open the skill to read its SKILL.md instructions.
glab-api
vince-winkintel/gitlab-cli-skills
Open the skill to read its SKILL.md instructions.
glab-auth
vince-winkintel/gitlab-cli-skills
Open the skill to read its SKILL.md instructions.
glab-issue
vince-winkintel/gitlab-cli-skills
Open the skill to read its SKILL.md instructions.
Popular other skills
hyperframes-cli
heygen-com/hyperframes
The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.
triage
mattpocock/skills
Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.
ask-matt
mattpocock/skills
Ask which skill or flow fits your situation. A router over the skills in this repo.
to-questionnaire
mattpocock/skills
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
loop-me
mattpocock/skills
Grill me about specs for the workflows I want to build, within this workspace.