Using glab (GitLab CLI)

VerifiedSafe

Expert guidance for using the GitLab CLI (glab) to manage issues, merge requests, CI/CD pipelines, repositories, and other GitLab operations from the command line.

Sby Skills Guide Bot
DevOpsIntermediate
9507/25/2026
Claude CodeCodexCursor
#gitlab#cli#merge-requests#ci-cd#code-review

Recommended for

Automated summary

Gives guidance for driving GitLab from the terminal with the official glab CLI: merge requests, issues, CI/CD pipelines, and repositories.

Strengths

  • Walks through end-to-end workflows: creating and reviewing MRs, local checkout, approval, and comments
  • Covers authentication, including self-hosted GitLab instances through GITLAB_HOST
  • Documents `glab api` gotchas, notably that pagination goes in the URL query string rather than as flags
  • Encodes good habits: check `glab auth status`, lint CI config before pushing, use `--output=json` for scripting

Limitations

  • Assumes glab is already installed; installation is only handled by deferring to the user
  • Does not cover advanced GitLab administration (permissions, runners, releases) beyond the listed commands
  • The provided document is cut off in its quick-reference section, so some command details may be missing
When to use it

Reach for it whenever a task involves merge requests, issues, pipelines, or a repository hosted on GitLab from the command line.

When not to use it

Skip it when the project lives on GitHub or Bitbucket, or when the user prefers working through the GitLab web UI.

Security analysis

Safe
Quality score92/100

The skill provides legitimate guidance for using the GitLab CLI. It includes authentication via environment variables and API commands, but these are standard practices and not destructive, exfiltrating, or obfuscated. The allowed tools (Bash, Read, Grep, Glob) are used for normal command-line GitLab operations.

No concerns found

How this analysis is made

Examples

Create a merge request with reviewers
Push my current branch and open a GitLab merge request titled 'Add rate limiting' with description 'Implements token bucket', assigned to alice and bob for review, labeled bug and urgent.
Review an MR locally
List the merge requests waiting on my review, check out MR 42 locally so I can run the tests, then approve it and leave a note asking for updated tests.
Debug a failing pipeline
Lint my .gitlab-ci.yml, then check why the pipeline for my branch failed, show me the job logs, and retry the failed jobs.

name: glab description: Expert guidance for using the GitLab CLI (glab) to manage GitLab issues, merge requests, CI/CD pipelines, repositories, and other GitLab operations from the command line. Use this skill when the user needs to interact with GitLab resources or perform GitLab workflows. allowed-tools: Bash, Read, Grep, Glob

GitLab CLI (glab) Skill

Provides guidance for using glab, the official GitLab CLI, to perform GitLab operations from the terminal.

When to Use This Skill

Invoke when the user needs to:

  • Create, review, or manage merge requests
  • Work with GitLab issues
  • Monitor or trigger CI/CD pipelines
  • Clone or manage repositories
  • Perform any GitLab operation from the command line

Prerequisites

Verify glab installation before executing commands:

glab --version

If not installed, inform the user and provide platform-specific installation guidance.

Authentication Quick Start

Most glab operations require authentication:

# Interactive authentication
glab auth login

# Check authentication status
glab auth status

# For self-hosted GitLab
glab auth login --hostname gitlab.example.org

# Using environment variables
export GITLAB_TOKEN=your-token
export GITLAB_HOST=gitlab.example.org  # for self-hosted

Core Workflows

Creating a Merge Request

# 1. Ensure branch is pushed
git push -u origin feature-branch

# 2. Create MR
glab mr create --title "Add feature" --description "Implements X"

# With reviewers and labels
glab mr create --title "Fix bug" --reviewer=alice,bob --label="bug,urgent"

Reviewing Merge Requests

# 1. List MRs awaiting your review
glab mr list --reviewer=@me

# 2. Checkout MR locally to test
glab mr checkout <mr-number>

# 3. After testing, approve
glab mr approve <mr-number>

# 4. Add review comments
glab mr note <mr-number> -m "Please update tests"

Managing Issues

# Create issue with labels
glab issue create --title "Bug in login" --label=bug

# Link MR to issue
glab mr create --title "Fix login" --description "Closes #<issue-number>"

# List your assigned issues
glab issue list --assignee=@me

Monitoring CI/CD

# Watch pipeline in progress
glab pipeline ci view

# Check pipeline status
glab ci status

# View logs if failed
glab ci trace

# Retry failed pipeline
glab ci retry

# Lint CI config before pushing
glab ci lint

Common Patterns

Working Outside Repository Context

When not in a Git repository, specify the repository:

glab mr list -R owner/repo
glab issue list -R owner/repo

Self-Hosted GitLab

Set hostname for all commands:

export GITLAB_HOST=gitlab.example.org
# or per-command
glab repo clone gitlab.example.org/owner/repo

Automation and Scripting

Use JSON output for parsing:

glab mr list --output=json | jq '.[] | .title'

Using the API Command

The glab api command provides direct GitLab API access:

# Basic API call
glab api projects/:id/merge_requests

# IMPORTANT: Pagination uses query parameters in URL, NOT flags
# ❌ WRONG: glab api --per-page=100 projects/:id/jobs
# ✓ CORRECT: glab api "projects/:id/jobs?per_page=100"

# Auto-fetch all pages
glab api --paginate "projects/:id/pipelines/123/jobs?per_page=100"

# POST with data
glab api --method POST projects/:id/issues --field title="Bug" --field description="Details"

Best Practices

  1. Verify authentication before executing commands: glab auth status
  2. Use --help to explore command options: glab <command> --help
  3. Link MRs to issues using "Closes #123" in MR description
  4. Lint CI config before pushing: glab ci lint
  5. Check repository context when commands fail: git remote -v

Common Commands Quick Reference

Merge Requests:

  • glab mr list --assignee=@me - Your assigned MRs
  • glab mr list --reviewer=@me - MRs for you to review
  • glab mr create - Create new MR
  • glab mr checkout <number> - Test MR locally
  • glab mr approve <number> - Approve MR
  • glab mr merge <number> - Merge approved MR

Issues:

  • glab issue list - List all issues
  • glab issue create - Create new issue
  • glab issue close <number> - Close issue

CI/CD:

  • glab pipeline ci view - Watch pipeline
  • glab ci status - Check status
  • glab ci lint - Validate .gitlab-ci.yml
  • glab ci retry - Retry failed pipeline

Repository:

  • glab repo clone owner/repo - Clone repository
  • glab repo view - View repo details
  • glab repo fork - Fork repository

Progressive Disclosure

For detailed command documentation, refer to:

  • references/commands-detailed.md - Comprehensive command reference with all flags and options
  • references/quick-reference.md - Condensed command cheat sheet
  • references/troubleshooting.md - Detailed error scenarios and solutions

Load these references when:

  • User needs specific flag or option details
  • Troubleshooting authentication or connection issues
  • Working with advanced features (API, schedules, variables, etc.)

Common Issues Quick Fixes

"command not found: glab" - Install glab or verify PATH

"401 Unauthorized" - Run glab auth login

"404 Project Not Found" - Verify repository name and access permissions

"not a git repository" - Navigate to repo or use -R owner/repo flag

"source branch already has a merge request" - Use glab mr list to find existing MR

For detailed troubleshooting, load references/troubleshooting.md.

Notes

  • glab auto-detects repository context from Git remote
  • Most commands have --web flag to open in browser
  • Use --output=json for scripting and automation
  • Multiple GitLab accounts can be authenticated simultaneously
  • Commands respect Git configuration and current repository context
Related skills