Please read if you are using starter code outside of your GitHub Classroom organization for an assignment

Hi All!

We found that communication in newsletters and in the Classroom UI has not reached all teachers and thus posting an update here about key changes and actions you need to take when using starter code in Classroom. Going forward you can find communication on Classroom changes in Changelog. This won’t be normal practice in the future unless y’all prefer it to be that way.

Important information about the change and what you need to do

In October we made a change to GitHub Classroom that changed some things about starter code. You need to have your starter code:

  1. Within the organization associated with your Classroom - it can be private or public in this case, depending on your preference


  1. Outside of the organization associated with your Classroom - it has to be public and can no longer be private

If your starter code is outside the organisation, it means that you need to transfer 2 or fork 4 your repository to your Classroom organization for your assignment to work properly if you want to keep it private. If you are comfortable making the repository public you can keep it outside of your organization.

If you have an assignment created before Oct 2020 that is set up in this way it will not work and the students will see an error. You will need to move your starter code or make it public and then edit your assignment.

If your classroom organization is on our Standard Terms of Service agreement this does not change the ownership of the contents of your repository in any way by moving it to the organization.

Some context on why:

This was an internal ask from our Security team at GitHub as we transitioned away from the old architecture of GH Classroom. As of last summer GH Classroom was built in a way that just wasn’t scaling with how folks were using it and how we wanted to grow the product. We want to provide you with more stable features that better integrate better with .com so we started a large project to make those backend improvements. This change opens up the door to features like public APIs, configurable assignment YAML files on .com, and a more stable assignment acceptance process (just to name a few!)

Our apologies for this seeming like an abrupt change. We chose to do this during a downtime of assignment creation and acceptance in October and included some warnings in the UI of Classroom as well as a callout in the teacher newsletter.

Going forward we can find about all Classroom changes in the GitHub Changelog.We also plan on adopting an opt-in and beta model for our bigger features to ensure you don’t get surprised during the semester.

My inbox is open for feedback and i’d love to hear from you on this thread or vie email if you want to share pain points around this flow, more general feedback about GH Classroom, or just have questions. We are trying to improve your workflow, not harm it, so we are always open to alternative solutions (that our Security team approves of :smiling_face_with_three_hearts:).

Sorry for the long windedness, but I appreciate you reading til the end!


Looking forward to receiving the new tidbits!


So I’ve thought about this. I’m managing multiple branches of the code in my personal account which is also an owner of the classroom organisation; in doing so, I can keep a solution branch in addition to the clean branch which I publish to students. My intent had been to fork the code to a new repo (think: Assignment-StudentVersion) and delete the solution branch – this fork could then be transferred to the organisation and turned into a template repository from which students could work (or even made public as the solution branch would be stripped from the fork).

However, the problem I’m encountering with this is that I cannot get forking rights to the repo. I’m looking at the tickbox that says “Allow forking” but I can’t select it. As an owner of the organization where the repo currently resides, I wasn’t expecting to have to set up teams or anything to set permissions to let me fork within the same organization. Can you help me find what I’m missing on the issue?

1 Like

Hi Kent,

You’ll need to enable forking at the organization level before you can turn it off/on for individual repos.

Here are the steps to enable it for the org. Once this is done, you should be able to turn it on/off for individual repos.


1 Like

Thanks, Jess. Your solution worked.

I discovered, along the way, that I can use the Template Repository setting to accomplish my intention rather than forking so the easier solution seems to be just to go with that. Thanks for your quick feedback.

@ohitsmekatie Thanks for the clarification, and all the work GitHub is doing to improve Classroom.

Currently the wizard for Classroom assignment creation says this at the template picking step:

Note: All starter code must use a template repository. Your starter code repository must be either in your organization or a public one. Learn about transferring your repositories.

At the start of this year, my interpretation of that 2nd sentence was that this meant:

Your starter code repository must be either in the same organization or a public organization.

I realize this (mis)interpretation implies, essentially, the set of all organizations, but I didn’t think much about it a week ago when I was still able to create assignments from external private repos at that time.

If I can suggest a more explicit rewording, based on your information in this thread, might be something like:

Your starter code repository must be either in the same organization as this classroom or a public repository if elsewhere.

which I would would help some of us with the problems we’ve been having as the previous behaviour has started to break over the past week.

When this change came through yesterday or the day before, I realized that the private repos would no longer work if they were not within the organization, and I made the template repos public and added them to the assignments (the only way I realized this was that my students could no longer accept assignments). However, students are still unable to accept assignments for any of my existing classrooms. I tried creating new assignments - again, using public templates. Students could not accept these assignments either. I had to make all new classrooms and create new assignments within the new classrooms. So, now I have two classrooms for each class (which is a bit ridiculous) so that students who had not yet accepted the assignments can now accept them. So the issue is that my existing classrooms seem to be somehow corrupted - why did this happen? I made no changes to the classroom settings and the new classrooms that I created with the exact same settings are fine. Thoughts?

