Skip to main content

glab-variable

Manage CI/CD variables at project and group level including create, update, import, export, list, and delete operations. Use when setting environment variables for pipelines, managing secrets, migrating variables, or configuring CI/CD variables. Triggers on variable, CI variable, environment variable, secrets, variable import, CI/CD config.

Source facts

Repository
vince-winkintel/gitlab-cli-skills
Last source activity
October 20, 2026 at 21:41
Detected SKILL.md language
English
Stars
49
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
glab-variable
description
Manage CI/CD variables at project and group level including create, update, import, export, list, and delete operations. Use when setting environment variables for pipelines, managing secrets, migrating variables, or configuring CI/CD variables. Triggers on variable, CI variable, environment variable, secrets, variable import, CI/CD config.
# glab variable ## Inherited reads and partial updates `variable get KEY --inherited` tries the selected project or group, then parent groups closest first, then instance variables. Missing or unreadable levels (404/401/403) are skipped; other failures are returned. `--scope` filters project/group variables, but not instance variables. This is a lookup of stored definitions, not a full simulation of every CI variable precedence rule. Both text and JSON output can expose secret values; send them only to an approved consumer. `variable update` preserves optional attributes unless supplied. Omitted `--protected`, `--masked`, `--raw`, `--type`, and `--description` retain their existing values. Use an explicit boolean such as `--protected=false` only when that policy change is approved. The value is still supplied positionally, through `--value`, or from stdin; do not invoke this as a metadata-only update with empty stdin, which can replace the value with an empty string. `--scope` retains its existing targeting behavior. ## Overview ``` Variables store configuration and secrets used by CI/CD pipelines. Each subcommand acts on the current project by default. Use `--group` to manage a group's variables instead. USAGE glab variable [command] [--flags] COMMANDS delete <key> [--flags] Delete a variable for a project or group. export [--flags] Export variables from a project or group. get <key> [--flags] Get a variable for a project or group. import [--flags] Import variables from a JSON file or standard input. list [--flags] List variables for a project or group. set <key> <value> [--flags] Create a new variable for a project or group. update <key> <value> [--flags] Update an existing variable for a project or group. FLAGS -h --help Show help for this command. -R --repo Select another repository. Can use either `OWNER/REPO` or `GROUP/NAMESPACE/REPO` format. Also accepts full URL or Git URL. ``` ## Quick start ```bash glab variable --help ``` ## Export and import variables `glab variable import` consumes the same JSON array shape emitted by `glab variable export --output json`. It reads standard input by default or a file passed with `--input-file` / `-i`. ```bash # Preview and preserve an export before importing it elsewhere glab variable export --output json > variables.json glab variable import --input-file variables.json -R group/target-project # Pipe between groups glab variable export --group source-group | glab variable import --group target-group # Continue when target variables already exist glab variable import --input-file variables.json --skip-existing ``` Import stops when a target variable already exists unless `--skip-existing` is set. Hidden variable values are omitted from exports, so those entries are skipped with a warning during import; recreate their values explicitly with `glab variable set --hidden` from an approved secret source. Treat export files as sensitive, keep them out of version control, and verify the target project or group before importing. ## Masked and hidden group variables `glab variable set` now sends `--masked` and `--hidden` correctly for group-level variables. Use explicit flags, verify the target group, and never print the value during confirmation: ```bash glab variable set DEPLOY_TOKEN "$DEPLOY_TOKEN" \ --group group/subgroup \ --masked \ --hidden \ --protected # Inspect only approved metadata; the raw JSON includes the value glab variable get DEPLOY_TOKEN --group group/subgroup --output json \ --jq '{key, protected, masked, hidden, environment_scope}' ``` Masking and hiding are server-enforced properties, not substitutes for least privilege or rotation. If GitLab rejects a value because it does not satisfy masking rules, do not weaken the setting silently; fix the value format or get explicit operator approval for a different policy. ## Subcommands See [references/commands.md](references/commands.md) for full `--help` output.
View on GitHub