Security & privacy · 02 macOS only

Disclosure

How to report a security vulnerability in Halton Meter — the dedicated email, response timelines, scope, and the hardening guidance every operator should already be following.

macOS 12+ · Python 3.11+ Reading time 2 min Updated May 11, 2026

Halton Meter is a local network proxy that handles API keys in transit and may store request and response bodies on disk when body capture is enabled. We treat security reports seriously and respond on a documented timeline. This page is the disclosure contract.

How to report

Do not open a public GitHub issue for security reports.

Email operator@haltonlabs.com with:

  • A description of the issue and its impact
  • Steps to reproduce — proof-of-concept welcome
  • The version (or commit SHA) you tested against
  • Your name and any disclosure preferences

Response timeline

StageTarget
Acknowledge receiptWithin 2 business days
Initial assessmentWithin 7 days
Fix or mitigation for high-severity issuesWithin 30 days

Reporters are credited in release notes unless they ask not to be.

In scope

  • The daemon (daemon/) — proxy interception, certificate handling, local storage, HTTP API
  • Anything that could leak API keys, prompt content, or response data
  • Privilege-escalation paths through the keychain trust step or the launchd plist generation

Out of scope

  • Vulnerabilities in upstream dependencies — report those upstream; we’ll bump versions
  • Self-XSS or attacks requiring local machine access beyond the proxy
  • Denial of service against the local daemon — Halton Meter is a single-user tool by design

Hardening guidance

The defaults are sensible, but these are the operator-side checks worth doing:

Rotate any API key that touched this machine before sharing it. Body capture, if enabled, may have captured the key inside an authorization header. The redaction pass strips it, but treat anything that ever crossed the proxy as potentially recoverable.

halton-meter bodies stats

shows whether bodies have been captured at all and what the redaction pass found. If your model of “what’s on this disk” assumes no captures, verify it.

Treat ~/.halton-meter/ as sensitive. It contains your captured costs and potentially redacted prompt content. Disk-encrypt your machine; Halton Meter does not encrypt the SQLite at rest.

Remove the CA when you’re done. The mitmproxy CA installed by init only signs traffic to LLM provider endpoints, but it is still a CA in your System keychain.

~ — remove the CA
$ halton-meter uninstall
$ sudo security delete-certificate -c mitmproxy /Library/Keychains/System.keychain

Audit the certifi patch when changing Python interpreters. The patch is per-Python — a new venv carries an unpatched certifi bundle and won’t trust the mitmproxy CA. Re-run halton-meter setup --force from the new interpreter, or remove the CA from the old one if it should not still be trusted there.

The daemon itself never reaches out. Halton Meter Cloud is an opt-in sync layer, off by default; enabling it is a separate, deliberate act and does not retroactively share data captured before pairing.

What’s next