Cline CLI 3.0.29 Fixes the Cost Display Bug That Makes Free Models Look Expensive
Cline CLI 3.0.29 is a small patch about a surprisingly important thing: whether a coding agent tells the truth about cost.
The release fixes CLI-side display for Cline free models so they no longer show non-zero usage cost while still preserving token usage. It also resolves Z.ai model metadata aliases for models accessed through the Cline provider and reverts a previous model-name-only display change from 3.0.28. If you read that as a UI cleanup, you are not wrong. You are just stopping too early. In agentic coding, cost display, model identity, context-window metadata, tool-result budgets, and approval state are all part of the same operational surface. If any one of them lies, the developer makes the wrong decision.
The release was published at 2026-06-20T07:34:42Z. The compare from cli-v3.0.28 to cli-v3.0.29 shows five commits and 34 files changed; the broader cli-v3.0.27...cli-v3.0.29 window shows 27 commits and 171 files changed. The repository snapshot in the research brief showed 63,557 stars, 6,730 forks, and 1,129 open issues. This is a widely used tool making a narrow correction in a place where narrow corrections matter.
“Free” still needs accounting
PR #11686 fixes the concrete bug: Cline free models, with deepseek/deepseek-v4-flash called out as a reproducer, could show non-zero cost fields even though the selected model is listed as free by the Cline API. The fix is deliberately scoped to apps/cli. When the provider is cline, the CLI fetches current free model IDs from the Cline recommended-models endpoint, caches the result by base URL, normalizes totalCost: 0 for matching free models before JSON output, final run stats, or interactive TUI handling, and keeps token usage visible.
That last part is the right call. Free does not mean unmetered. Token usage still affects latency, context pressure, provider quotas, abuse systems, local observability, and future pricing changes. Hiding tokens because dollars are zero would be marketing. Showing tokens while suppressing a misleading dollar total is engineering.
The failure behavior is also right. If the free-model lookup fails or times out, Cline leaves backend-provided cost untouched instead of guessing. Billing surfaces should fail conservative. “Probably free” is how dashboards become incident reports. The better long-term fix belongs in backend pricing semantics, and the PR acknowledges the CLI patch as a pragmatic correction rather than the final architecture. That honesty matters. Too many agent tools paper over pricing ambiguity with a neat number that looks precise because it has decimals.
The user impact is not theoretical. If a free model appears expensive, users may avoid it, misattribute spend, or conclude the tool’s accounting is untrustworthy. If a paid model appears free, the failure is worse. Coding agents are already difficult to budget because tool calls, retries, context growth, subagents, and long-running workflows create non-obvious usage. The display layer cannot add its own fiction on top.
Model identity is no longer one string
PR #11685 fixes a related class of bug: Z.ai model metadata aliases. Cline may receive Vercel AI Gateway IDs like zai/glm-5.2, while the broader OpenRouter catalog exposes equivalent models as z-ai/glm-5.2. If exact lookup misses, the tool can fall back to default metadata, including an incorrect context window. That is not just a label bug. Context metadata influences how much the agent sends, how it truncates, what it believes the model can handle, and how users judge capability.
This is one of the under-discussed problems in modern AI developer tooling: model identity is not canonical. The same underlying model can arrive through provider-native APIs, OpenRouter, Vercel AI Gateway, a company proxy, a local gateway, or a hosted coding-agent platform. Each layer may rename it. Some names encode vendor. Some encode route. Some encode marketing. Some encode nothing useful at all. If tooling treats the display name as the primary key, it will eventually pick the wrong metadata.
Cline’s quick revert of the model-name-only display change from 3.0.28 is a good sign. The wrong abstraction got rolled back. Alias handling belongs near the catalog and SDK metadata layer, not as a late display trick. UI labels should reflect resolved identity, not repair it.
The real story is runtime economics
The adjacent 3.0.28 work is why this patch deserves more than a changelog note. PR #11475 makes tool-result truncation default-on for MCP, custom, editor, and apply_patch tools. It counts tool_use.input toward budget and tightens limits so a huge tool result cannot make the reducer shrink everything else while still failing. That is the other side of cost correctness: not just what a model costs per token, but whether the runtime accurately accounts for the tokens it is stuffing into the conversation.
Tool-output budgets are easy to underestimate because the cost is indirect. A model calls a tool. The tool returns a large result. The runtime includes too much of it. The next model turn gets bloated. The agent slows down, loses relevant context, or spends more. If the budgeter ignores tool inputs or lets one huge result dominate reduction, the dashboard may be technically counting tokens while the runtime design is still wasting them. Cline tightening that path is not glamorous, but it is exactly where agent spend leaks.
PR #11653 fixes another governance edge: auto-approve toggles now apply immediately at tool-prep time instead of allowing the next tool call to use a stale approval policy snapshot. That is not a cost bug, but it belongs in the same paragraph. Approval policy, model metadata, tool budgets, and cost display are all promises the runtime makes to the user about what is about to happen. If the user toggles auto-approve and the next tool call still runs under the old state, the interface is lying by one action. In agent systems, one action is plenty.
The pattern is clear: the hard part of coding-agent UX is not drawing prettier chat bubbles. It is maintaining a truthful operational model while the agent edits files, calls tools, switches providers, truncates context, and asks for permission. Cline 3.0.29 fixes a cost-display bug, but the deeper theme is metadata correctness.
What teams should check after upgrading
If your team uses Cline free models, upgrade and verify three surfaces: JSON output, final run stats, and interactive TUI events. Use a known free Cline model such as deepseek/deepseek-v4-flash and confirm dollar cost is zero while token usage remains visible. If your internal reporting ingests Cline JSON, make sure it treats preserved token usage as signal rather than assuming zero cost means zero activity.
If you use Z.ai models through the Cline provider, verify context metadata. Do not settle for the label looking right. Check that context window and capability information are not falling back to generic defaults. If you route models through Vercel AI Gateway, OpenRouter, or internal proxies, this is also a good moment to inventory your model ID normalization strategy. If the same model has three names in three systems, decide which layer owns the mapping.
Finally, run a tool-output-heavy task with MCP or custom tools and inspect truncation behavior. Then toggle auto-approve immediately before a tool call and confirm the new state applies. These are not glamorous smoke tests, but they catch the class of bugs that make users stop trusting agents.
The editorial take: “free model” UX is not about hiding numbers. It is about showing the right numbers, preserving the useful ones, and resolving model identity before the dashboard teaches developers the wrong lesson. Cline 3.0.29 is a small patch because the diff is small. The issue it fixes is not small at all.
Sources: GitHub release — cline/cline cli-v3.0.29, GitHub compare cli-v3.0.28...cli-v3.0.29, GitHub compare cli-v3.0.27...cli-v3.0.29, PR #11686, PR #11685, PR #11475, PR #11653