OpenClawTokensUsage ReportingTroubleshooting

OpenClaw Usage Shows Unknown: How One Interrupted Turn Affects a Report

Trace unknown token and cost totals in OpenClaw, check stable versus beta behavior, preserve transcript evidence, and distinguish measured subtotals from complete billing.

OpenClaw Usage Shows Unknown: How One Interrupted Turn Affects a Report

If OpenClaw's Usage page suddenly shows unknown for tokens and cost, with the day's charts missing, record the version, selected date range, and affected session first. In older reporting paths, one streamed response missing its final usage can affect the whole range's presentation. The other requests' records may still exist.

Unknown usage is not measured zero. Whether the client received complete accounting and whether the model service processed or charged the request require separate checks. Preserve the records and narrow the report before changing stored data.

This article was checked on November 10, 2026. GitHub's latest stable release was v2026.11.2; the measured-only reporting change was present in the separate v2026.11.5-beta.1 release line. We compared tagged public source, without running a full OpenClaw instance or interrupting a live model request.

Identify which usage surface you are reading

OpenClaw exposes several kinds of usage. The current official token-use guide distinguishes these entry points:

Entry pointWhat it primarily describes
/usage tokens in chatEnables token and cache details on subsequent replies
/usage cost in chatLocal cost records summarized from OpenClaw session logs
openclaw status --usage in a terminalAvailable provider quota windows or account usage status
Control UI → UsageSession and date-based analysis, alongside provider account information that has its own scope

Reply output tokens, the context-window meter, and remaining subscription allowance also measure different things. A number on one surface does not establish that another is wrong.

For a new installation, use the OpenClaw connection guide to identify the provider and model actually used by the Gateway. The agent token-cost explanation covers why a task can generate several model calls; an unknown report still needs tracing to individual turns.

How an interruption reaches the whole report

Text arrives before final usage, an interruption leaves an unavailable record, and the older report propagates it

Issue #194260 describes Linux, OpenClaw v2026.11.1, and a local llama.cpp compatible endpoint. The reporter interrupted a request before final usage arrived, observed an unavailable marker in OpenClaw's records, and then saw unknown daily totals with analysis hidden.

This example shows where the OpenClaw state can appear. It is illustrative, not a universal model API response or a real user's transcript:

{
  "message": {
    "role": "assistant",
    "usage": {
      "usageReport": { "state": "unavailable" }
    }
  }
}

Final usage may arrive late in a stream. Receiving some text does not establish complete accounting. The marker distinguishes a missing measurement from a terminal report of zero. Visible reply length and provisional counters cannot reconstruct final cost.

In v2026.11.2's totals implementation, merging propagates the unavailable marker. Its formatters return unknown for that state, and the analysis view gates content on it. Known numeric subtotals can remain underneath that presentation.

This explains a version-specific path. An empty report can also reflect filters, unfinished loading, or absent records. A blank chart alone does not identify the cause.

A closed issue does not identify your fixed release

Issue closure and merged code are separate from release inclusion; stable and beta tags need individual checks

Issue #194260 was closed when checked. Its only reply came from a bot and explicitly described source inspection without a live reproduction or executed tests. The linked PR #187212 merged on October 29. A later PR comment also reports Unknown totals for historical dates on a stable installation; that observation is separate from checking release contents.

We inspected these tags independently:

TagRelevant behavior found in source
v2026.11.1Propagates unavailable accounting and retains the unknown/hidden-analysis path
v2026.11.2, stable release published November 8Retains the same relevant behavior; the higher version number alone does not establish inclusion of the fix
v2026.11.5-beta.1, prerelease published November 4Excludes unavailable turns from token and cost accounting and removes that unavailable presentation condition

Those are publication dates, not an ordering inferred from version strings. Compare the stable release and beta release, and check your intended target again before updating.

The reporting tradeoff matters. The beta parser includes measured turns in usage totals; unknown turns can still count as messages and errors. Numeric reports become usable without recovering missing usage. If the provider billed an unknown turn, the client total can understate the provider's charges.

Narrow the problem while preserving evidence

1. Record runtime version and report boundaries

On the machine running OpenClaw:

openclaw --version
openclaw update status --json

The first checks the executable; the second inspects update status. Also identify the Gateway used by the management UI so that a different local installation does not mislead the investigation. Record start and end dates, timezone, agent, and session filters. Match those boundaries when comparing billing records.

These commands inspect version and status rather than updating the instance. They follow the official update guide; we did not execute them against a live OpenClaw installation.

2. Compare a completed session with the affected range

Select a normally completed session with visible usage, then return to the date range containing the interrupted turn. Note whether unknown follows that selection and whether the report is still loading.

If you have authorized access to your own session records, inspect the relevant period locally for usageReport.state = unavailable. Preserve only necessary status and timing evidence for sharing. Keep full conversations, tool results, attachments, and credentials private.

3. Distinguish unknown accounting, measured zero, and missing prices

Complete measurements, explicit zero, and unknown turns are kept distinct; a usable subtotal is not a complete bill

ObservationWhat it establishesWhat remains to check
Complete token and cost recordsKnown data for that callEstimated versus reported cost, and matching scope
A terminal provider report explicitly says zeroA measured zero for that fieldWhether the value was actually reported, rather than initialized
usageReport.state = unavailableAccounting is incompleteOriginal request status and service records; do not substitute zero
Tokens appear but cost does notCost information is insufficientRecorded amounts, applicable model pricing, and version-specific handling

For calls through Nbility, correlate time, model, and request ID in usage logs, then use the account and billing guide to reconcile records. Client estimates, site credit units, and money paid need their units identified before amounts are compared.

4. Check the update target, then revisit historical dates

Before updating, back up configuration and state and inspect the target through your supported deployment process. You can preview the update plan with:

openclaw update --dry-run

A dry run helps identify the proposed target; it does not verify a specific reporting fix. If you need to evaluate beta, use an isolated environment and a short public task before scheduling an update to a working installation.

PR #187212 changes accounting cache versions so derived reports can rebuild from preserved transcripts. It does not fetch final usage for an old model request. After updating, return to the same historical date range, allow the supported rebuild to finish, and check one new completed turn. A number in a new conversation does not verify recovery of the old range.

Why editing markers or rerunning tasks is insufficient

The issue reporter describes a local result after editing markers and clearing caches. That procedure is not a general recovery recipe: removing unavailable does not obtain missing measurements and can make a report appear more complete than its evidence supports. Deleting derived caches also requires knowledge of the storage version, rebuild behavior, and recovery process.

Rerunning the model task creates another call rather than restoring the old measurement. A task that sends messages, writes files, or creates orders can also repeat those actions. Use bounded retries and backoff after establishing the original request's status.

A useful completion criterion is concrete: identify the runtime and fixed release scope, preserve affected turns, label known subtotals appropriately, and correlate unresolved calls with service records. A restored numeric display still needs its missing-turn boundary understood.

Related posts

Run your Agent workflow through Nbility

Get an API key and connect OpenAI-compatible models and developer tools from one place.

Get an API key