Which part would this affect?
Assignment templates
Problem or current behavior
Type: Feature request Priority: P2 — Medium Part affected: classroom50.org
Assignment acceptance requires that a student already be an accepted member of the GitHub organization. Sharing the link before that produces:
No students can accept this link in [classroom] yet. Add students to the roster and invite them to the organization first.
Because GitHub sends organization invitations by email, and that email cannot be suppressed or deferred, students enter the organization before any assignment repository exists for them.
A student who accepts the invitation and then explores — rather than waiting for the assignment link — lands in an organization containing the instructor's template repository and nothing else. We confirmed with a test account that the student can view the template and use GitHub's standard "Use this template" flow to create their own copy.
That repository is not tracked by Classroom 50, does not appear in the submissions table, and is never collected. A student could complete an entire assignment in it without either party noticing until grading. The failure is silent and looks correct from the student's side.
Proposed solution
Two changes, either of which would substantially reduce the risk:
-
Just-in-time organization membership. Allow the assignment link itself to add the student to the organization on accept, rather than requiring membership as a precondition. A student's first contact with the organization would then be the moment their assignment repository is created, leaving no window in which they are inside the organization with nothing to do.
-
Create assignment repositories using Classroom 50's own credentials rather than the student's. Students would need neither read access to the template nor organization-level repository creation permission, which would let instructors restrict member repository creation as a safeguard.
Alternatives considered
Disable member repository creation at the organization level. This is the obvious instructor-side safeguard, and we tried it. It does stop students creating untracked repositories — and it also stops Classroom 50 creating tracked ones. Acceptance fails at the template-copy step:
Couldn't copy the private template [org]/[template] (HTTP 403). GitHub said: "You need admin access to the organization before adding a repository to it." Ask your teacher to re-run assignment setup, then accept again.
The first four setup steps complete ("Checked your GitHub account", "Confirmed your classroom membership", "Found assignment [name]", "Resolved the autograder"); the remaining steps never run and no repository is created. This indicates the template copy is performed using the student's own credentials. The permission that lets a student create an untracked copy is therefore the same permission Classroom 50 needs to create the tracked one — they cannot be separated by configuration.
Restrict repository creation to private only. This is what we now run. It prevents students exposing template content publicly but does nothing about untracked private copies.
Suppress or delay the organization invitation email. Not available; the email is sent by GitHub, not Classroom 50, and neither side exposes a setting.
Documentation and instruction only. This is our current mitigation: students are told to accept the invitation and then take no further action until they receive the assignment link. It depends entirely on students reading and following directions, and it fails silently when they do not.
Additional context
We are deploying to 78 students across three GitHub organizations (26 each), one classroom per organization, for Fall 2026.
Reproduction:
- Create a classroom in a GitHub organization with a private same-org template repository, and create an individual assignment referencing it.
- Add a student to the roster; the student accepts the organization invitation.
- Before the student opens the assignment link, observe that they can browse to the template repository and use "Use this template" to create a copy.
- Observe that the resulting repository does not appear in the assignment's submissions table.
- To reproduce the 403: clear both Public and Private under Settings -> Member privileges -> Repository creation, then have the student accept an assignment.
Related: assignments are also visible and acceptable from the classroom's Assignments page without the invite link — filed separately as Ticket 4.
Before submitting
Which part would this affect?
Assignment templates
Problem or current behavior
Type: Feature request Priority: P2 — Medium Part affected: classroom50.org
Assignment acceptance requires that a student already be an accepted member of the GitHub organization. Sharing the link before that produces:
Because GitHub sends organization invitations by email, and that email cannot be suppressed or deferred, students enter the organization before any assignment repository exists for them.
A student who accepts the invitation and then explores — rather than waiting for the assignment link — lands in an organization containing the instructor's template repository and nothing else. We confirmed with a test account that the student can view the template and use GitHub's standard "Use this template" flow to create their own copy.
That repository is not tracked by Classroom 50, does not appear in the submissions table, and is never collected. A student could complete an entire assignment in it without either party noticing until grading. The failure is silent and looks correct from the student's side.
Proposed solution
Two changes, either of which would substantially reduce the risk:
Just-in-time organization membership. Allow the assignment link itself to add the student to the organization on accept, rather than requiring membership as a precondition. A student's first contact with the organization would then be the moment their assignment repository is created, leaving no window in which they are inside the organization with nothing to do.
Create assignment repositories using Classroom 50's own credentials rather than the student's. Students would need neither read access to the template nor organization-level repository creation permission, which would let instructors restrict member repository creation as a safeguard.
Alternatives considered
Disable member repository creation at the organization level. This is the obvious instructor-side safeguard, and we tried it. It does stop students creating untracked repositories — and it also stops Classroom 50 creating tracked ones. Acceptance fails at the template-copy step:
The first four setup steps complete ("Checked your GitHub account", "Confirmed your classroom membership", "Found assignment [name]", "Resolved the autograder"); the remaining steps never run and no repository is created. This indicates the template copy is performed using the student's own credentials. The permission that lets a student create an untracked copy is therefore the same permission Classroom 50 needs to create the tracked one — they cannot be separated by configuration.
Restrict repository creation to private only. This is what we now run. It prevents students exposing template content publicly but does nothing about untracked private copies.
Suppress or delay the organization invitation email. Not available; the email is sent by GitHub, not Classroom 50, and neither side exposes a setting.
Documentation and instruction only. This is our current mitigation: students are told to accept the invitation and then take no further action until they receive the assignment link. It depends entirely on students reading and following directions, and it fails silently when they do not.
Additional context
We are deploying to 78 students across three GitHub organizations (26 each), one classroom per organization, for Fall 2026.
Reproduction:
Related: assignments are also visible and acceptable from the classroom's Assignments page without the invite link — filed separately as Ticket 4.
Before submitting