Members of a project

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

Members are the users and groups who have access to your project. Members can be added directly to your project or inherit access through groups.

Each member has a role that determines what they can do in the project. Project members with the appropriate role can add users to projects, remove users from projects, and manage access requests to control access to project resources.

Membership types

Users can become members of a group or project directly or indirectly. Indirect membership can be inherited, shared, or inherited shared.

Membership typeMembership process
DirectThe user is added directly to the current group or project.
InheritedThe user is a member of a parent group that contains the current group or project.
SharedThe user is a member of a group invited to the current group or project.
Inherited sharedThe user is a member of a group invited to an ancestor of the current group or project.
IndirectAn umbrella term for inherited, shared, or inherited shared members.
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart RL
  accTitle: Membership types
  accDescr: Describes membership types and their inheritance

  subgraph Group A
    A(Direct member)
    B{{Shared member}}
    subgraph Project X
      H(Direct member)
      C{{Inherited member}}
      D{{Inherited shared member}}
      E{{Shared member}}
    end
    A-->|Inherited membership in Project X
         Direct membership in Group A|C
  end
  subgraph Group C
    G(Direct member)
  end
  subgraph Group B
    F(Direct member)
  end
  F-->|Group B
       invited to
       Group A|B
  B-->|Inherited membership in Project X
       Indirect membership in Group A|D
  G-->|Group C invited to Project X|E

Project members page

In the previous example:

  • Administrator is an inherited member from the demo group.
  • User 0 is an inherited member from the demo group.
  • User 1 is a shared member from the Acme group that is invited to this project.
  • User 2 is an inherited shared member from the Toolbox group that is invited to the demo group.
  • User 3 is a direct member added to this project.

Security considerations

Git is a distributed version control system (DVCS). Everyone who works with the source code has a local copy of the complete repository.

In GitLab, every project member with the Reporter, Developer, Maintainer, or Owner role can clone the repository to create a local copy. Users can upload the full repository anywhere after they obtain a local copy, including:

  • Another project under their control.
  • A different server.
  • External hosting services.

Access controls cannot prevent the intentional sharing of source code by users who already have access to the repository. All Git management platforms have this inherent characteristic of distributed version control systems.

While you cannot prevent intentional sharing by authorized users, you can take the following steps to prevent unintentional sharing and information destruction:

Add users to a project

Add users to a project so they become direct members and have permission to perform actions.

Prerequisites:

To add a user to a project:

  1. In the top bar, select Search or go to and find your project.

  2. In the left sidebar, select Manage > Members.

  3. Select Invite members.

  4. If the user:

    • Has a GitLab account, enter their username.
    • Doesn’t have a GitLab account, enter their email address.
  5. Select a default role or custom role.

  6. Optional. Select an Access expiration date. From that date onward, the user can no longer access the project.

    If you selected an access expiration date, the project member gets an email notification seven days before their access expires.

    Maintainers have full permissions until their role expires, including the ability to extend their own access expiration date.

  7. Select Invite. If you invited the user using their:

    • GitLab username, they are added to the members list.
    • Email address, an invitation is sent to their email address, and they are prompted to create an account. If the invitation is not accepted, GitLab sends reminder emails two, five, and ten days later. Unaccepted invites are automatically deleted after 90 days.

Which roles you can assign

The maximum role you can assign depends on whether you have the Maintainer or Owner role for the group. For example, the maximum role you can set is:

  • Owner (50), if you have the Owner role for the project.
  • Maintainer (40), if you have the Maintainer role on the project.

The Owner role can be added for the group only.

View project members

To view members of a project:

  1. In the top bar, select Search or go to and find your project.
  2. In the left sidebar, select Manage > Members.

A table displays the member’s:

  • Account name and username.
  • Source of their membership. For transparency, GitLab displays all membership sources of project members. Members who have multiple membership sources are displayed and counted as separate members. For example, if a member has been added to the project both directly and through inheritance, the member is displayed twice in the Members table, with different sources, and is counted as two individual members of the project.
  • Role in the project.
  • Expiration date of their project membership.
  • Activity related to their account.

View users pending promotion

If administrator approval for role promotions is turned on, membership requests that promote existing users into a billable role require administrator approval.

To view users pending promotion:

  1. In the top bar, select Search or go to and find your project.
  2. In the left sidebar, select Manage > Members.
  3. Select the Role promotions tab.

If the Role promotions tab is not displayed, the project has no pending promotions.

Updating expiration and role

If a user is:

  • A direct member of a project, the Expiration and Role fields can be updated directly on the project.
  • An inherited, shared, or inherited shared member, the Expiration and Role fields must be updated on the group that the member originates from.

Share a project with a group

Instead of adding users one by one, you can share a project with an entire group.