doc/user/project/members/_index.md
{{< details >}}
{{< /details >}}
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.
{{< history >}}
webui_members_inherited_users. Disabled by default.webui_members_inherited_users was enabled on GitLab.com and GitLab Self-Managed in GitLab 17.0.webui_members_inherited_users removed in GitLab 17.4. Members of invited groups displayed by default.{{< /history >}}
Users can become members of a group or project directly or indirectly. Indirect membership can be inherited, shared, or inherited shared.
| Membership type | Membership process |
|---|---|
| Direct | The user is added directly to the current group or project. |
| Inherited | The user is a member of a parent group that contains the current group or project. |
| Shared | The user is a member of a group invited to the current group or project. |
| Inherited shared | The user is a member of a group invited to an ancestor of the current group or project. |
| Indirect | An 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
In the previous example:
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:
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:
{{< history >}}
{{< /history >}}
Add users to a project so they become direct members and have permission to perform actions.
Prerequisites:
To add a user to a project:
In the top bar, select Search or go to and find your project.
Select Manage > Members.
Select Invite members.
If the user:
Select a default role or custom role.
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.
[!warning] Maintainers have full permissions until their role expires, including the ability to extend their own access expiration date.
Select Invite. If you invited the user using their:
The maximum role you can assign depends on whether you have the Owner or Maintainer role for the group. For example, the maximum role you can set is:
50), if you have the Owner role for the project.40), if you have the Maintainer role on the project.The Owner role can be added for the group only.
To view members of a project:
A table displays the member's:
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:
If the Role promotions tab is not displayed, the project has no pending promotions.
If a user is:
Instead of adding users one by one, you can share a project with an entire group.
You can import another project's direct members to your own project. Imported project members retain the same permissions as the project you import them from.
[!note] Only direct members of a project are imported. Inherited or shared members of a project are not imported.
Prerequisites:
If the importing member's role for the target project is:
To import a project's members:
If the import is successful, a success message is displayed. To view the imported members on the Members tab, refresh the page.
If a user is:
Prerequisites:
To remove a member from a project:
Users with the Maintainer or Owner role could exploit a race condition that allows them to rejoin groups or projects after an administrator removes them.
To avoid this problem, GitLab administrators can:
You can filter and sort members in a project.
Membership = Direct.Membership = Indirect.To search for a project member:
You can sort members in ascending or descending order by:
To sort members:
GitLab users can request to become a member of a project.
An email is sent to the most recently active project Maintainers or Owners. Up to ten project Maintainers or Owners are notified. Any project Owner or Maintainer can approve or decline the request. Project Maintainers cannot approve Owner role access requests.
If a project does not have any direct Owners or Maintainers, the most recently active Owners of the project's parent group receive the notification.
You can withdraw an access request to a project before the request is approved. To withdraw the access request:
You can prevent users from requesting access to a project.
Prerequisites:
[!note] Disabling the Allow users to request access setting prevents new access requests. Existing pending requests are not removed and can still be approved or denied.
Depending on their membership type, members of groups or projects are granted different visibility levels and rights into the group or project.
The following table lists the membership and visibility rights of project members.
| Action | Direct project member | Inherited project member | Direct shared project member | Inherited shared project member |
|---|---|---|---|---|
| Generate boards | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
| View issues of parent groups <sup>1</sup> | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
| View labels of parent groups | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
| View milestones of parent groups | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
| Be shared into other groups | {{< yes >}} | {{< no >}} | {{< no >}} | {{< no >}} |
| Be imported into other projects | {{< yes >}} | {{< no >}} | {{< no >}} | {{< no >}} |
| Share the project with other members | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
Footnotes:
The following table lists the membership and visibility rights of group members.
| Action | Direct group member | Inherited group member | Direct shared group member | Inherited shared group member |
|---|---|---|---|---|
| Generate boards | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
| View issues of parent groups | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
| View labels of parent groups | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
| View milestones of parent groups | {{< yes >}} | {{< yes >}} | {{< yes >}} | {{< yes >}} |
In the following example, User is a:
subgroup.subsubgroup.subgroup-2 and subgroup-3.subsubgroup-2 and subsubgroup-3.%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TD
accTitle: Diagram of group inheritance
accDescr: User inheritance, both direct and indirect through subgroups
root --> subgroup --> subsubgroup
root-2 --> subgroup-2 --> subsubgroup-2
root-3 --> subgroup-3 --> subsubgroup-3
subgroup -. shared .-> subgroup-2 -. shared .-> subgroup-3
User-. member .- subgroup
class User user