GitLab
Coming soonPairing GitLab lets ~Alter recognise the shape of your work across projects and merge requests: cadence, collaborators, language surfaces. The contents of your code stay on GitLab; only the pattern of how you ship is read.
Coming soon
Pairing GitLab isn't live yet. This page documents what ~Alter will read once it is, published ahead of launch so you can see exactly what it will and won't touch before you ever pair it. The pairing button stays disabled until this connector goes live.
What pairing does not authorise
Pairing this connector is a read commitment, not delegation. Specifically, ~Alter cannot use this pairing to:
- •Push commits, open or merge merge requests, or modify any project.
- •Open, comment on, or close issues; review merge requests; approve pipelines.
- •Post to your account in any form. GitLab does not see a request from ~Alter beyond the read-only OAuth scope.
- •Add or remove project members, change project settings, or transfer ownership.
- •Read or transmit the contents of any private project, even when the OAuth grant would permit it.
- •Share your contribution data with any third party without a separate consent row scoped to that recipient.
The OAuth or attestation scope we request is the minimum required to recognise the pattern described in What we read. Anything beyond that is structurally refused at the connector boundary, not promised by trust. How pairing works.
What we read
- Public profile fields the OAuth scope exposes: ~handle, display name, avatar URL, public bio, account creation date.
- Public project list and primary languages, enough to recognise the shape of your work, not the contents.
- Public commit timing patterns (when you ship, not what), read once when you pair and reduced to summary statistics. Never per-commit content.
- Co-collaborator graph at the public-project level: who you ship alongside.
What we don't read
~Alter explicitly refuses these fields even when the OAuth scope or API permits them. Every refusal is enforced at the connector boundary, not by trust.
- Private projects. Full stop. Even when the OAuth scope grants access, the connector strips them at the boundary.
- Commit contents, diffs, or any code body.
- Issue or merge-request body text, comment threads, or review prose.
- Email addresses harvested from commit author lines, even when public.
- CI pipeline outputs, artefact contents, or runner logs.
Where it lives
Evidence is stored in ~alter's pairing ledger keyed to your ~handle, encrypted at rest, with a tier badge (T1 OAuth-attested or T2 ownership-confirmed). The OAuth token is encrypted at rest, never exposed to any other surface, and cleared the moment you revoke. Summary patterns feed your identity vector only after a separate consent row is granted.
How to revoke
Nothing to revoke yet, since GitLab cannot be paired. This is the revocation you will get when it goes live, published now so you can see the way out before you ever choose the way in. Revocation will be immediate. You will ask the AI client you paired through to revoke this connector, or revoke it from your consent surface over the same connection. Either path revokes the provider token, stops all further reads, and purges the derived signals this connector fed into your identity vector. An audit row records the revocation.
One thing is kept on purpose. The connector retains a record that this account was paired and when it was disconnected, so the same account cannot be unpaired and re-paired in quick succession to churn your identity vector. That cooldown record holds the raw profile snapshot until the window passes. It is never read into a new signal while disconnected, and it is not shared with anyone.
Prefer the command line? The CLI is the optional deeper path and revokes the same connector:
CLI (optional)
alter unpair gitlabPairing this connector does not enrol you in any matching, ranking, or matching surface. Every downstream use requires its own consent row. See the consent model.