Release 0.69.0
What's Changed
0.69.0 turns the local usage ledger introduced in 0.68 into a default-on, opt-out feature and adds a per-repo view to the cost report. Recording stays entirely local: the ledger is a plain JSONL file under the cache directory that holds metadata only (task, model, prompt-token estimate, latency, and a repo identifier) and never leaves the machine. It records no prompt, diff, or code content.
Highlights
Opt-out local usage stats
- Added a
telemetry.usageconfig key that turns the cross-run usage ledger on or off. Recording resolves in this order: theCOCO_USAGE_LOGenvironment variable wins either way (a path,1, ortrueforces it on;0orfalseforces it off), thentelemetry.usage, then off. - Added a first-run consent step to every command. The first time a command runs on an interactive terminal with no preference set anywhere, coco defaults recording on, saves the choice to the global config, and prints a one-time notice. Non-interactive and CI runs stay off, so piped and automated commands are never opted in.
- Added an opt-out prompt to
coco init(defaults to on). The choice is stored per machine in the global config, not in the shared project config, so a cloned repo cannot flip a collaborator's recording on.
Per-repo cost breakdown
- Tagged each usage record with a readable
owner/repoidentifier, resolved from the git remote with the working directory name as a fallback. The identifier works for any forge (GitHub, GitLab, Bitbucket, self-hosted). - Added a
By reposection tococo doctor --costand abyRepoarray to its--jsonoutput, so usage can be attributed per project.
Manage the ledger
- Added
coco doctor --clearto delete the local usage ledger. - Capped and rotated the ledger automatically. Once the file passes 5 MB it is rewritten with only its most recent records, so a long-lived install stays bounded.
Notable
- The recording posture changed from opt-in to opt-out. In
0.68nothing was written unlessCOCO_USAGE_LOGwas set. In0.69an interactive first run defaults recording on after a one-time notice, andcoco initasks. Recording is still local-only and reversible: opt out withcoco init, settelemetry.usagetofalse, or setCOCO_USAGE_LOG=0. TheCOCO_USAGE_LOGenvironment variable remains authoritative and overrides the config either way. - The preference is per machine. It lives in the global XDG config (
$XDG_CONFIG_HOME/coco/config.json), so it follows the user across repos rather than being committed to any one project.
Breaking Changes
None. Existing installs that never set telemetry.usage and never run an interactive command keep recording off, and COCO_USAGE_LOG keeps its 0.68 meaning. The only behavior change is the first-run default for interactive sessions, which prints a notice and is reversible.
Full Changelog: 0.68.0...0.69.0