GitLab
September 9, 2026 ยท View on GitHub
tuicr reviews GitLab merge requests the same way it reviews GitHub pull
requests, through the glab CLI.
Setup
Install the GitLab CLI and authenticate:
glab auth login
tuicr shells out to glab for every GitLab operation and stores no tokens of
its own. tuicr submits as whatever account glab is logged into.
Open a merge request
tuicr mr 125
mr is an alias for pr, so tuicr mr 125, tuicr pr 125, and tuicr tui mr 125
all open the same review. The target accepts several forms:
| Target | Example |
|---|---|
| MR IID | 125 |
| MR URL | https://gitlab.com/owner/repo/-/merge_requests/125 |
owner/repo#iid | mygroup/myrepo#125 |
host/owner/repo#iid | git.example.com/mygroup/myrepo#125 |
Nested groups and subgroups work in the owner/repo slot, for example
mygroup/subgroup/myrepo#125.
tuicr detects the forge from the repository's remotes. A remote routes to GitLab
when its host contains gitlab or matches a self-hosted host configured in
glab. Everything else falls back to GitHub.
Submit a review
:submit opens a picker. On GitLab it offers four events:
| Event | Result |
|---|---|
| Comment | Posts your inline and review-level comments without changing approval state. |
| Approve | Posts your comments and approves the merge request. |
| Request changes | Posts your comments and sets the MR reviewer state to changes requested. |
| Draft | Posts your comments as GitLab draft notes without publishing them or changing approval state. |
Inline comments land on their lines as merge request discussion notes. Review-level comments post as the review summary.
Request changes requires that your account is an assigned reviewer on the merge request. GitLab only lets a reviewer set that state. If you are not a reviewer, tuicr surfaces the error GitLab returns rather than reporting success. tuicr does not add you as a reviewer on your behalf.
:submit draft uses GitLab draft notes, the closest primitive to a GitHub pending
review: your inline and review-level comments are stored but not published. Publish
them yourself from GitLab's own "Submit review" control on the merge request.
Self-hosted GitLab
Authenticate against your instance once:
glab auth login --hostname git.example.com
After that, tuicr recognizes remotes on git.example.com as GitLab because the
host is configured in glab. Pass the full URL or a host/owner/repo#iid
target, and tuicr builds the https://git.example.com/owner/repo repository
argument for glab on its own.
SSH over port 443
If your network only allows SSH on port 443, GitLab's altssh.gitlab.com
endpoint works. tuicr maps altssh.gitlab.com back to gitlab.com when it
reads your remote, so the MR resolves against the real host. HostName aliases
in ~/.ssh/config are resolved the same way.
Limitations and troubleshooting
Reviewing a commit range within an MR requires a local checkout of the branch. A remote-only commit-range diff returns a "not yet supported" error.
For verbose tracing of the glab calls tuicr makes, set TUICR_GLAB_DEBUG=1.
tuicr appends each interaction to /tmp/tuicr-glab-debug.log.
Common errors:
| Message | Fix |
|---|---|
GitLab integration requires glab. | Install the GitLab CLI, then run glab auth login. |
GitLab authentication failed. | Run glab auth login for the host named in the error. |
GitLab token lacks merge request write permission. | Authenticate with an account or token that has merge request write access. |