Truth in IT
    • Sign In
    • Register
        • Videos
        • Channels
        • Pages
        • Galleries
        • News
        • Events
        • All
Truth in IT Truth in IT
  • Data Management ▼
    • Converged Infrastructure
    • DevOps
    • Networking
    • Storage
    • Virtualization
  • Cybersecurity ▼
    • Application Security
    • Backup & Recovery
    • Data Security
    • Identity & Access Management (IAM)
    • Zero Trust
    • Compliance & GRC
    • Endpoint Security
  • Cloud ▼
    • Hybrid Cloud
    • Private Cloud
    • Public Cloud
  • Webinar Library
  • TiPs
  • DRAW

GitLab Groups & Permissions: 3 Common Traps Fixed

Gitlab
10/09/2026
0 (0%)
Share
  • Comments
  • Download
  • Transcript
Report Like Favorite
  • Share/Embed
  • Email
Link
Embed

Transcript


got a 404? Or had your own Git push rejected on a branch that you're pretty sure that you actually own? Well, if that sounds familiar, you are not alone. Hi, I'm Colleen Lake. I'm a developer advocate at GitLab, and today I'm going to walk you through three permission traps that fight most teams, especially when they move to GitLab from GitHub, Bitbucket, or any of the other DevOps platforms. Then we'll go over how to fix each one in just a few clicks. First let us talk about what I call the inheritance waterfall. This is how group roles in GitLab automatically flow down into every subgroup and project. In GitLab, permissions are strictly additive, and they flow downward. That means if you assign a role at the parent group, that becomes the effective floor for every subgroup and project underneath it until you remove or change that parent access. You could always give someone more access further down, but to give them less, you have to lower or remove their access at the parent where it started. If you were used to, let's say, GitHub orgs and teams, think of it like giving someone access at the org level, and suddenly they see a lot more than one repo. This is a major security trap. If a contractor only needs to see one microservice, adding them at the group level is a mistake. As a rule of thumb, always add users at the lowest possible point in the hierarchy, so you stay close to the principle of least privilege. Next, let's clear up the guest role confusion. On GitLab.com, the guest role is contextual. In a public project, guests can pull code. In a private project, they can't even see the repo by default. If stakeholders need to see private code, they must be at least a reporter, or on ultimate, they need a guest-based custom role that explicitly allows viewing code. That's a pretty big change if you're used to read-only roles on other platforms that automatically show you private repos. One very common and very annoying thing that may happen to you is going to a specific project and knowing that there's supposed to be something there, but not actually seeing it there. And what that usually means is the protected branch settings are not working in your favor there. By default, GitLab protects your branch and limits the merge, merge rights. So that's one thing that you can have an issue with, but it also limits what you can see. So what you have to do then is go to settings, check out your branch rules, and see if any of them are preventing your class of permissions from being able to see or push to that branch. If you're on GitLab Ultimate, you also need to watch out for custom roles. Your admin might have assigned you a junior dev role that looks a lot like a developer, but has very specific extra abilities added, or a guest-based role that has view code turned on for private repos. Custom roles are always built on top of a base role, and they only add permissions. They cannot remove what the base role already has. So if you're thinking, a developer should be able to do this, well, you might actually not be a full developer role. You might be a custom role that's based on a developer role, and not on the actual built-in developer role. If the standard roles are not behaving the way you expect, make sure you check your custom permissions profile. For self-managed users, instance administrators can override everything. So on GitLab.com, the group owner is the final authority for your namespace. There is no customer-side super admin who can bail you out if an owner leaves. So the best practice right there is to always have at least two active owners, or a dedicated service account with owner rights. To manage teams efficiently, use invite group. It's cleaner than inviting people one by one, and it makes audits much easier. When someone leaves a department, removing that one invite group instantly cleans up all of the access that came from that link across the project tree. If a user's access still looks wrong, open the members list and check the source column. In the current UI, that column shows whether their access is direct, inherited from a parent group, or coming from an invited group. That tells you exactly which parent group or invited group is responsible. You cannot downgrade them at this level. You have to go upstream to the source group to fix where the access actually comes from. So to recap, post-access-denied pain on GitLab comes down to three things. First, inherited group access. Second, how guests see private versus public projects. And third, default branch rules that block developers from pushing where they expect to push. Once you understand those three areas, you can usually fix permission problems yourself without opening a ticket. If you hit an edge case or you want a sanity check on your setup, go to forum.gitlab.com and tell us what's going on. People there have seen it all. And I'm there too. In this series, I'm covering the top GitLab snags and pitfalls. So subscribe if you want to see the next one. And if you just migrated from another platform and there's something that is just not intuitive to you, well then let me know in the comments and maybe I'll cover it next. Alright, well that's a wrap on groups and permissions. Happy building!

