Cline CLI 3.0.29 Fixes the Awkward Part of Free Models: Cost Accounting Has to Mean Something

Cline CLI 3.0.29 Fixes the Awkward Part of Free Models: Cost Accounting Has to Mean Something

Cline CLI 3.0.29 looks almost too small to care about: hide costs for free Cline models, fix Z.ai metadata aliases, and revert a model-name display patch. But that is exactly why it is worth reading. Mature coding agents do not only fail in spectacular “the agent deleted my repo” ways. They fail when the UI reports the wrong cost, when model identity drifts across providers, when context budgets are enforced inconsistently, and when a permission toggle lags one tool call behind the human who just changed it.

The release is best understood with its companion, Cline CLI 3.0.28, which shipped a few hours earlier. Together, the two releases turn the product surface toward the operational truth of coding agents: price display, model metadata, truncation policy, immediate approval state, parallel tool guidance, and a marketplace for MCP/plugin/skill primitives. That is not chat polish. That is the boring layer where developers decide whether an agent is safe enough to leave running near real work.

Free models still need honest accounting

PR #11686 hides costs for Cline free models. The implementation matters. The CLI fetches current free model IDs from the Cline recommended-models endpoint when the selected provider is cline, caches the result by base URL, normalizes matching free-model usage payloads to totalCost: 0, preserves token usage, and leaves backend-provided costs untouched if the lookup fails or times out. That is the conservative version of a fix that could easily have become wishful UI.

Why care? Because cost reporting is part of the contract. If a model is advertised as free but the CLI displays non-zero cost, users learn one of two bad lessons: either pricing is misleading, or telemetry is unreliable. Both are poisonous for adoption. Cline’s choice to preserve token usage while zeroing only confirmed free-model cost is right. Free does not mean unmetered. Tokens still represent latency, context pressure, and load. A zero-dollar session can still be an operationally expensive one.

This is also a useful pattern for teams building internal agent platforms. Do not bury cost semantics in copy or pricing pages. Resolve them in code, log the decision, preserve raw usage, and fail conservatively when the catalog lookup breaks. “We could not confirm this was free, so we kept the backend cost” is better than a pretty dashboard that silently edits reality.

Provider aliases are not cosmetic

PR #11685 fixes Z.ai model metadata aliases. Cline may receive Vercel AI Gateway-style IDs such as zai/glm-5.2, while OpenRouter catalogs expose z-ai/glm-5.2. The SDK now defines alias handling in @cline/llms, builds Cline’s builtin catalog with canonical Vercel-style aliases, removes duplicate OpenRouter aliases when canonical IDs exist, and avoids fallback metadata such as incorrect context windows.

That last part is the story. Model IDs determine more than a label in a dropdown. They can determine context windows, pricing, capability flags, routing decisions, and whether a framework knows how much budget a request has before it fails. A fallback context window is not harmless if it causes the agent to overpack a prompt, truncate the wrong material, or mislead a user about what a model can handle.

Cline also reverted the previous “resolve model display names by just model name” patch in PR #11684. That is a good engineering instinct. Do not fix identity ambiguity with nicer labels. Fix identity at the catalog boundary, then let the UI reflect the resolved truth. Multi-provider agents need canonicalization as infrastructure, not decoration.

The context budget fix is the one teams will feel

The companion 3.0.28 release includes PR #11475, which makes tool-result truncation default-on and broader. It fixes an opt-in allowlist that previously left MCP tools, custom createTool() tools, editor, apply_patch, and other outputs able to bypass caps and budget-candidate collection. It also accounts for model-generated tool_use.input and tightens the prior 50k per-result cap.

This is one of those changes that sounds like housekeeping until an MCP tool returns a massive blob and your agent spends the rest of the turn trying to breathe through a straw. Tool-heavy agents are budget routers. Every file read, search result, patch, MCP response, and generated tool argument competes for the same request envelope. If a framework enforces caps on built-in tools but lets custom or MCP tools bypass them, the abstraction is lying exactly where extensibility begins.

Counting tool_use.input is especially important. Developers often think of tool outputs as the danger zone, but model-generated inputs can also explode. An agent can ask for an enormous search query, patch payload, command, or structured argument. Budgets need to cover both sides of the tool exchange: what the model emits and what tools return.

Approval state cannot be “eventually consistent”

PR #11653 fixes an interactive approval-state lag where toggling auto-approve could leave the next tool call using the previous policy. The CLI now resolves live per-tool approval policy at tool-prep time through a beforeTool hook, including hub-backed sessions whose original policies are serialized at session start.

This is a trust-boundary bug wearing a UI costume. If a user disables auto-approve and the next tool call still runs under the old enabled policy, the interface has broken the most important promise it makes. Permission settings are not ordinary preferences like theme color or editor font size. They are runtime policy inputs and need authority at the point of action. Cline moving resolution to tool-prep time is the correct shape.

The marketplace work in PR #11624 deserves a more cautious reaction. A Hub dashboard that can browse, install, and uninstall Cline primitives is useful. It also expands the supply chain by design: MCP entries write or upsert server config, plugins install through the Cline CLI, and skills can be added via npx skills@latest add. That belongs behind team policy. “Convenient to install” should not mean “trusted to execute.”

For practitioners, the upgrade checklist is concrete. Select a Cline free model and verify JSON output, final run stats, and interactive UI show zero cost while preserving token counts. Test Z.ai models through the Cline provider and confirm the context window and metadata resolve correctly. Feed a huge MCP or custom-tool result into an agent and inspect how truncation appears before the provider call. Flip auto-approve during an active interactive run and verify the very next tool call uses the new policy. Then decide where marketplace primitive installation is allowed: developer laptops, CI, reviewed workstations, or nowhere without an internal mirror.

The broader lesson is that coding-agent UX is becoming operational UX. Users are not only asking whether the model can produce a patch. They are asking whether the tool tells the truth about price, identity, context, and authority. Cline 3.0.29 is small because the mature work is small. That is usually where the sharp edges are.

Sources: Cline CLI 3.0.29 release, Cline CLI 3.0.28 release, free-model cost handling, Z.ai alias metadata, tool-result truncation, auto-approve policy resolution, Hub marketplace.