{"slug": "show-hn-cc-probeline-claude-code-status-line-with-fable-limits-and-turn-costs", "title": "Show HN: Cc-probeline – Claude Code status line with Fable limits and turn costs", "summary": "LabZink released cc-probeline, an open-source status line for Claude Code that prices every turn, subagent, and cache rebuild from local session logs without network calls, API keys, or telemetry. The tool, installable via Homebrew or a shell script, shows per-turn costs, subagent spending, cache rebuild costs, and extra usage in dollars, with optional daily price updates from GitHub and a privacy policy. It aims to help users spend their limits intentionally rather than paying for invisible inefficiency.", "body_md": "A status line for Claude Code that prices every turn — yours, your subagents', and every cache rebuild — reading the session log already on your disk. No account, no API key, no telemetry.\n\nSession totals come from Claude Code itself; the per-turn breakdown is computed here from token counts against a public price table, and labelled as an estimate throughout.\n\nIt makes no network calls while it runs. Two optional, opt-out background actions exist: a once-a-day check of one public file on GitHub (current prices and the latest version), and a refresh of Claude Code's own usage cache — its `/usage`\n\nscreen run headlessly, once when a session starts and rarely after that, and only while your plan actually has a model-scoped weekly limit or paid extra usage to keep current. Neither sends anything about your session. [Privacy policy →](/labzink/cc-probeline/blob/main/PRIVACY.md)\n\n**Spend your limits on purpose, instead of paying for inefficiency you can't see.**\n\n**Install:**\n\n```\nbrew install labzink/homebrew-tap/cc-probeline                                                   # macOS\ncurl -fsSL https://raw.githubusercontent.com/labzink/cc-probeline/main/scripts/install.sh | sh   # macOS / Linux\n```\n\nWindows (Scoop) and the Claude Code plugin marketplace: ** all install options →**. Every release ships with SHA256 checksums and\n\n[signed SLSA build provenance](#why-its-called-a-probe).\n\nMost status lines count things — tokens, turns, running agents. **The probe prices them.** Everything below comes out of your session's local log: data Claude Code has, but never shows you.\n\n**Every turn, priced**— not one opaque session total: a live table where each step lands with its own cost.** What your subagents spend**— subagent work is invisible while it runs. The probe puts each agent on the bill, live, next to your own turns.** Cache rebuilds, in dollars**— idle past the TTL (60 min for the orchestrator, 5 for subagents), and your next turn quietly rewrites the whole cache. The probe ages it live (⏱ 60m → 0m) and prices the rebuild when it hits.**Extra usage in money, not percent**— once your plan is spent, the line shows what you have actually paid on top this month against your ceiling ($20.40 / $120.00), straight from Anthropic's own figure rather than an estimate.**Prices that stay correct**— your dollars are only as honest as the price table behind them. cc-probeline refreshes its rates over the network — one optional, opt-out check a day, never during render — so when Anthropic changes prices your totals follow within a day, no reinstall. Offline or opted out, it falls back to the table baked into the build.**5h / 7d limits with reset clocks (plus the model-scoped Fable cap, if your plan carries one)**— watch them fill, know exactly when they free up, without stopping to open /usage.** Colour-coded zones**— numbers shift colour as they enter warning and critical territory, so the line catches your eye exactly when it should.- Plus the table stakes: model, context, git, session time.\n\n[\n](/labzink/cc-probeline/blob/main/assets/screenshots/02.png)**Every turn lands on its own line — orchestrator and subagents alike — priced as it happens. Finally you see where every dollar of your reasoning actually goes.**\n\n**Built to fit your terminal.** Don't like a segment, the colours, or the width? The `/cc-probeline-config`\n\nwizard walks you through it and writes the config for you — no hand-editing TOML. (That's the hint at the bottom of the dashboard above.)\n\n[\n](/labzink/cc-probeline/blob/main/assets/screenshots/03.png)**The moment you cross 100%, you'll see it — and the extra bill stays under your control.**\n\n[\n](/labzink/cc-probeline/blob/main/assets/screenshots/04.png)**You get warned while there's still time to act — not after you've hit the wall.**\n\n[\n](/labzink/cc-probeline/blob/main/assets/screenshots/05.png)**Cache rebuilds stop being silent — you see the price the moment they happen.**\n\nAll of it read, none of it touched — that's [why it's called a probe](#why-its-called-a-probe).\n\nA probe is an instrument of observation, not intervention. Everything cc-probeline does is read and display — it never reaches into your account or reports on you.\n\n**What it reads:** your session's JSONL log (`~/.claude/projects/…`\n\n) and the status-line payload Claude Code pipes directly to it.**What it doesn't touch:** credentials, keychain, OAuth tokens — no telemetry, ever. Rendering is fully offline. Its own only network call is one optional, opt-out price/version check a day — a plain download of a public file, sending nothing about your session. It can also ask Claude Code to refresh its usage cache in the background (`/usage`\n\n, headless, throttled machine-wide, opt-out) so a model-scoped weekly limit stays current: that call is Claude Code's, with your credentials, and costs no model tokens. Turn both off and cc-probeline neither sends nor starts anything.**The binary:** single compiled Go binary, no runtime dependencies, one run ≈ 5 ms.**Auditable:** MIT license, open source, every release published with SHA256 checksums and signed build provenance (SLSA) — verify any download with`gh attestation verify <file> --repo labzink/cc-probeline`\n\n.\n\nEvery channel below does the same thing: install the binary **and** wire it into\nyour Claude Code status line. After installing, **restart Claude Code** and you're\ndone — no extra commands. (If you already have a custom status line, it's left\nuntouched; switch to cc-probeline with `cc-probeline install --merge-settings --force`\n\n.)\n\n**Homebrew** (macOS — it's a cask; on Linux use curl below):\n\n```\nbrew install labzink/homebrew-tap/cc-probeline\n```\n\n**curl** (macOS / Linux — downloads the release archive for your OS, verifies SHA256, installs the binary):\n\n```\ncurl -fsSL https://raw.githubusercontent.com/labzink/cc-probeline/main/scripts/install.sh | sh\n```\n\n**Scoop** (Windows, experimental):\n\n```\nscoop bucket add labzink https://github.com/labzink/scoop-bucket\nscoop install cc-probeline\n```\n\n**Claude Code plugin marketplace:**\n\n```\n/plugin marketplace add labzink/cc-probeline\n```\n\nThen install the plugin from the `/plugin`\n\nmenu (or `/plugin install cc-probeline`\n\n) and **restart Claude Code** — the slash commands below only show up after a restart.\n\nOnce restarted, run `/cc-probeline-install`\n\n: it detects your OS, installs the binary through the right channel (Homebrew / Scoop / curl) and wires the status line — asking before it runs anything. You can still install manually with any channel above. The plugin also gives you `/cc-probeline-update`\n\nto upgrade later and the `/cc-probeline-config`\n\nwizard.\n\n**Verify your installation:**\n\n```\ncc-probeline --check\n```\n\nPrints `Installation OK`\n\n.\n\n- Claude Code on macOS, Linux, or Windows.\n- For the quota segment (5h / 7d limits, extra usage): Claude Code ≥ 2.1.80, which passes\n`rate_limits`\n\nin the status-line payload. On older versions the quota segment is hidden; everything else works normally.\n\nRun the interactive wizard from inside Claude Code:\n\n```\n/cc-probeline-config\n```\n\nIt walks you through probes, table size and background refresh — and writes the TOML for you. Or edit `~/.config/cc-probeline/config.toml`\n\ndirectly (validate with `cc-probeline check-config`\n\n):\n\n```\n[general]\ntable_rows    = 10          # rows in the per-turn cost table (max 40)\nno_color      = false       # true = plain monochrome output\nprice_check   = true        # false = never fetch prices; use the table baked into the build\nusage_refresh = true        # false = never run Claude Code's /usage in the background\n\n[widgets]                   # flip any segment on/off\nmodel = true\neffort = true\ncost = true\nctx = true\nquota = true\ngit = true\nproject = true\nemail = true\ntime = true\n\n[thresholds]\ncost_budget_usd = 25        # turn the cost segment red past $25 (0 = off)\n\n# Colour flips for the context bar — yellow / orange / red.\n# Must strictly increase; bad values fall back to these defaults.\nctx_notice_ratio   = 0.50\nctx_warn_ratio     = 0.70\nctx_critical_ratio = 0.90\n\n# Same three flips per rate-limit window. The 7d window mirrors these keys\n# as quota_7d_notice_ratio / _warn_ratio / _critical_ratio.\nquota_5h_notice_ratio   = 0.50\nquota_5h_warn_ratio     = 0.70\nquota_5h_critical_ratio = 0.90\n```\n\nConfig is read in precedence order: `CC_PROBELINE_CONFIG=/path`\n\n(explicit override) → `.cc-probeline.toml`\n\nin the current repo (project-local) → `~/.config/cc-probeline/config.toml`\n\n(global). Every field is optional; missing fields use the built-in defaults, and an invalid value never breaks the status line — it falls back to the default.\n\nFull reference: [ scripts/config.toml.example](/labzink/cc-probeline/blob/main/scripts/config.toml.example).\n\nWhen a newer release is out, the status line surfaces it: `↑ update: vX → vY — run /cc-probeline-update`\n\n. Run that command inside Claude Code and it upgrades through whichever channel you installed with (and installs it for you if the binary is missing). Or update by hand:\n\n```\nbrew upgrade labzink/homebrew-tap/cc-probeline                                                   # Homebrew\nscoop update cc-probeline                                                                        # Scoop\ncurl -fsSL https://raw.githubusercontent.com/labzink/cc-probeline/main/scripts/install.sh | sh   # curl (re-runs latest)\n```\n\nThe update notice comes from a once-a-day price/version check; turn it off with `price_check = false`\n\n(or in the `/cc-probeline-config`\n\nwizard) and cc-probeline stays fully offline. Updating keeps your status-line wiring intact.\n\nUninstalling restores the status line you had before (byte-for-byte, if cc-probeline replaced one) and removes the binary. Use the command for the channel you installed with — **restart Claude Code afterwards**:\n\n```\nbrew uninstall cc-probeline                                                                            # Homebrew — also restores your previous status line\ncurl -fsSL https://raw.githubusercontent.com/labzink/cc-probeline/main/scripts/install.sh | sh -s -- --uninstall   # curl\n```\n\n**Scoop** (Windows): restore the status line first, then remove the binary — `scoop uninstall`\n\ncan't run the restore step itself:\n\n```\ncc-probeline uninstall\nscoop uninstall cc-probeline\n```\n\nTo only un-wire the status line without removing the binary, run `cc-probeline uninstall`\n\non its own.\n\nI built this for myself. I wanted to see under the hood of Claude Code — where the money and the limits actually go. A working version took a few days, and it was clear it wouldn't be useful only to me.\n\nWhat came after went into making it a product rather than a prototype, not into more features. I didn't write the code — Claude Code wrote every line of it. My interest was elsewhere: building a development process with AI that actually holds up.\n\nIn practice that means concept and spec before code, work in phases against a fixed contract, and every call mine, reviewed detail by detail. The development itself runs as a process: a phase is split into isolated subtasks, each handled by its own subagent under a narrow contract, while an orchestrator agent collects the results and accepts the work. A phase fits into a single session, and its output always lands on disk — spec, plan, status, log — so the next session picks up exactly where the previous one stopped and nothing is lost to an overflowing context.\n\nThere was no ready-made pipeline for any of this, so I assembled it by hand: the agent roles and their briefs, the handoff format between sessions, the rules for accepting work. A sizeable share of the time went into the pipeline rather than into the product.\n\nOn top of it sit the guard tests: checks against real session data, and snapshots of the real rendered status line — so a fix doesn't mean re-checking everything by hand.\n\nThat's what the whole thing was for: code written by an AI that matches the vision and the design instead of drifting into mush. The commit history is public and reads like a build log — you can watch the project take shape, phase by phase.\n\n**Contributing:** bug reports and ideas are welcome — open an issue. Code contributions are possible, but they're not the primary path: the codebase is developed through an AI pipeline in tight collaboration with the author, so pull requests need to fit that workflow. When in doubt, open an issue first.\n\nIf cc-probeline ends up saving you money, you can send a little of it back: [GitHub Sponsors](https://github.com/sponsors/labzink)\n\nMIT License.", "url": "https://wpnews.pro/news/show-hn-cc-probeline-claude-code-status-line-with-fable-limits-and-turn-costs", "canonical_source": "https://github.com/labzink/cc-probeline", "published_at": "2026-08-12 14:07:50+00:00", "updated_at": "2026-08-12 14:13:28.165506+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-products"], "entities": ["LabZink", "Claude Code", "Anthropic", "cc-probeline", "Homebrew", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-cc-probeline-claude-code-status-line-with-fable-limits-and-turn-costs", "markdown": "https://wpnews.pro/news/show-hn-cc-probeline-claude-code-status-line-with-fable-limits-and-turn-costs.md", "text": "https://wpnews.pro/news/show-hn-cc-probeline-claude-code-status-line-with-fable-limits-and-turn-costs.txt", "jsonld": "https://wpnews.pro/news/show-hn-cc-probeline-claude-code-status-line-with-fable-limits-and-turn-costs.jsonld"}}