id = "glab"
name = "GitLab CLI"
homepage = "https://gitlab.com/gitlab-org/cli"
description = "A command line tool bringing GitLab to your terminal."
icon = "theSVG:gitlab"
executables = ["glab"]
[dotfiles]
paths = [
"~/.config/glab-cli/config.yml",
"[appData]/glab-cli/config.yml",
"%LOCALAPPDATA%/glab-cli/config.yml",
]
secret = []
side_effect = false
[[dotfiles.secret_paths]]
file = ["~/.config/glab-cli/config.yml", "[appData]/glab-cli/config.yml", "%LOCALAPPDATA%/glab-cli/config.yml"]
match = { key_path = ["hosts.*.token"] }
[commands]
format = 1
label = "GitLab CLI"
description = "Work with GitLab from the terminal. Pick a subcommand: create a merge request, create an issue, or check pipeline status. Other subcommands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true }
[[commands.subcommand]]
path = ["mr", "create"]
label = "Create a merge request"
description = "Create a merge request from the current branch (or another source branch). Templates, attachments and recovery are left out."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://docs.gitlab.com/cli/mr/create/"
revision = "main 2026-10-27"
evidence = """
glab mr create [flags]
-a, --assignee usernames Assign merge request to people by their usernames.
-d, --description string Supply a description for the merge request. Set to "-" to open an editor.
--draft Mark merge request as a draft.
-f, --fill Do not prompt for title or description, and just use commit info. Pushes the branch unless --push=false is set.
-l, --label strings Add label by name. Multiple labels can be comma-separated or specified by repeating the flag.
-m, --milestone string The global ID or title of a milestone to assign.
--remove-source-branch Remove source branch on merge.
--reviewer usernames Request review from users by their usernames.
-s, --source-branch string Create a merge request from this branch. Default is the current branch.
-b, --target-branch string The target or base branch into which you want your code merged into.
-t, --title string Supply a title for the merge request.
-w, --web Continue merge request creation in a browser.
-y, --yes Skip submission confirmation prompt. Use --fill to skip all optional prompts.
"""
[[commands.subcommand.field]]
id = "title"
label = "Title"
type = "string"
option = ["--title", "-t"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "description"
label = "Description"
type = "string"
option = ["--description", "-d"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "fill"
label = "Fill from commits"
type = "boolean"
option = ["--fill", "-f"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "draft"
label = "Draft"
type = "boolean"
option = ["--draft"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "target_branch"
label = "Target branch"
type = "string"
option = ["--target-branch", "-b"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "source_branch"
label = "Source branch"
type = "string"
option = ["--source-branch", "-s"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "assignee"
label = "Assignees"
description = "Comma-separated usernames."
type = "string"
option = ["--assignee", "-a"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "reviewer"
label = "Reviewers"
description = "Comma-separated usernames."
type = "string"
option = ["--reviewer"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "label"
label = "Labels"
description = "Comma-separated label names."
type = "string"
option = ["--label", "-l"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "milestone"
label = "Milestone"
type = "string"
option = ["--milestone", "-m"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "remove_source_branch"
label = "Remove source branch on merge"
type = "boolean"
option = ["--remove-source-branch"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "web"
label = "Continue in browser"
type = "boolean"
option = ["--web", "-w"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "yes"
label = "Skip confirmation"
type = "boolean"
option = ["--yes", "-y"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "fill"
label = "Create from commits"
fields = ["fill", "draft", "label", "yes"]
required = ["fill"]
set = { fill = [true] }
[[commands.subcommand.task]]
id = "explicit"
label = "Create with title"
fields = ["title", "description", "target_branch", "assignee"]
required = ["title"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["title", "description", "fill", "draft", "target_branch", "source_branch", "yes"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["assignee", "reviewer", "label", "milestone", "remove_source_branch", "web"]
[[commands.subcommand]]
path = ["issue", "create"]
label = "Create an issue"
description = "Create an issue in the current project. Templates, attachments, linking and time tracking are left out."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://docs.gitlab.com/cli/issue/create/"
revision = "main 2026-10-27"
evidence = """
glab issue create [flags]
-a, --assignee usernames Assign issue to people by their usernames.
-c, --confidential Set an issue to be confidential.
-d, --description string Issue description. Set to "-" to open an editor.
--due-date string A date in 'YYYY-MM-DD' format.
-l, --label strings Add label by name. Multiple labels can be comma-separated or specified by repeating the flag.
-m, --milestone string The global ID or title of a milestone to assign.
-t, --title string Issue title.
--web Continue issue creation with web interface.
-w, --weight int Issue weight. Valid values are greater than or equal to 0.
-y, --yes Don't prompt for confirmation to submit the issue.
"""
[[commands.subcommand.field]]
id = "title"
label = "Title"
type = "string"
option = ["--title", "-t"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "description"
label = "Description"
type = "string"
option = ["--description", "-d"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "label"
label = "Labels"
description = "Comma-separated label names."
type = "string"
option = ["--label", "-l"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "assignee"
label = "Assignees"
description = "Comma-separated usernames."
type = "string"
option = ["--assignee", "-a"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "milestone"
label = "Milestone"
type = "string"
option = ["--milestone", "-m"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "confidential"
label = "Confidential"
type = "boolean"
option = ["--confidential", "-c"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "due_date"
label = "Due date"
description = "YYYY-MM-DD."
type = "string"
option = ["--due-date"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "weight"
label = "Weight"
type = "integer"
option = ["--weight", "-w"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "web"
label = "Continue in browser"
type = "boolean"
option = ["--web"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "yes"
label = "Skip confirmation"
type = "boolean"
option = ["--yes", "-y"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "create"
label = "Create issue"
fields = ["title", "description", "label", "yes"]
required = ["title"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["title", "description", "label", "assignee", "milestone", "yes"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["confidential", "due_date", "weight", "web"]
[[commands.subcommand]]
path = ["ci", "status"]
label = "Pipeline status"
description = "View the status of the pipeline for a branch."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://docs.gitlab.com/cli/ci/status/"
revision = "main 2026-10-27"
evidence = """
glab ci status [flags]
-b, --branch string Check pipeline status for a branch. Defaults to the current branch.
-c, --compact Show status in compact format.
-l, --live Show status in real time until the pipeline ends.
-F, --output string Format output as: text, json.
-w, --wait Wait to return until the pipeline is finished, and provide output without a prompt.
"""
[[commands.subcommand.field]]
id = "branch"
label = "Branch"
type = "string"
option = ["--branch", "-b"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "live"
label = "Live updates"
type = "boolean"
option = ["--live", "-l"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "wait"
label = "Wait for pipeline to finish"
type = "boolean"
option = ["--wait", "-w"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "compact"
label = "Compact view"
type = "boolean"
option = ["--compact", "-c"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "output"
label = "Output format"
type = "enum"
option = ["--output", "-F"]
choices = [{ value = "text", label = "Text" }, { value = "json", label = "JSON" }]
sources = ["docs"]
[[commands.subcommand.task]]
id = "live"
label = "Watch live"
fields = ["branch", "live"]
required = ["live"]
set = { live = [true] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["branch", "live", "wait", "compact", "output"]