Privacy
Privacy statement
Code Companion is an independent educational programming project operated by Matthew Elliot. This page explains what information the service uses, why it is needed, and the choices available to users.
Last updated: 12 September 2026
Students do not need to provide Code Companion with a real name, email address, Google account or GitHub account.
Personal information is not sold to advertisers or data brokers and is not used to build advertising profiles.
Information is used to support classes, programming work, feedback, security and the Code Companion Local workflow.
Pseudonymous classroom access
A teacher creates student logins for a class. Code Companion generates a class-scoped login and internal authentication identifier. A student does not need to give Code Companion a real name, personal or school email address, Google account, GitHub account or date of birth.
The class login is still linked to learning activity inside that class. Code Companion may therefore store the student's pseudonymous identifier, class membership, challenge activity, submitted source code, reflections, feedback, scores and relevant timestamps. This is pseudonymous educational data, not an absence of data.
A teacher may keep a separate mapping between a Code Companion class login and a real student for classroom administration. Code Companion does not require the teacher to upload that mapping. Students should avoid putting their real name or other personal information inside source-code comments or submitted files when the class is intended to remain pseudonymous.
Information Code Companion may collect
The exact information depends on which parts of Code Companion you use.
Teacher sign-in
Teachers sign in with Google. Code Companion may receive the teacher's name, email address, profile image and a unique account identifier needed to authenticate them. Code Companion does not receive the teacher's Google password.
Student class credentials
Code Companion stores the pseudonymous student login identifier and an internal, non-deliverable authentication address used by Supabase Auth. It also keeps an encrypted current class password so an authorised teacher can reveal it later without forcing a reset. The password is not stored as plaintext in Code Companion classroom database tables. Teachers can reveal, reset or remove the class credential for students in classes they are authorised to manage.
Classroom information
Code Companion stores information needed to manage a class, such as class membership, role, setup acknowledgements, current activity and relevant timestamps.
Programming work and evidence
Code Companion may store challenge selections, completion state, submissions, Git commit references, teacher scores, feedback and a student's pre-submission reflection comparing handwritten and final code. Submitted source code may be displayed to the student and their teacher for review.
Teacher-owned GitHub storage
Classroom submissions are stored under the student's pseudonymous class identifier in a private code-companion-classroom repository owned by the teacher. Students do not connect GitHub accounts and do not receive the teacher's GitHub credentials or GitHub App token. Code Companion does not receive GitHub passwords.
Code Companion Local
When a computer is paired, Code Companion may store limited device information such as device name, platform, installation identifier, pairing status and last-seen timestamps. Pairing credentials are designed so the raw device secret is not stored in the Code Companion database.
Technical and usage information
Hosting, authentication and security providers may process ordinary connection information such as IP address, browser or device type, request timestamps and diagnostic logs. Code Companion also uses Vercel Web Analytics to understand aggregate public-beta traffic. Pseudonymous classroom login does not prevent infrastructure providers from processing ordinary network and security information needed to deliver the service.
Why this information is used
Code Companion uses information where it is reasonably needed to provide and protect the service, including to:
- authenticate teachers and pseudonymous student class logins;
- place students and teachers in the correct classes;
- record programming activity, submissions, feedback and pre-submission reflections;
- allow teachers to review the exact programming work a student submitted;
- store submitted work in the teacher's private GitHub repository;
- pair Code Companion Local with the correct pseudonymous student identity;
- let authorised teachers manage and recover current class credentials;
- protect student credentials from repeated failed-login attempts;
- understand which public-beta pages and workflows are being used;
- maintain the reliability, security and integrity of the service; and
- investigate bugs or provide support when requested.
Who can see the information
Students can see their own relevant learning and submission information. Teachers can see information needed to teach and review students in classes they manage, including pseudonymous login identifiers, the current class password, programming submissions, evidence, feedback and pre-submission reflections. The Code Companion operator may access information where necessary for administration, security, support or fixing a technical problem.
The teacher owns the private GitHub repository that stores classroom submissions. Code Companion is not intended to make school programming submissions public.
Services used to run Code Companion
Code Companion relies on specialist providers to deliver parts of the service:
- Google - teacher sign-in.
- Supabase - authentication, database and classroom functionality, including pseudonymous student authentication.
- GitHub - teacher-owned private programming submission storage.
- Vercel - website hosting, server-side application delivery and Web Analytics.
These providers process information under their own terms and privacy practices and may process data in countries other than the country where the user is located.
Cookies and local storage
Code Companion uses essential browser storage for authentication sessions and user preferences. Students receive the same secure authenticated session mechanism after entering their class login. Code Companion does not currently use advertising cookies or third-party marketing trackers.
An optional student nickname can be stored only in that browser/device for convenience and is not sent to Code Companion. Code Companion Local may use the operating system's secure credential storage to remember a paired device so the user does not need to pair the same computer every time the app starts.
How long information is kept
Code Companion keeps account and classroom information for as long as it is reasonably needed to provide the service, preserve useful educational records, resolve technical or security problems, or meet applicable requirements. The project is still developing, so retention periods may become more specific as the service matures.
Users may request deletion of information held by Code Companion using the contact address below. Work stored in a teacher-owned GitHub repository must also be managed through the teacher who owns that repository, and a school may separately retain educational records under its own policies or legal obligations.
Students, schools and younger users
Code Companion is designed for educational use and may be used by students under the direction of a teacher, tutor or school. Teacher-issued pseudonymous class logins substantially reduce the student account information involved, but this does not by itself determine whether a school's use of Code Companion satisfies a particular law or policy. Schools and teachers remain responsible for their own approval, consent and data-protection requirements.
A student, parent or guardian who has a question about information held in Code Companion can contact the project using the address below. Where the service is being used through a school, it may also be appropriate to contact the school.
Security
Code Companion uses measures intended to reduce unnecessary access to information, including encrypted web connections, authenticated access controls, private GitHub repositories, narrowly scoped GitHub App permissions, authenticated encryption for recoverable student class passwords, protected device-pairing credentials, credential-level failed-login protection and server-side authorization checks. No internet service can guarantee absolute security.
Your choices
Teachers can generate, reveal, reset and remove pseudonymous student class logins. Students do not need to connect personal or school Google or GitHub accounts to Code Companion. A paired Local device can be disconnected, and teachers can revoke a student's class login while retaining historical learning evidence where appropriate. You can also contact Code Companion to ask what information is held, request a correction, or request deletion where appropriate.
Changes to this statement
This privacy statement may be updated when Code Companion gains new features or when its data handling changes. The date at the top of this page will be updated when a material change is made.
Contact
Privacy questions or requests
Code Companion is operated by Matthew Elliot as an independent educational software project.
For ordinary public-beta bugs and suggestions, you can also use the feedback page.