How to control who gets into a team?

In my class, I allow students to form their own groups (at most 3). When I create a group assignment, how is it possible to let a team decide who gets in to their team? It seems anybody can join any team (up to the maximum size) when clicking the assignment link. Perhaps I am missing some setting when I create the assignment?
Anand P.


Same question here.
Use case: I have 1 repository. I want to use it for a group assignment so each team gets the repository and work in it as a team. I have five teams. When I create the assignment and add this repository as starter code I get a link to send it to the students.
Do I have to create one group assignment for each team and send each team their respective link?

@apanangadan nice to see you here, and thanks for posting :slight_smile:

The selection of joining teams happens on the student side.

If you want certain students to join certain teams, you can share that with your students and ask them to form those teams within the Classroom interface.

Hopefully we answered @miguelpaz’s question in this thread:

Thanks Vanessa
I figured it out but thanks for explaining it to be sure.

Thanks. Students currently form their own teams but it appears a student has no control over who joins their team. I create a group assignment and set the team size to 2. I ask students to form their own teams. Say a student clicks the assignment link and forms a new team.

  • Any student is now allowed to join this team. If an “invited” student joins this team, the student’s preferred partner cannot join anymore? Does the original creator of the team now have to remove this uninvited person (and do they have the rights to do so)?
  • Does joining a team make them a team member or a collaborator (the GitHub Classroom — How to set up group assignments says collaborator)?
  • In what circumstances would I need to “give students admin permissions on their repository”?


@mozzadrella Your name appear often w.r.t. setting up group assignments, so I direct this to your attention.

I’m experimenting with establishing a group project with teams of 3. I’ve built my own accounts as a sandbox.

  • I have an organisation
  • I have a classroom
  • I have made teams for the organisation, placing students into teams [Team A and Team B]
  • I then make a group assignment, specifying Team A and Team B as the teams for the assignment
  • Using the provided link, I attempt to visit the link as a student, hoping to be able to choose only the team to which I have been assigned. But neither Team A or Team B are available as choices, and as a student, I instead create my own group.

I would hope the student would be presented with a scenario such as depicted in your image

Help me understand what step(s) I have omitted.

Hi @erex,

@mozzadrella will be back in the office in the next few days. In the meantime, I’d like to try and help you. Can you please provide a screenshot of the instructor view for the assignment, and a screenshot of what your student sees when visiting the group assignment link?


Hi Anand,

In case you did not receive a response to this elsewhere:

  • More nuanced team permissions would be a terrific feature to request at
  • All students are considered outside collaborators for the GitHub organization being used with GitHub Classroom, so they’re both team members and outside collaborators.
  • The flexibility to provide students admin access is explained in the Getting Started video here.


Thanks Scott–will provide those to you in the morning.

@sanicki: As requested, here is a screenshot of a group assignment I attempted to create (note this is re-visiting the assignment after it has been created–hence no form blanks related to teams are present):

Logging in as a fictional student and following the assignment link, I’m presented with this screen:
(which I choose to skip)

moving to the next screen

I am given the option of joining an existing team (that I created during earlier experimentation).

My confusion stems from my creation of teams within the organisation and the assignment of members to those team organisations. I was under the impression that my creation of teams was the mechanism by which I could have control of team membership for group projects. This appears to be my misunderstanding; your initial statement (in a different issue) that team assignment is student-centric being the clue I needed.

However, continuing the example you requested, here is the next screen grab following from this student choosing to create a new team, named “My new team”


At this point, the student received this 404 message, however, the instructor (as owner of the organisation) receives this success email message:

The import to is finished!

Finally, as the student, I visit the new repo, just cloned, I see this

The team repo has been created, and it is labelled as private. When I log on to Github as a different student, I get a 404 message as expected. This is what I intended to prevent members of teams from viewing contents of repos of which they are not members.

Hence, in the end, I think I have accomplished what I wanted; but for this to work I am reliant upon the students to correctly assign themselves to the teams I specified, using the team names I specify.

The other challenge presented is the 404 message students receive upon following the link to the assignment. Hopefully that won’t be too off-putting to them.

Hi @erex,

Thanks for your patience while we sort this out. The existing team being listed as unknown team and the 404 are unexpected.

Would you mind going into Manage classroom on and clicking Reset and remove this classroom? That will allow us to start fresh.

Then let’s set the classroom up again, making sure not to alter anything about the GitHub organization outside the Classroom interface.

Should the problem persist in the new classroom then I’ll ask you to please submit new screenshots to and we’ll continue to troubleshoot.


Is there a solution to this problem yet? My students are having the same issue. We haven’t been using a roster for our course (we’re worried about privacy issues), but I tried making one to see if it would solve the 404 error but it didn’t. Also, I’ve noticed that if a student accidentally leaves a team for a project, they can’t rejoin it.

1 Like

Thanks again for the help Scott

I did as you suggested, deleted the classroom and started over.

I created new classroom with assignment (group project). I gave the link to 3 accounts serving as students, allowing each account to select team names. I was able to confirm that students in the same team shared the same team repo, while students outside the team could not see the repo.

The only unresolved issue is the message “Invalid invitation link” followed each selection of a team by a student. This is odd because the URL of the invalid message ends with “/success” (see URL from screen capture I posted earlier). So the team repo is successfully created, but the student only receives an error message. I as administrator of the organisation, receive the affirmation email

The import to is finished!

The onus falls on me as instructor to tell them not to heed the invalid link message and instead proceed to the team repo they have either just made or just joined.

Hi @erex,

The only unresolved issue is the message “Invalid invitation link” followed each selection of a team by a student. This is odd because the URL of the invalid message ends with “/success”

That is curious behavior. Would you please open an issue for that here:

You can simply link back to the details here if that’s simpler.


1 Like

@erex I would suggest distributing an email or a forum post with the teams that you would like students to be in, and then double-checking ones the teams have formed.

@esimkowitz + @erex rosters is a new feature and we’re actively developing it, and working with the importer. Thanks for your support and patience.

It seems as of now there is no way to enforce group membership, either by a student or instructor - anybody can join a group. So, this is what I am planning to do this semester:
Set up group assignments with maximum team size of 1. This prevents another student from joining an already formed team.
To form a group, a student invites another as an “Outside collaborator.” Students have admin access to their repositories.

I experimented with this approach with dummy accounts and I didn’t run into problems. The only time I ran into 404 issues was when I was logging in and out incorrectly while clicking accept and join links.