glab-api
glab api
Capture key
4dd0d32d1: checksum-verified official macOS arm64 binary, source commit4dd0d32d18361db6c1c668eb4ac691c0d6edf255, archive SHA-25611980310aaad2bd9c4e75b5635a60e984da5d0e6245187f2cd6e8db0ec4c5a92. Only adjacent marked help fences use this provenance; complete renderer output is preserved except trailing spaces/tabs. Other fences retain their stated prior provenance.
Automatic retries and agent attribution
The shared API client does not automatically retry ordinary POST or PATCH requests after a server error, or a network failure after the request was written. The server may already have applied the write: inspect the resource before repeating an approved mutation. This is not a blanket no-retry guarantee: HTTP 429 and eligible connection failures before sending can still be retried, and selected internal read-only or idempotency-protected operations explicitly opt into safe retries. That internal opt-in is not a glab api flag.
COPILOT_CLI=1 identifies GitHub Copilot CLI as Coding-Agent/copilot in the User-Agent. Other values do not activate that detection. A valid AI_AGENT override takes precedence; Claude Code and Codex signals are checked before Copilot. Attribution neither changes the GitLab actor nor authorizes writes or governance uploads.
Redirects on writes
The shared API client refuses a redirect that would change the request method, including HTTP 301/302/303 responses that turn POST, PUT, PATCH, or DELETE into a bodyless GET. Method-preserving 307/308 redirects remain allowed, with a limit of ten redirects. A refused redirect is an error, not evidence that the write succeeded or that nothing changed on the original endpoint.
For a same-host HTTP-to-HTTPS redirect, inspect the target and configure the correct API protocol before retrying the approved write. Normal configuration uses per-host api_protocol or GLAB_API_PROTOCOL; CI auto-login reads CI_SERVER_PROTOCOL, so fix the instance external URL or approved job setting instead. Retain the port when selecting a host. Verify the resource state before retrying a mutation, and do not work around the refusal by changing the write to GET.