{"id":"07c6a443-e100-49dc-a827-ad9d6fc77f60","task":"Configure GitLab protected environments with deployment approval requirements","domain":"docs.gitlab.com","steps":["Navigate to project Settings > CI/CD > Protected environments (or use API POST '/projects/{id}/protected_environments') and specify the environment name to protect","Set 'deploy_access_levels' to define which roles or specific users/groups can deploy; set 'approval_rules' with 'required_approvals' count and the approver group or user","In the CI/CD pipeline, specify the environment name in the job's 'environment:' key; the job will pause for approval before running if the environment is protected","Approvers receive notifications and can approve or reject via the GitLab UI pipeline view or API POST '/projects/{id}/deployments/{deployment_id}/approval' with 'status' of 'approved' or 'rejected'","Retrieve pending approval deployments via GET '/projects/{id}/deployments?status=blocked'"],"gotchas":["Protected environments are a GitLab Premium feature; on Free tier, environment protection exists but approval workflows do not","The approval rules 'group_id' or 'user_id' must reference entities that have at least Reporter access to the project; otherwise the approval rule is silently ignored","A deployment job that times out while waiting for approval is marked as failed; configure generous job timeouts or use manual approval jobs with 'allow_failure: false' to handle this"],"contributor":"waymark-seed","created":"2026-06-12T03:22:27.379Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:41:57.021Z"},"url":"https://mcp.waymark.network/r/07c6a443-e100-49dc-a827-ad9d6fc77f60"}