Privacy policy

Last updated: 2026-10-16

Short version: Sipcode is a command-line tool that reads files on your computer and writes files on your computer. It makes no network calls, has no telemetry, no account and no sign-in, and uploads nothing. The Sipcode plugin for Codex runs the same local sipcode command and adds nothing to that. This page covers the Sipcode CLI (npm package sipcode), its MCP server and its Codex plugin. The source version of this policy is PRIVACY.md in the repository.

Personal data we collect

None. Sipcode never sends anything to the developer or to anyone else, so nothing about you, your code or your prompts reaches us. Everything below happens only on your own computer.

  • No analytics, no event pings, no error reporting service.
  • No telemetry of any kind, not even an opt-out kind.
  • No signup, no account, no signed-in mode, no API key prompt.
  • No auto-update check, no version ping, no usage counter.
  • No background daemon. Sipcode runs only when you run a command and exits when it is done.

What Sipcode reads on your computer

Local files only, read-only, and only when you run a command (or ask the Codex plugin a question, which runs one command):

  • ~/.claude/projects/<hash>/*.jsonl: the session transcripts Claude Code already writes on your computer. Used by why, stats, receipt, benchmark and regress.
  • ~/.codex/sessions/ and ~/.codex/archived_sessions/ (or the folder CODEX_HOME points to): the session logs OpenAI Codex writes on your computer. Used by stats, today, forecast, trend, impact, why, receipt, drift, regress and limits, and by the MCP session tools and get_codex_limits, when Codex is installed. limits and today also read the usage-limit readings Codex writes into those logs (percent used, window length, reset time, plan type).
  • Your repository's source files, for manifest, score and init. Parsing happens in-process.
  • Git history, through the git program already on your computer, for hot files and change frequency.
  • The pricing tables shipped inside the npm package (Anthropic and OpenAI). They come with each release and are never fetched.

What Sipcode writes on your computer

Every write is caused by a command you ran. There are no background writes.

  • .sipcode/ files in your repository: manifest, receipts (HTML and PNG), stats HTML, badge JSON, score HTML, benchmark HTML, and install-state.json (when you last ran rules --install or hygiene --install, and the rules mode, used by impact).
  • One marked block in your CLAUDE.md. sipcode rules --uninstall removes it exactly.
  • Entries in ~/.claude/settings.json and hook scripts at ~/.claude/hooks/sipcode-*.mjs, only when you run sipcode hygiene --install. --uninstall removes them. These scripts make no network calls either.
  • The proxy hook, ~/.claude/hooks/sipcode-proxy.mjs plus its entry in ~/.claude/settings.json, only when you run sipcode proxy --install or sipcode init (skip it with init --no-proxy). sipcode proxy --uninstall removes it. It runs inside Claude Code before each tool call, reads and writes only local files, and makes no network calls.
  • The receipt PNG is copied to your clipboard, only when you run sipcode receipt, using your system's own clipboard tool.
  • Local caches under ~/.sipcode/, so repeat runs do not re-read every log:
    • ~/.sipcode/usage-cache/claude-code.json and ~/.sipcode/usage-cache/codex.json (today, forecast, limits, regress): for each session log, its size and modified time, plus token counts, model names, timestamps, request ids, each Claude Code request's version and entrypoint and whether it followed a tool result, the session's working folder and the paths of files the agent read. Never message text, prompts, file contents or command output.
    • ~/.sipcode/drift/sessions-v3.jsonl (drift): per-session metrics (session id, end time, token counts, cache-hit rate, duplicate-read tokens, and the project folder as an encoded name such as C--Projects-app). ~/.sipcode/drift/configs.jsonl keeps the names of your Claude Code MCP servers over time. An older ~/.sipcode/drift/sessions.jsonl from before v1.7.0 is no longer used and can be deleted.
    • ~/.sipcode/proxy-reads/<session-id>.jsonl (the proxy hook's re-read check, Claude Code only): for each file Claude read in that session, its path, a sha256 hash of its contents, modified time, size, a rough token estimate, and the turn and time it was first read. Never the file contents. A <session-id>.warmed marker beside it records that the cache was filled once from the session transcript.
    • ~/.sipcode/proxy-stats/proxy-stats-*.jsonl (the proxy hook, read by sipcode proxy --stats): one line per rewritten or deduplicated tool call, with its time, the tool name, which rewriter acted, the estimated tokens saved and an integrity score. Never the command output.
    • ~/.sipcode/proxy-signals/<session-id>.jsonl (the proxy hook, Claude Code only): the search patterns Claude sent to Grep, Glob or a grep command in that session, with the tool name and the time, so a later read can return only the matching symbols.
    • ~/.sipcode/install-pending.json: written only when sipcode init runs while a Claude Code session is active. It holds the hook script and settings paths so the next quiet sipcode command can finish the proxy install, and is removed once applied.
    • ~/.sipcode/benchmark-live/results.jsonl: written only when you run sipcode benchmark --vs-rtk --live. One line per run with the task id, condition, model, token counts, the cost Claude Code reported and the duration. That command runs claude --print, which uses your Claude account and the network the way Claude Code always does.
    • ~/.sipcode/.star-nudge: a marker file (its only content is sipcode-star-nudge/1) so the one-time "star on GitHub" line after proxy --stats is shown only once per machine.

Why it reads this

Only to answer the question you asked: token use and cost at API prices, usage limits, why a session was expensive, whether a tool got worse after an update, and the other reports listed in the README. The caches exist only to make the next run faster.

Who receives it

Nobody. Sipcode does not upload or share anything. What it prints goes to your terminal. When you use the Codex plugin or the MCP server, Sipcode's printed answer goes to the agent you asked (Codex or Claude Code), on your computer, and from there it is handled under that agent's and its provider's own terms and privacy policy, like anything else you share in that chat.

How long it is kept

The caches stay on your disk until you delete them. They are never uploaded. To remove them, delete the folders, for example rm -rf ~/.sipcode/usage-cache ~/.sipcode/drift, or all of ~/.sipcode. They are rebuilt on the next run; the only cost is a slower first run.

Your controls

  • Sipcode does nothing unless you run a command. There is no daemon, no installed service and no startup item.
  • Delete ~/.sipcode/ at any time.
  • Undo the optional changes with sipcode rules --uninstall, sipcode hygiene --uninstall and sipcode proxy --uninstall.
  • Remove Sipcode with npm uninstall -g sipcode, and remove the Codex plugin from Codex's plugin list.

How the no-network promise is checked

It is a property of the code, checked by a test. tests/privacy/no-network.test.ts scans every TypeScript file under src/ and fails the build if it finds a runtime import of node:http, node:https, node:net, node:dgram, node:tls or node:dns, or a top-level fetch(, new XMLHttpRequest or new WebSocket(, including in the generated hook scripts. If that test fails on a release, that release breaks this policy: please open an issue.

Honest scope

The guarantee covers Sipcode's own code. It does not extend to third-party libraries, to Claude Code or Codex themselves, or to your shell, operating system or editor. The source and the test are public so you can check them.

Two commands start another program that uses the network, and only when you run them: sipcode update --run runs npm i -g sipcode@latest (npm downloads the new version), and sipcode benchmark --vs-rtk --live runs claude --print. Without --run, sipcode update only prints the npm command. The Codex plugin never runs either of them.

This website

This website (anuj7411.github.io/sipcode) is separate from the CLI and the plugin. It is hosted on GitHub Pages and counts page views with Umami Cloud, which does not set cookies and records page-level data such as the page address, referring site, browser, operating system, screen size and language. The page loads fonts from Google Fonts and the Product Hunt badge image from Product Hunt, so those services and GitHub receive your browser's request (including your IP address) under their own privacy policies. Nothing the CLI or the plugin does is sent to this website.

Future changes

If a cloud feature ever ships, it will be opt-in, off by default, and announced in the version that introduces it. Changes to this policy are made in PRIVACY.md and on this page, with a new date at the top.

Contact

Questions about privacy: support, or open an issue at github.com/Anuj7411/sipcode/issues. Sipcode is built by Anuj Ojha.