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.