TL;DR

  • GitLab permissions are strictly additive and flow downward — assigning a role at the parent group level sets a floor that cannot be restricted at lower levels without changing the source assignment.
  • The guest role behaves differently depending on project visibility: guests can pull code in public projects but are completely blocked from private repositories unless given a Reporter role or a custom guest role with view-code access.
  • Protected branch settings can silently block pushes and visibility even for users with correct group roles — always check branch rules in project settings when troubleshooting access issues.
  • Custom roles on GitLab Ultimate only add permissions on top of a base role and cannot remove base-role capabilities, so a custom developer-based role may not behave identically to the built-in Developer role.

The Inheritance Waterfall Explained

GitLab's permission model is strictly additive and flows downward through the group hierarchy — a concept Colleen Lake calls the "inheritance waterfall." When a role is assigned at the parent group level, it becomes the effective floor for every subgroup and project beneath it. You can always grant more access further down the tree, but you cannot restrict it below the parent-level assignment without removing or lowering access at the source. This is a critical distinction for teams migrating from GitHub or Bitbucket, where org-level and repo-level permissions behave differently. The practical takeaway: always add users at the lowest possible point in the hierarchy to stay aligned with the principle of least privilege. Adding a contractor at the group level when they only need access to one microservice is a common and costly mistake.

Guest Roles, Protected Branches & Custom Permissions

The guest role in GitLab is contextual rather than universal. In a public project, guests can pull code freely; in a private project, they cannot even see the repository by default. Stakeholders who need visibility into private code must be assigned at least a Reporter role, or on GitLab Ultimate, a custom guest-based role with the "view code" permission explicitly enabled. Protected branch settings introduce another common friction point — by default, GitLab restricts merge rights and visibility on protected branches, which can cause unexpected 404s even for users with seemingly correct roles. Administrators should review branch rules under project settings to identify any restrictions blocking their permission class. On GitLab Ultimate, custom roles add further nuance: they are always built on top of a base role and can only add permissions, never remove them. A user assigned a custom "junior dev" role may not have the full capabilities of the built-in Developer role, which can cause confusion when expected actions are blocked. Checking the custom permissions profile is the recommended first diagnostic step. For GitLab.com namespaces, the group owner holds final authority, making it essential to maintain at least two active owners or a dedicated service account to avoid access lockouts.

Chapters

0:00 - Introduction & Common Permission Pain Points
0:44 - The Inheritance Waterfall
1:55 - Guest Role Confusion: Public vs. Private
2:27 - Troubleshooting Protected Branch Settings
3:14 - Custom Roles & Least Privilege on Ultimate
4:25 - Admin Best Practices & Invite Groups
5:10 - Recap & Community Resources

Key Quotes

0:54 "In GitLab, permissions are strictly additive, and they flow downward."
1:38 "If a contractor only needs to see one microservice, adding them at the group level is a mistake."
2:01 "In a public project, guests can pull code. In a private project, they can't even see the repo by default."
3:30 "Custom roles are always built on top of a base role, and they only add permissions. They cannot remove what the base role already has."
4:10 "There is no customer-side super admin who can bail you out if an owner leaves."
5:02 "You cannot downgrade them at this level. You have to go upstream to the source group to fix where the access actually comes from."

FAQ

Why does a user still get a 404 even after I've added them to the correct group?

The most likely causes are protected branch settings blocking visibility for their permission class, or the fact that their effective role is lower than expected due to the inheritance waterfall. Check the project's branch rules under Settings and review the Members list source column to confirm where their access is actually originating.

Can I restrict a user's access at the subgroup level if they were added at the parent group?

No. GitLab permissions are strictly additive and flow downward. You cannot reduce a user's access below the level set at the parent group without removing or lowering their role at the parent group itself. Always add users at the lowest necessary point in the hierarchy to avoid this situation.

Categories:
  • » Cybersecurity » Application Security
  • » Cybersecurity » Identity & Access Management (IAM)
  • » Data Protection
Channels:
News:
Events:
Tags:
  • Identity & Access
  • DevSecOps
  • Getting Started
  • How-To
  • Best Practices
  • GitLab permissions
  • group inheritance
  • least privilege access
  • protected branches
  • custom roles
  • GitLab Ultimate
  • DevOps platform migration
  • access control
  • repository visibility
Show more Show less

