Privacy Policy
Last updated: August 2026
TL;DR — CodeLedger never sees your code, your AI keys, or your GitHub token. Everything lives in your browser and your own GitHub repo.
1. Data Collection
By default, nothing is collected on our servers. CodeLedger runs entirely inside your browser. There is no account, no profile, and no advertising or tracking infrastructure.
There is exactly one thing that can be sent to us, and it is off unless you turn it on. If
you enable Anonymous Usage Stats in Settings → Advanced, then each time a
solved problem is committed the extension sends a single counter hit to
counter.vkrishna04.me containing only the platform name and the extension
version — for example { "platform": "leetcode", "version": "x.y.z" }. It
carries no code, no problem, no token, no account, and no identifier of any kind, and
nothing is sent while the setting is off.
The extension stores the following data only in your browser's local storage and IndexedDB:
- Your GitHub OAuth access token (used to push commits to your repo)
- Your AI provider API keys (Gemini, OpenAI, Claude, DeepSeek, Ollama, OpenRouter)
- Extension settings (repository name, commit preferences, AI configuration)
- Solved problem metadata and AI reviews (in IndexedDB)
- AI chat history
- Your streak state — vacation days taken and which achievements you have already seen
- The list of friends' repositories you have added, if you use the party comparison. It is a list of public repository names, kept on your side — nobody is notified that you added them.
So a second browser can pick up where the first left off, some of this is also written into
your own repository, in a .codeledger/ folder beside your solutions:
sync.json and config.json hold your settings and your friend list;
behaviour-bank.json holds solve times, attempt counts, hint views and short
summaries of what an AI review flagged, and Settings → Advanced turns that recording off;
roadmaps.json and knowledge.json hold the roadmaps and insights
written in the Behaviour Bank tab. Your GitHub token, your AI API keys and your vacation
state are deliberately excluded and never leave local storage. Everything else in that
folder is as public as the repository you chose.
2. Data Handling & Usage
Your data is processed strictly to provide the extension's core functionality: pushing code to your GitHub repo and requesting AI code reviews using your provided API keys. CodeLedger does not track your browsing activity, sell your data, or use advertising SDKs.
3. Data Storage & Security
All data remains on your device under your control, isolated by the browser's extension storage boundary — other sites and other extensions cannot read it. It is not separately encrypted at rest, so anyone with access to your operating system profile can read it, exactly as with the rest of your browser profile. You can delete all of it at any time by uninstalling the extension or clearing its local data.
4. Data Sharing & Third-Party Disclosure
We do not sell or share your data. Data is only transmitted to the third parties you explicitly configure:
- GitHub: Your solution code and metadata are sent directly to your own repository using the GitHub API.
- AI Providers (Optional): Your code and metadata are sent to the provider you select using your own API key. You are subject to their respective privacy policies.
- Cloudflare Worker: Used exclusively to relay the GitHub OAuth code exchange. No tokens or personal data are stored or logged on the worker.
-
mermaid.ink (optional, one click at a time): When an AI review contains a
diagram, the extension shows its source alongside a Render diagram
button. Only if you press that button is the diagram source sent to
mermaid.inkto be drawn as an image. The source describes the shape of your solution but is not the code itself, no token is involved, and nothing is sent if you never press it. -
shields.io (optional, off by default): Streak badges are drawn as SVG
files committed to your own repository, with nothing in the middle. If you switch the
badge style to shields in Settings → Streaks, your README instead loads images from
shields.io, which fetches the numbers from your repository — so shields learns your repository URL and sees a request each time someone views the README. It receives no code and no token, and switching back to the self-hosted style stops it. -
raw.githubusercontent.com (only if you add a friend): The party
comparison reads each added repository's public
badges/stats.jsonwith an anonymous request — no token, and nothing of yours is uploaded. GitHub therefore sees your IP address asking for their file. The people you add are not told, and removing everyone from the list stops the requests. -
The CodeLedger compare page (only if you share a link): The share button
builds a URL of the form
/compare?repos=owner/repo,…. That page holds no state — it reads the repositories named in the link directly from GitHub in the visitor's own browser. The repository names do appear in the request line to our server, as they do in any URL, and anyone you send the link to can open it. -
Anonymous counter (opt-in, off by default): If you enable Anonymous Usage
Stats, a platform name and version number are sent to
counter.vkrishna04.meas described in section 1. Disabling the setting stops it immediately.
Separately from anything sent to a third party: if your ledger repository is public — which is the point for most people, since it is a portfolio you did not have to write — then your solutions, your solve history, your streak badges and the generated GitHub Pages site can be read by anyone with the link. Making the repository private keeps all of it to you and anyone you invite.
The extension shows you this same list live under Settings → Privacy, computed from your actual configuration rather than written down here, so it cannot fall out of date with what the extension does.
5. Children's privacy
CodeLedger is not directed at children under 13. We do not knowingly collect information from children.
6. Changes to this policy
If we make material changes, we will update the "Last updated" date above and note it in the CHANGELOG.
7. Contact
Questions? Open an issue on GitHub or email github@vkrishna04.me.