Privacy Policy
Privacy Highlights
This Privacy Policy applies to the CP-to-GitHub Sync browser extension (also referred to as "the Extension", "we", "our"). We believe in absolute privacy and transparency. This document explains what data the extension interacts with, why, and how your information is handled.
1. Single Purpose & Core Functionality
The single purpose of CP-to-GitHub Sync is to automatically back up your accepted competitive-programming solutions from supported platforms (LeetCode, HackerRank, Codeforces, CodeChef, and GeeksforGeeks) directly to your own GitHub repository.
The extension operates 100% client-side inside your browser. We do not own, operate, or connect to any intermediary backend servers. All network requests are made directly from your browser to the official APIs of GitHub and the supported programming websites.
2. Data We Process & How It Is Handled
A. GitHub Authentication Credentials
- What is processed: Your GitHub Personal Access Token (PAT) or OAuth Access Token.
-
Why: To authorize the extension to create and update solution files and repository
README.mdfiles inside your designated GitHub repository via GitHub's official REST API (https://api.github.com). -
Where it is stored: Stored strictly in
chrome.storage.localon your own device. It is never saved inchrome.storage.sync(so Google never syncs it), and in-flight temporary device codes exist only in memory (chrome.storage.session). - Security: The token is never shared with content scripts or external pages. Only the background service worker uses the token to communicate with GitHub.
B. Source Code and Problem Data
- What is processed: When you achieve an "Accepted" verdict on a supported site (or manually click "Sync now"), the extension reads your submitted solution code, problem title, problem difficulty, problem URL, and problem description.
-
Why: To format the code file and generate a companion
README.mdto commit into your GitHub repository under an organized folder structure (e.g.Platform/Language/Difficulty/Problem/). -
Destination: Transmitted directly to GitHub via
https://api.github.cominto your chosen repository. It is never routed through any third-party server.
C. Extension Preferences & Sync Statistics
- What is stored: Your selected repository name, target branch, path format options, enabled platform toggles, submission hashes (for deduplication so duplicate commits are avoided), and local streak/problem count statistics.
-
Where it is stored: Exclusively in local extension storage
(
chrome.storage.local) on your computer.
3. What We Do NOT Collect
- No Analytics or Telemetry: We do not include Google Analytics, Mixpanel, Sentry, or any tracking libraries.
- No Account Creation: You do not need to register with any third-party service other than GitHub.
- No Ad Networks: The extension is completely free of advertisements.
- No Browsing History: The extension only activates on the specific problem pages of the five supported platforms. It has no access to and does not inspect your browsing history or other websites.
- No Cookies: The extension does not read or transmit your cookies or session credentials from coding platforms.
4. Browser Permissions & Why They Are Needed
Under Chrome's Manifest V3 security model, the extension requests the minimum set of permissions strictly necessary to perform its core functions:
| Permission | Purpose & Plain-English Justification |
|---|---|
storage |
To store your GitHub token, repository preferences, platform toggles, and deduplication sync hashes locally on your computer. |
alarms |
To schedule background retries if GitHub rate limits your account or if a network blip interrupts a commit. |
notifications |
To provide optional desktop feedback when a solution is successfully pushed to GitHub or if a sync fails. |
tabs |
To check if your currently active browser tab is on a supported competitive programming site when you click "Sync now". |
scripting |
To inject helper content scripts into supported problem pages after installation without requiring a full browser restart. |
identity |
To facilitate the secure GitHub OAuth authentication flow directly between your browser and GitHub. |
Host Permissions
Host permissions are restricted strictly to the GitHub API and the 5 supported platforms:
| Host Match Pattern | Justification |
|---|---|
https://api.github.com/* & https://github.com/* |
To authenticate via GitHub OAuth, verify repository access, and commit solution files to your repository. |
https://leetcode.com/* & https://leetcode.cn/* |
To detect accepted submissions and extract the problem title, difficulty, and your accepted solution. |
https://www.hackerrank.com/* |
To detect accepted submissions and extract the problem title, difficulty, and your accepted solution. |
https://codeforces.com/* & https://*.codeforces.com/* |
To detect accepted submissions and extract the problem title, difficulty, and your accepted solution. |
https://www.codechef.com/* |
To detect accepted submissions and extract the problem title, difficulty, and your accepted solution. |
https://*.geeksforgeeks.org/* |
To detect accepted submissions and extract the problem title, difficulty, and your accepted solution. |
5. Third-Party Services
The extension interacts solely with:
- GitHub API: Used to commit your solutions and manage your repository. Your interactions with GitHub are governed by the GitHub Privacy Statement.
- Supported Coding Platforms: (LeetCode, HackerRank, Codeforces, CodeChef, GeeksforGeeks). The extension only reads data when you navigate to those websites in your own browser session.
6. User Control & Data Deletion
You have complete control over your data at all times:
- Clearing Sync History: You can click the "Forget sync history" button in the extension popup under the Platforms/Advanced section to wipe the local deduplication cache.
- Signing Out: Clicking "Sign out" immediately purges your GitHub token, user profile cache, and repository data from local storage.
-
Uninstalling the Extension: Removing the extension from Chrome (via
chrome://extensions) automatically and permanently deletes all data stored inchrome.storage.local. - Revoking GitHub Permissions: You can revoke the extension's OAuth authorization or delete your Personal Access Token at any time directly through your GitHub Authorized Applications Settings.
7. Children's Online Privacy Protection Act (COPPA)
Our extension does not knowingly collect or solicit any personal information from children under the age of 13. The extension is intended for developers, students, and competitive programmers of all ages without any data harvesting.
8. Changes to This Privacy Policy
We may occasionally update this Privacy Policy to reflect changes in extension features, supported platforms, or browser store requirements. Any revisions will be reflected with an updated "Last updated" date at the top of this page.
9. Contact & Open Source
If you have questions, feedback, or concerns regarding this Privacy Policy or your data, you can open an issue on our GitHub repository or contact the project maintainer.
- Repository: GitHub Repository
- Support: Open an Issue on GitHub