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] # https://docs.gitlab.com/cli/configuration/ — glab searches the legacy # ~/.config/glab-cli/config.yml first, then the platform user config: macOS # ~/Library/Application Support/glab-cli/config.yml and Windows # %LOCALAPPDATA%/glab-cli/config.yml. The three spellings are kept because # the legacy file can coexist with the platform-specific one. paths = [ "~/.config/glab-cli/config.yml", "[appData]/glab-cli/config.yml", "%LOCALAPPDATA%/glab-cli/config.yml", ] # https://docs.gitlab.com/cli/authentication/ — when no OS keyring is # available (or insecure storage is requested), glab stores credentials in # config.yml. The documented config key is hosts..token. secret = [] # glab reads the config at invocation time; no resident process holds it open. 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"]