Paperclip

Paperclip weighs notional pricing for subscription agents that look free

A Paperclip operator reported 19.8 million input tokens in one hour while the subscription-backed cost ledger stayed at zero. Two open implementations propose API-equivalent pricing; one makes an effective-cost budget metric enforceable while preserving billed cents as the cash ledger.

← Back to homeOriginal source ↗

paperclipai/paperclip issue #339 is the inspected primary source: “Estimate cost for subscription-billed agents using token counts + model pricing.” The related records below were inspected as supporting context rather than independent confirmation.

The facts

- paperclipai/paperclip issue #339 was created 2026-03-08T14:01:42Z and was open at inspection; its title is “Estimate cost for subscription-billed agents using token counts + model pricing.” - paperclipai/paperclip PR #11104 was created 2026-08-08T20:46:40Z and was open at inspection; its title is “feat(cost,budgets): impute token cost for subscription runs and enforce it.” - paperclipai/paperclip PR #3330 was created 2026-04-10T19:17:01Z and was open at inspection; its title is “feat: impute API-equivalent cost for subscription-included runs.” - The repository reported 75901 stars, 5046 open issues, default branch master, and last push 2026-08-09T00:48:59Z. - The latest tagged-release baseline checked was v2026.722.0 published 2026-07-22T23:05:41Z.

What changed

paperclipai/paperclip issue #339 reports: Problem When agents use subscription-based billing (e.g., Codex CLI with ChatGPT Plus/Team/Pro auth), Paperclip records cost_cents = 0 for all cost events because OpenAI does not return cost information for subscription usage. This makes the budget management feature (budget_monthly_cents, spent_monthly_cents) effectively useless for subscription-billed agents — they always appear to cost nothing, even when consuming millions of tokens. Real-World Impact In our setup, a single codex_local agent consumed **19.8M input tokens** in one hour during a cascade of heartbeat runs. Because cost_cents = 0, there was: No budget enforcement to throttle or stop the agent No visibility in the dashboard that significant resources were being consumed No way to compare cost efficiency between subscription vs API-billed agents Proposed Solution For subscription-billed runs (billingType = "subscription"), estimate equivalent cost using: 1. **Token counts** (already tracked in input_tokens / output_tokens) 2. **Model name** (already tracked in model) 3. **A reference pricing table** mapping model → estimated $/M input tokens and $/M output tokens Example for the run above: Model: gpt-5.4 Input: 19.8M tokens × ~$2.50/M = ~$49.50

paperclipai/paperclip PR #11104 reports: Thinking Path - Paperclip is the open source control plane that people use to run companies of AI agents. - Cost and budgets are the control plane's safety layer. Runs write cost_events, and budget_policies enforce spend limits. - Many agents run on subscription plans, for example Claude Max. These runs report cost_cents = 0. - So cost views and budget metrics read zero even when the runs use millions of tokens. Hard-stops never fire for this usage. - This means the "safe autonomy, no hidden token burn" promise is not enforced for subscription runs. - This pull request imputes a token cost from a calibratable per-model price map, shows it in the cost views, and adds a budget metric that enforces on it. - The benefit is that subscription usage becomes visible and can trip the same soft and hard budget gates as billed spend. Linked Issues or Issue Description No public GitHub issue exists. The change is described below with the feature template fields. Related pull requests** I searched the PR list and found

paperclipai/paperclip PR #3330 reports: Summary Subscription-included runs previously hard-coded cost_cents=0, making the UI show $0.00 for all agents even though tokens were being consumed Added Anthropic API pricing map (ANTHROPIC_PRICING_PER_MTOK) and estimateCostCentsFromTokens() to calculate API-equivalent costs from token counts Modified normalizeBilledCostCents() to impute costs for subscription_included billing type instead of returning 0 Agent dashboards, Costs page, and budget views now reflect real usage costs Thinking Path The pricing map is intentionally static and scoped to Anthropic models. Imputing costs live from a provider API would: Couple every heartbeat to an extra network round-trip with its own failure mode Require credentials we do not store for subscription-only customers Still be based on the same list prices anyway A static table keeps the cost path deterministic and auditable; the follow-up work when prices change is a one-line map edit, not a service rewire. A warning log surfaces gaps when a new model appears. Risks **Pricing drift**: if Anthropic raises list prices and the map is not updated, imputed cost under-reports real API-equivalent spend. Mitigated by the warning log for unknown models;

Why it matters

A confirmed zero is worse than a visible gap. It tells operators the budget guard is working precisely when flat-rate authentication has blinded it. The operator test is whether visible output, retained state and authority still describe the same event after retries, background work or restart.

Current

The primary record was open when captured on 2026-08-09. The tagged-release baseline was v2026.722.0 published 2026-07-22T23:05:41Z. Repository metadata, full source bodies, current pull requests and issues, releases, Google News, Hacker News, Lobsters, Metamesh and the rendered ClawCharts row were inspected. ClawCharts selected the subject; it did not prove the claim.

Evidence

The primary URL is https://github.com/paperclipai/paperclip/issues/339. Supporting records are https://github.com/paperclipai/paperclip/pull/11104 and https://github.com/paperclipai/paperclip/pull/3330. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts and reproductions remain attributed to their authors unless identified as independently rerun.

Source boundary

Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.

Operator take

Separate cash, estimated and unknown cost. Let operators choose whether notional spend gates work, and keep rate-card age visible. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently.

Caveat

Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.

Source inspected; source state, environment and release boundary remain explicit.