doc/user/public_access.md
{{< details >}}
{{< /details >}}
Projects and groups in GitLab can be private, internal, or public.
The visibility level of the project or group does not affect whether members of the project or group can see each other. Projects and groups are intended for collaborative work. This work is only possible if all members know about each other.
Project or group members can see all members of the project or group they belong to. Project or group members can see the origin of membership (the original project or group) of all members for the projects and groups they have access to.
For private projects, only members of the private project or group can:
/public).Users with the Guest role cannot clone the project.
Private groups can have only private subgroups and projects.
[!note] When you share a private group with another group, users who don't have access to the private group can view a list of users who have access to the inviting group through the endpoint
https://gitlab.com/groups/<inviting-group-name>/-/autocomplete_sources/members. However, the name and path of the private group are masked, and the users' membership source is not displayed.
{{< details >}}
{{< /details >}}
For internal projects, any authenticated user, including users with the Guest role, can:
/public).Only internal members can view internal content.
External users cannot clone the project.
Internal groups can have internal or private subgroups and projects.
For public projects, any user, including unauthenticated users, can:
/public).Public groups can have public, internal, or private subgroups and projects.
[!note] If an administrator restricts the Public visibility level, then the public access directory (
/public) is visible only to authenticated users.
You can change the visibility of a project.
Prerequisites:
You can change the visibility of individual features in a project.
Prerequisites:
You can change the visibility of all projects in a group.
Prerequisites:
{{< details >}}
{{< /details >}}
Administrators can restrict which visibility levels users can choose when they create a project or a snippet. This setting can help prevent users from publicly exposing their repositories by accident.
For more information, see Restrict visibility levels.