OpenHands with your own endpoint: every error we've hit, and the fix

Run OpenHands against your own OpenAI-compatible endpoint and the errors cluster in three layers: telemetry, the event channel between sandbox and UI, and the settings layer. This page is the full map of what we have hit ourselves or tracked in the issue tracker, with each entry marked as one of three things: something we reproduced, an open issue in the OpenHands tracker, or fixed in a specific release.

Disclosure: Wallaby Token sells API access to kimi-k3, the endpoint we run OpenHands against, so read this as a field report from our own setup, not a neutral review.

The crash everyone googles

AttributeError: 'PromptTokensDetailsWrapper' object has no attribute 'cache_creation_tokens'

The agent dies mid-run the moment your endpoint reports cache-write tokens. The root cause, per the tracker: the SDK's telemetry checked model_fields_set for cache_creation_tokens, but LiteLLM's wrapper class physically deletes the attribute when its value is None, so the guard passes and the read crashes on an attribute that no longer exists. We reproduced this against our own endpoint, reported the reverse-trigger case to the project, and the fix landed as a hasattr guard in SDK PR #5327, shipping in SDK 1.50.0 and later. OpenHands v1.25.0 pins SDK 1.53.0, so upgrading past it retires the crash entirely.

The full walkthrough, including a local two-line patch for older installs, is in our Agent Canvas guide.

Looks broken, isn't

Three first-run scares that are all normal behavior, plus one real frontend bug. Each is covered with screenshots in our setup guide; the short versions:

  • First conversation stuck at "Running task" / "Waiting for task": the model call actually succeeded, but the event channel between the agent sandbox and the UI gets rate-limited, so nothing renders. Stop the conversation and start a fresh one.
  • Conversation Metrics shows $0.0000: OpenHands prices usage from LiteLLM's built-in price map, which has no entry for your custom model. The real, itemized cost lives in your provider's console. Note: the "token" in Wallaby Token is that metering unit, nothing crypto.
  • First response is slow: OpenHands prepends a large system prompt (about 17,000 input tokens in our runs), and a reasoning model spends visible time thinking before answering. Later turns reuse cached input and feel faster.
  • Clicking "Automations" throws an error page: a known frontend bug in older builds. Your configuration is fine; reload the page.

The settings layer, pre and post v1.25.0

This is where the issue tracker burned hottest in early October, and where v1.25.0 spent most of its fixes.

Fixed in v1.25.0, upgrade and they are gone:

  • Profile names stuck on the first model: renaming now follows the model you pick (#17929, fixed by #18017).
  • Phantom profiles from router templates: "Don't create profiles" now actually holds (#18020).

Still open in the tracker as of October 6, 2026, so we list the symptom and link, not a fix we have not verified:

  • Editing a provider connection's base_url does not take effect on the next conversation — a stale snapshot in settings.json. Tracked in #17803.
  • Changing the LLM model without re-typing the API key wipes the stored key, and the next run fails auth. Until it lands, re-paste the key after any model switch. Tracked in #17806.

API and integration layer

Two from our own runs. Missing credentials when creating a conversation over the API: a minimal llm config in the request does not inherit the saved profile's credentials — pass the full model configuration or use the profile explicitly. And a tmux warning on startup in some environments: harmless, ignore it.

Quick reference

Error Root cause Fix Status
cache_creation_tokens AttributeError Telemetry guard reads an attribute the wrapper deleted Upgrade to v1.25.0 (SDK 1.53.0); patch for older installs Fixed, SDK PR #5327
Stuck at "Running task" Event channel rate-limited Stop, start a fresh conversation Known behavior
Metrics shows $0.0000 LiteLLM price map lacks your model Real cost in provider console Known gap
Slow first response 17k system prompt + reasoning time None needed Normal
Automations error page Frontend bug in older builds Reload the page Known bug
Profile name stuck Name not following model Upgrade to v1.25.0 Fixed
Phantom profiles Router templates ignored the toggle Upgrade to v1.25.0 Fixed
base_url edit ignored Stale settings snapshot — Open, #17803
Model switch wipes API key Stored key cleared on change Re-paste key after switching Open, #17806
Missing credentials via API Minimal config skips profile Pass full config or use profile Reproduced by us
tmux warning Environment noise Ignore Harmless

If you hit one we have not mapped, the detail pages carry the full evidence: the cache crash, the first-run scares, and what v1.25.0 changed.