This page describes AAES Govern’s controls. AAES Operate has private-work permissions, operational reviews and recorded-spend limits; it does not include Govern. About AAES Govern
Before you enable this package
Keep gitlab.com and bind PROJECT_ID and MERGE_REQUEST_IID at registration. A self-managed instance requires re-review of the endpoints, resource locators and egress allowlist.
Read each action's effects and exclusions below. Before installation, also read the complete package requirements, including credential issuance, scope, expiry, and provider permissions. These are deployment prerequisites, not capabilities this package supplies.
Capabilities (6)
Each capability below is one registered operation. The complete package JSON includes its exact network destination allowlist. The repository stores it at packs/gitlab.json and embeds a copy in the release binary.
Risk tiers. R0 is the minimum for reads. R2 is the minimum for write, create, update, execute, and invoke. R3 is the minimum for delete, send, pay, deploy, approve, share, and transfer. Operators can raise these levels. A minimum tier does not measure the operation's business or confidentiality risk.
On supported execution paths routed through AAES Govern, the R3 actions listed below require approval by an authorized person. Bypass paths and observation-only registrations are outside that guarantee. A provider's restoration feature does not remove this approval requirement. A provider-side approval, such as approving a GitLab merge request, is also separate from AAES Govern human approval. The capability matrix shows which execution paths are implemented, restricted to lab use, or refused at startup. Live compatibility must be tested in your environment.
Field guide. Endpoint is the service address and request method. Connector is the adapter that makes the call. Custody describes how the credential is held; the credential reference identifies the value to resolve. Data class sets handling requirements: pii means personal data, financial means financial records, and internal means internal organizational data.
gitlab.projects.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://gitlab.com/api/v4/projects- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-gitlab-access-token- Data class
- internal
Read projects.
List projects visible to the token via GET /api/v4/projects on gitlab.com. The registered path covers the collection read only — single-project records, project members, and project events are not registered by this pack.
gitlab.merge_requests.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://gitlab.com/api/v4/projects/PROJECT_ID/merge_requests- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-gitlab-access-token- Data class
- pii
Read merge requests.
List merge requests for one project via GET /api/v4/projects/PROJECT_ID/merge_requests. The registered path covers the collection read only — single merge request records, diffs, notes, and approval-state reads are not registered by this pack. The list response embeds author, assignee and reviewer identities (names and usernames) and user-authored titles and descriptions, so the read is classified as pii (personal data). PROJECT_ID is a placeholder the deployment binds to a concrete project before enabling.
gitlab.pipelines.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://gitlab.com/api/v4/projects/PROJECT_ID/pipelines- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-gitlab-access-token- Data class
- pii
Read pipelines.
List pipelines for one project via GET /api/v4/projects/PROJECT_ID/pipelines. The registered path covers the collection read only — single pipeline records, job lists, and job logs are not registered by this pack. Each pipeline record embeds the identity (name and username) of the user who triggered it, so the read is classified as pii (personal data). PROJECT_ID is a placeholder the deployment binds to a concrete project before enabling.
gitlab.repository.tree.read v1.0.0R0
- Kind
- tool
- Action
- read
- Endpoint
GET https://gitlab.com/api/v4/projects/PROJECT_ID/repository/tree- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-gitlab-access-token- Data class
- internal
Read repository tree.
List repository tree entries for one project via GET /api/v4/projects/PROJECT_ID/repository/tree. The registered path covers the tree listing only — blob and raw file content, commits, branches, tags, and archive downloads are not registered by this pack. PROJECT_ID is a placeholder the deployment binds to a concrete project before enabling.
gitlab.pipeline.trigger v1.0.0R3
- Kind
- tool
- Action
- deploy
- Endpoint
POST https://gitlab.com/api/v4/projects/PROJECT_ID/pipeline- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-gitlab-access-token- Data class
- pii
Trigger pipeline.
Create and run a pipeline for one project via POST /api/v4/projects/PROJECT_ID/pipeline. GitLab documents that the caller chooses the ref and may pass variables and inputs, so the request body decides which branch or tag builds and what configuration the pipeline sees, and the provider documents pipelines as a way to build, test and deploy code — the capability is registered as deploy at the minimum R3 tier, and deploy is one of the designated actions requiring human approval.
On supported execution paths mediated by AAES Govern, irreversible actions require approval by an authorized person; this does not prevent calls through bypass or observation-only paths. A triggered pipeline is outwardly visible, consumes billable compute, and any deployment it performs cannot be undone by this pack. PROJECT_ID is a placeholder the deployment binds to a concrete project before enabling.
gitlab.merge_request.approve v1.0.0R3
- Kind
- tool
- Action
- approve
- Endpoint
POST https://gitlab.com/api/v4/projects/PROJECT_ID/merge_requests/MERGE_REQUEST_IID/approve- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-gitlab-access-token- Data class
- pii
Approve a merge request.
Approve a merge request via POST /api/v4/projects/PROJECT_ID/merge_requests/MERGE_REQUEST_IID/approve. GitLab documents that the call records the caller as an approver and that approval typically unblocks a merge — the capability is registered as approve at the minimum R3 tier, and approve is one of the designated actions requiring human approval.
On supported execution paths mediated by AAES Govern, irreversible actions require approval by an authorized person; this does not prevent calls through bypass or observation-only paths. GitLab rejects an approval whose optional sha parameter no longer matches the merge request head with a 409, but reversing a recorded approval needs a separate unapprove call that this pack does not register, so this pack claims no general reversibility. PROJECT_ID and MERGE_REQUEST_IID are placeholders the deployment binds to concrete values before enabling.
Credential reference
The credential field names a reference rather than containing credential material. Packs are designed not to contain secrets; the format checks cover only known credential formats and cannot prove that arbitrary text contains no secrets. Installing a package registers its capabilities. Configure the provider credentials, endpoints, and network access, then test the integration in your environment before enabling it.
- Reference
secret-ref-gitlab-access-token- Custody
- customer_vault
- Injection
- header (PRIVATE-TOKEN)
Configure the value and injection format specified in the package. Assign responsibility for credential rotation and revocation, restrict provider permissions, and keep credential material out of logs and responses.
Complete credential requirements
A GitLab personal access token (or project access token) for gitlab.com, held in the client's own secret manager. The stored material must be the complete PRIVATE-TOKEN header value: the token exactly as issued by GitLab, with no scheme prefix added.
GitLab documents that personal access tokens authenticate by sending the token in the PRIVATE-TOKEN header, that every token has an expiry date (expiring at midnight UTC, with a default maximum lifetime of 365 days and email notices before expiry), that revoking a token or rotating it takes effect immediately and leaves the previous value inactive, and that GitLab documents disablement controls that go beyond blocking new issuance: on GitLab Self-Managed and Dedicated (Premium/Ultimate) the instance-wide 'Disable access tokens' setting rejects API requests authenticated with existing personal, group, project and impersonation tokens, and on GitLab.com disabling personal access tokens for a group's enterprise users both stops new creation and disables those users' existing tokens — these are reversible suspensions of use by an administrator, distinct from revoking or rotating an individual token, which invalidates that one value immediately and permanently.
New or replacement tokens must be issued through GitLab, outside AAES. Request the least-privilege scope: read_api covers every read capability in this pack; the two R3 capabilities additionally need api (or a project access token with an equivalent role limited to one project), and nothing broader. Renewal ownership sits with an external deployment process: the executor injects the stored value verbatim and performs no token lifecycle itself, and it must never substitute a different credential without an approved pack change.
Executor hygiene: the value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.
Resources
gitlab-projects(api, internal):https://gitlab.com/api/v4/projectsgitlab-project(api, pii):https://gitlab.com/api/v4/projects/PROJECT_IDgitlab-project-repo(repo, internal):https://gitlab.com/api/v4/projects/PROJECT_ID/repository
Technical package and review record
Complete provider requirements and exclusions
The registered host is gitlab.com (GitLab SaaS). Self-managed GitLab instances use an installer-specific host: substitute it into the endpoints, the resource locators and the egress allowlist together — the allowlist matches exactly, so all three must move as one — and substitution is a pack change that requires re-review before enablement.
PROJECT_ID and MERGE_REQUEST_IID in the endpoint paths are placeholders the deployment substitutes with concrete values at registration time, before enabling (PROJECT_ID accepts the numeric project id or the URL-encoded namespace path; MERGE_REQUEST_IID is the project-scoped merge request iid): the pack is installed with the concrete paths it will actually call, not rebound per request.
This pack registers only endpoints the public GitLab API documentation describes: listing projects, listing a project's merge requests, listing a project's pipelines, listing a repository tree, creating a pipeline, and approving a merge request.
Documented exclusions: job trigger or play, pipeline retry, cancel or delete, pipeline variables and schedules, file or commit writes, merge request create, update, merge and unapprove, and every endpoint outside the registered list; each addition is a pack change and requires its own review.
Approval classification: reads sit at the minimum R0 tier. pipeline.trigger is registered as deploy at the minimum R3 tier because GitLab documents that the caller chooses the ref and may pass variables and inputs, so the request body decides which branch or tag builds and what configuration the pipeline sees, and the provider documents pipelines as a way to build, test and deploy code — deploy is one of the designated actions requiring human approval. merge_request.approve is registered as approve at the minimum R3 tier because the approval is recorded under the caller's identity and typically unblocks a merge, and approve is one of the designated actions requiring human approval.
AAES has not been certified by GitLab; reviewable default, not a vendor guarantee.
Download the complete package JSON for exact network allowlists, credential requirements, exclusions, and setup notes. Read these requirements before installation.
The full documentation review record is supplied in the evaluation package. The evaluation package runs in your environment and comes only with the paid design partnership. This page reproduces the source links and review block; the full record is available for evaluation. Discuss a design partnership to inspect it before installation.
Review block
This section reproduces the review block recorded in the pack file. The evidence and approval record is separate: for a reviewed pack, it is in the evaluation materials and in the release binary's embedded assets.
Review completed: 2026-09-22
6 sources, retrieved 2026-09-21
- https://docs.gitlab.com/api/projects/ (retrieved 2026-09-21)
- https://docs.gitlab.com/api/merge_requests/ (retrieved 2026-09-21)
- https://docs.gitlab.com/api/merge_request_approvals/ (retrieved 2026-09-21)
- https://docs.gitlab.com/api/pipelines/ (retrieved 2026-09-21)
- https://docs.gitlab.com/api/repositories/ (retrieved 2026-09-21)
- https://docs.gitlab.com/user/profile/personal_access_tokens/ (retrieved 2026-09-21)
Current documentation links are navigation aids. They do not change the package, its historical sources or its review date. Review dates describe a documentation review, not a live integration test. No package is provider-endorsed or yet tested against a live provider tenant.
Release identity
SHA-256 of the pack file bytes: 144c4c1b27d8773f310bb865b06545ffd0d59d5c6322a57b106037bbfb4ec9a9
Distributable: yes, digest matches the release manifest. Editing a package changes its release identity. A deployment plan checks its own file digests; it does not restore reviewed status or authenticate approval.