Browse videos

  • Related
  • Featured
  • By date
  • Most viewed
  • Top rated
  •  

              Video's comments: GitLab Groups & Permissions: 3 Common Traps Fixed

              Upcoming 360 View Events

              • Nov
                19

                360View: Govern, Secure & Recover Your Microsoft 365 Environment

                11/19/202601:00 PM ET
                More events

                XStreaminars (watch here)

                • Oct
                  28

                  EnvZero: Near-Zero Time to Resolution--Live Agentic Remediation for Failed and Drifted Infrastructure

                  10/28/202601:00 PM ET
                  More events

                  Industry Events (Sponsor Hosted)

                  • Oct
                    13

                    Transitioning from CJIS to FERPA: Essential Audit Evidence for Compliance

                    10/13/202601:00 PM ET
                    • Oct
                      15

                      Risk in Real Time Demo Series: Virtual Patching: Protection at the Speed of Exploitation

                      10/15/202611:00 AM ET
                      • Oct
                        20

                        Harnessing Data Governance for AI with Cyera and Snowflake

                        10/20/202611:00 AM ET
                        • Oct
                          27

                          Maximize Your Microsoft Investment for Security and Growth

                          10/27/202611:00 AM ET
                          • Oct
                            27

                            The HUMAN Experience: Real-Time Insights into Page Intelligence

                            10/27/202601:00 PM ET
                            More events

                            Upcoming Webinar Calendar

                            • 10/13/2026
                              01:00 PM
                              10/13/2026
                              Transitioning from CJIS to FERPA: Essential Audit Evidence for Compliance
                              https://www.truthinit.com/index.php/channel/2159/transitioning-from-cjis-to-ferpa-essential-audit-evidence-for-compliance/
                            • 10/15/2026
                              11:00 AM
                              10/15/2026
                              Risk in Real Time Demo Series: Virtual Patching: Protection at the Speed of Exploitation
                              https://www.truthinit.com/index.php/channel/1372/risk-in-real-time-demo-series-the-autonomous-era-orchestrating-a-resilient-enterprise/
                            • 10/20/2026
                              11:00 AM
                              10/20/2026
                              Harnessing Data Governance for AI with Cyera and Snowflake
                              https://www.truthinit.com/index.php/channel/2137/harnessing-data-governance-for-ai-with-cyera-and-snowflake/
                            • 10/27/2026
                              11:00 AM
                              10/27/2026
                              Maximize Your Microsoft Investment for Security and Growth
                              https://www.truthinit.com/index.php/channel/2178/maximize-your-microsoft-investment-for-security-and-growth/
                            • 10/27/2026
                              01:00 PM
                              10/27/2026
                              The HUMAN Experience: Real-Time Insights into Page Intelligence
                              https://www.truthinit.com/index.php/channel/2139/the-human-experience-real-time-insights-into-page-intelligence/
                            • 10/28/2026
                              01:00 AM
                              10/28/2026
                              [APAC:] Secure AI Everywhere: Visibility, governance and protection for the agentic era
                              https://www.truthinit.com/index.php/channel/2125/apac-ensuring-comprehensive-security-for-ai-applications/
                            • 10/28/2026
                              06:00 AM
                              10/28/2026
                              [EMEA:] Secure AI Everywhere: Visibility, governance and protection for the agentic era
                              https://www.truthinit.com/index.php/channel/2127/emea-ensuring-ai-security-across-all-platforms/
                            • 10/28/2026
                              01:00 PM
                              10/28/2026
                              [AMERICAS:] Secure AI Everywhere: Visibility, governance and protection for the agentic era
                              https://www.truthinit.com/index.php/channel/2126/securing-ai-across-the-americas-strategies-and-insights/
                            • 10/28/2026
                              01:00 PM
                              10/28/2026
                              EnvZero: Near-Zero Time to Resolution--Live Agentic Remediation for Failed and Drifted Infrastructure
                              https://www.truthinit.com/index.php/channel/2179/envzero-near-zero-time-to-resolution-live-agentic-remediation-for-failed-and-drifted-infrastructure/
                            • 11/04/2026
                              11:00 AM
                              11/04/2026
                              Leveraging CISA’s Zero Trust Maturity Model in an AI-Driven Landscape
                              https://www.truthinit.com/index.php/channel/2149/leveraging-cisas-zero-trust-maturity-model-in-an-ai-driven-landscape/
                            • 11/04/2026
                              11:00 AM
                              11/04/2026
                              Aligning Agentic Intent: Understanding Your Agents' Purpose vs. Their Actions
                              https://www.truthinit.com/index.php/channel/2158/aligning-agentic-intent-understanding-your-agents-purpose-vs-their-actions/
                            • 11/05/2026
                              02:00 PM
                              11/05/2026
                              HUMAN Dialogue: Embracing the Rise of the Agentic Consumer in AI
                              https://www.truthinit.com/index.php/channel/2160/human-dialogue-embracing-the-rise-of-the-agentic-consumer-in-ai/
                            • 11/05/2026
                              02:00 PM
                              11/05/2026
                              Reclaim Your Evenings: Leverage Data Intelligence to Minimize Risk and Boost AI Adoption
                              https://www.truthinit.com/index.php/channel/2172/reclaim-your-evenings-leverage-data-intelligence-to-minimize-risk-and-boost-ai-adoption/
                            • 11/19/2026
                              01:00 PM
                              11/19/2026
                              360View: Govern, Secure & Recover Your Microsoft 365 Environment
                              https://www.truthinit.com/index.php/channel/2076/360view-govern-secure-recover-your-microsoft-365-environment/
                            • 11/19/2026
                              01:00 PM
                              11/19/2026
                              Zendesk Deep Dive: Get the work done faster with Employee Service AI Agents
                              https://www.truthinit.com/index.php/channel/2181/zendesk-deep-dive-get-the-work-done-faster-with-employee-service-ai-agents/
                            Truth in IT
                            • Sponsor
                            • About Us
                            • Terms of Service
                            • Privacy Policy
                            • Contact Us
                            • Preference Management
                            Desktop version
                            Standard version