Unfortunately I found out about this too late. I was in the middle of class today when this happened :frowning: Is there any way to get important information like this other than through the discussion board notifications?


I am now getting the issue (suddenly went live today). When I try to fork to the organization for the classroom I get an error saying I cannot fork a private repository to an organization on a free plan. So…does that mean that the new change means that we are now required to use public repositories? Won’t that be an issue for educational institutions trying to prevent sharing of solutions and such?

OK…I discovered that I forgot to upgrade my spring classroom. Now that I have upgraded it I was able to fork the repository to the classroom organization.

Kent, you might try the alternative approach I describe here of keeping a separate (private) solution repo on GitHub, but pointing branches of your local repo to the two separate remote ones:

I do this and it works quite nicely once you get the hang of it: rebase / fiddle locally to your heart’s content, know that your solution pushes are going somewhere separate and private.

Hi, GitHub Classroom team!

This change caused quite a lot of panic for us today: a visiting instructor new to the GitHub Classroom process, teaching a new course for the first time, suddenly had everything break mere minutes before class. That’s a nerve-racking experience for anyone, but especially painful for a new person we want to feel welcome and supporting, and for whom we’ve trying to make everything go smoothly!

I hesitate to grumble, since I’m so happy to see the long-under-supported GH Classroom getting the new burst of attention it’s received in the last year. I don’t want you to feel unappreciated! It’s great that GH Classroom is getting the attention it deserves.

Please do, however, think about how you announce and roll out breaking changes like this. Education software needs above all to be predictable: in the moment, in the chaos of teaching, the last thing teachers or students want is a sudden breakage. The tech should always Just Work™, rock solid, every time. No surprises.

This is perhaps a bit different from the audience GitHub is used to serving: we developers are used to living in an environment of breakage and tech surprises, since we spend our days looking at half-broken software anyway (since we’re writing it). We tend to value constant improvement more highly than constant stability. Teaching, not so. “Broken in the expected way” is more important than “Surprise! We improved it!” In the teaching half of my life, we’ve rejected a variety of cloud-hosted development environments, including GitHub’s, for exactly this reason.

Please consider all this. I want to see GitHub Classroom succeed, and these culture and process considerations are an important part of that.


I found out about this because students today suddenly can’t start the work I set them, which is a bad experience for us all.

I have an organisation owned by me, and I own the repos in question, but that is not enough. I have solved this by transferring the repos from me to the organisation I own.

I have been using this Sept-Dec for our semester 1 and just started again for semester 2. I guess the “downtime of assignment creation” isn’t aligned to our term dates in the UK. I notice you say this change came in in October, but it’s the first I’m hearing about it.

How can I find out about future changes that I need to act on or my class will break?




Thank you for the suggestion in wording and I think that totally makes sense. I’ve passed that along to the team!

Hi Rachel!

I am not entirely sure what is going on here, but I would love to dig in more and to do that i’d need some information about your assignments.

Would you mind ticketing in to Support with your classroom name and assignment details of the existing classrooms that you are having a problem with? You can mention this thread and my handle in the ticket and the Support team should just route it to us directly.


Ug… this totally hosed some of my students who are trying to clone… I’ve gotten a few emails with this screen…

Is there an easy way to allow it for this one assignment, and I’ll fork for the next:

Or do I have destroy all repos for this assignment and recreate it at this point?

Of course I want to keep my assignment repos and my students’ repos private. And literally this semester I moved the assignment repos to a generic organization instead of recreating them each semester. I am comfortable forking (after this).

Hello! It sounds like you resolved the problem from your comment below. We definitely don’t want to force anyone to work in public unless they want to.

Going forward we’ll be announcing changes on the GitHub Changelog so folks can stay better informed.

Actually, I see your ticket in the Support queue now. I’ll take this conversation there. :grinning_face_with_smiling_eyes:

Hi Katie,

I wanted to provide you with some additional details - and thank you for facilitating the conversation.

The two classrooms under my neiu-org account are Spring2021-CS-324-2 and Spring2021-CS-207-3. So, students can’t accept existing assignments or new assignments in those classrooms, but students that had accepted the assignment prior to January 27th can still make commits. As a result, I’m using these classrooms for those students that had already started working on the assignments and also monitoring the new classrooms for students that had not yet accepted the assignments.

Same happened with us :frowning:

© 2017 GitHub, Inc.
with by
GitHub Education