| v0.12.298 | ### `clawrouter update` โ one command updates both copies ClawRouter lives in two places for most OpenClaw users: the plugin OpenClaw loads (`~/.openclaw/extensions/blockrun-clawrouter`) and the global npm install that provides the `clawrouter` binary. `npm install -g` refreshed only the binary, so the plugin OpenClaw actually runs stayed on the old release until the user found the separate `curl โฆ | bash` updater. `clawrouter update` runs the bundled rollback-safe updater (`update.sh`, or `up | High | 10/22/2026 |
| v0.12.294 | ### DeepSeek V4.1 Flash, and the free v4-flash pins move to the free default blockrun listed `deepseek/deepseek-v4.1-flash` ($0.14/$0.28, 1M context, 64K output, the same upstream as `deepseek-chat`). It is in the picker and reachable through `deepseek-v4.1-flash`, `deepseek-v4-1-flash` and `v4.1-flash`; bare `deepseek` still names `deepseek-chat`. The same day the gateway dropped the free `nvidia/deepseek-v4-flash` and now answers `400 Unknown model` for it. The aliases that named it (`nvidia | High | 10/20/2026 |
| v0.12.293 | ### OpenClaw 2026.10.x: BlockRun loads again on a frozen runtime config OpenClaw 2026.10.x hands plugins a read-only config object during registration. `register()` assigned `api.config.models.providers.blockrun` unconditionally, threw `TypeError: Cannot assign to read only property 'blockrun'`, and the Gateway came up without BlockRun (one reported start took 111.6s to get there). The runtime provider write is now best-effort: a mutable host still gets it for immediate availability, and a fro | High | 10/20/2026 |
| v0.12.291 | ### router-core 0.2.0: more models can recover a tool turn `@blockrun/router-core` moves from e38958b to 0.2.0 (27125a3). Eleven newly listed models returned a real structured tool call in a live probe and are admitted as availability fallbacks for tool-required turns: Claude Fable 5.1 / Opus 5.5 / Sonnet 5.5, Gemini 3.8 Flash, GPT-5.1, GPT-6 Astra / Luna / Sol, Grok 4.6 / 4.7 and MiMo 2.5. They never displace a benchmarked primary, so which model Auto picks first is unchanged. When the usual | High | 10/16/2026 |
| v0.12.288 | ### GPT-5.6 Pro tiers in the picker `openai/gpt-5.6-terra-pro`, `openai/gpt-5.6-sol-pro` and `openai/gpt-5.6-luna-pro` now show in the model picker, right after their base tiers. They were already callable and priced (in the registry since 2026-08-03, listed by both gateways), just never picker-visible, unlike `gpt-5.5-pro` and `gpt-5.4-pro` (#460). `openai/chat-latest` stays out of the picker: it is a rolling alias you pin on purpose. | High | 10/13/2026 |
| v0.12.287 | ### Live model catalog **Prices and new models follow the gateway without a ClawRouter release.** The proxy now reads the active gateway's model listing (`/v1/models`) at start and every 5 minutes: - Prices and context limits of known models track the gateway. - New chat models the gateway lists can be picked by name. They are never routed to automatically until they are added to ClawRouter on purpose. - Aliases, the free models and their order, and every model's capabilities stay as Claw | High | 10/12/2026 |
| v0.12.282 | ### Security: the local proxy only answers local clients **Web pages can no longer spend from your wallet.** The proxy listens on 127.0.0.1, but a page open in your browser could still send it requests, and some paid routes accepted them. The proxy now refuses any request from another site, and any request whose `Host` is not a local name, which also blocks DNS-rebinding pages. OpenClaw, the CLI, SDKs and `curl` send no `Origin` and work as before. A page served from `localhost` is still allow | High | 10/5/2026 |
| v0.12.281 | ### Outcome memory: models that keep failing on a kind of request are tried last The 429/overload cooldowns forget a model after 15โ60 seconds, and nothing remembered a model that answers with empty turns, loops, 5xxs or timeouts on tool-using requests โ every such request paid a full failed attempt before falling back ([#414](https://github.com/BlockRunAI/ClawRouter/pull/414)). ClawRouter now keeps the last 10 outcomes per (model, tools|chat) for 30 minutes. A model with at least 3 failures | High | 10/3/2026 |
| v0.12.280 | ### Solana signing runs on `@solana/kit` 8.4 โ for +2.3% bundle, not +26% `@solana/kit` 5.5.1 โ 8.4.0, and `@x402/svm`'s program clients are forced onto the kit-8 line (`@solana-program/token` / `token-2022` 0.16.1, `compute-budget` 0.18.1) because `@x402/svm` itself still pins the kit-5 ones (x402-foundation/x402#3391). This takes the upstream `content-length` fix ([#358](https://github.com/BlockRunAI/ClawRouter/pull/358), closes [#378](https://github.com/BlockRunAI/ClawRouter/issues/378)). | High | 9/29/2026 |
| v0.12.279 | ### Desktop โ visual refresh of the control plane The sidebar is grouped into Control / Account with the wallet card anchored to the bottom of the rail; the hero is data-driven (connected agents, model count, settlement chain); the model catalog carries tinted capability chips (Reasoning / Vision / Agentic / Tools); Usage renders a live daily chart from the router's `/stats` with axis, gridlines and per-day tooltips; Settings gains a theme picker and copyable local endpoints; Wallet shows the | High | 9/16/2026 |
| v0.12.277 | ### Added โ opt-in TWZRD AutoGate on the x402 pre-sign hook Default **off**. `clawrouter policy` (SpendControl) stays the vendor-neutral path and is untouched by any of this. `TWZRD_AUTO_GATE=1` (or `TWZRD_GATE_ENABLED=true`) composes TWZRD's trust check onto the same `onBeforePaymentCreation` chain, after SpendControl. From [#357](https://github.com/BlockRunAI/ClawRouter/pull/357) by [@twzrd-sol](https://github.com/twzrd-sol), which closes [#355](https://github.com/BlockRunAI/ClawRouter/issues | High | 9/7/2026 |
| v0.12.249 | ## Fixed โ `/health?full=true` could hang forever on an unresponsive balance RPC The full health check awaited `balanceMonitor.checkBalance()` with no time bound. The surrounding `catch` covers a rejection but never a hang, so an unresponsive RPC held the response open indefinitely โ on the one endpoint monitoring hits and the one that must always answer. The check is now bounded by the same `BALANCE_CHECK_TIMEOUT_MS` (2.5s) as the pre-request path and degrades to `balanceError`, which the res | High | 8/26/2026 |
| v0.12.245 | Catch-up sync to blockrun โ the drift was three blockrun releases deep. Catalog is now **70 chat-visible / 5 free**, matching blockrun exactly. ## Removed - **`free/deepseek-v4-flash`** โ NVIDIA published EOL (HTTP 410) this morning; the whole `nvidia/deepseek-*` family is dead upstream (blockrun #367). Dropped from the picker (6โ5 free), the `FREE_MODELS` cascade (8โ7), and router-core's eco SIMPLE chain. Pins naming the model stay routable via the gateway redirect; generic shorthands follow b | High | 8/12/2026 |
| v0.12.240 | Security housekeeping. Clears **13 of the 15 open Dependabot alerts** โ including 3 of the 4 highs โ by removing the thing that was silently swallowing our `overrides` block. ### Fixed โ openclaw's `npm-shrinkwrap.json` was voiding every override we wrote `openclaw` โค 2026.7.1 publishes with `hasShrinkwrap: true`. A shipped `npm-shrinkwrap.json` pins that package's **entire subtree** verbatim, and npm resolves it ahead of the root project's `overrides`. The failure is silent and actively misle | High | 8/4/2026 |
| v0.12.232 | Fixes a cost-control hole: requests using OpenAI's current `max_completion_tokens` field were priced as if they had asked for nothing. ### Fixed - OpenAI deprecated `max_tokens` in favour of `max_completion_tokens`, but ClawRouter only ever read the legacy field โ the string `max_completion_tokens` appeared **nowhere** in `src/`. Every request from a client on the modern field was sized at the 4096 default regardless of what it actually requested. - That number gates real money: routing, `esti | High | 7/20/2026 |
| v0.12.220 | ## v0.12.220 โ July 10, 2026 Direct Polymarket **betting** โ ported from blockrun-mcp v0.30.0's `blockrun_polymarket` tool. ClawRouter could already read prediction-market odds (`blockrun_predexon_*`); now it can place, manage, and redeem **real-money** bets on Polymarket (CLOB V2, Polygon), signed locally by the same wallet that pays for LLM calls. ### New `blockrun_polymarket` tool (REAL MONEY) - Unlike every other ClawRouter tool it is **not** an HTTP-proxy wrapper โ it runs a local tradin | High | 7/12/2026 |
| v0.12.212 | Stop advertising delisted/redirect aliases in `/v1/models` (#187, thanks @KillerQueen-Z). ## Model list no longer surfaces full-slug redirect aliases `MODEL_ALIASES` mixes friendly short names (`free`, `opus`, `gpt-120b`) with full `provider/model` redirects for backward-compat + delisted models (e.g. `free/deepseek-v4-pro` โ `free/deepseek-v4-flash` after V4 Pro's NVIDIA host hung 2026-04-30). `ALIAS_MODELS` turned **every** alias into a listable model, so dead slugs leaked into `/v1/models` | High | 6/23/2026 |
| v0.12.206 | ## v0.12.206 โ June 10, 2026 End-to-end audit sweep: 4 proxy reliability fixes (each TDD'd with a new regression test), abort/teardown hardening, registry realignment with the gateway, and doc/count sync. 596 tests passing (8 new). ### Proxy reliability (all in `src/proxy.ts` unless noted) - **Process-crash fix: escaped rejections from the request handler.** The `paymentStore.run(async () => โฆ)` promise wrapping every request was never `.catch()`ed, and the media endpoints (`/v1/images/genera | High | 6/10/2026 |
| v0.12.196 | - **Updater recovers from OpenClaw size-drop rejection.** OpenClaw v2026.4.5+ refuses to write a config that would shrink the file by a large amount (data-loss guard). Users on a pre-v0.12.175 install carry ~175 entries in `models.providers.blockrun.models`; upgrading to a current ClawRouter legitimately trims that to ~38 (โ90 KB โ 25 KB), tripping OpenClaw's guard. The updater previously surfaced this as a hard failure and rolled back, stranding users on the old version. Fix in `scripts/update | High | 5/24/2026 |
| v0.12.194 | ## v0.12.194 โ May 18, 2026 - **Seedance video pricing aligned with blockrun's token-priced model.** Last week blockrun replaced the flat per-second Seedance pricing with `duration ร tokens/sec ร $/1M tokens ร 1.05 margin` after a verification call against `bytedance/seedance-2.0-fast` measured 10,128 tokens/sec at 480p (token360's default, not the 720p we'd guessed). The old ClawRouter `VIDEO_PRICING` table was both wrong-shaped and ~3โ4ร off on the high side. Updated `src/proxy.ts`: - `VIDE | High | 5/18/2026 |
| v0.12.190 | ## Fix Renames the `/imagegen` slash command to `/cr-imagegen` to resolve a collision with Telegram channel commands. OpenClaw runtime previously emitted: ``` Plugin command "/imagegen" conflicts with an existing Telegram command ``` because Telegram channels reserve `/imagegen` for their own image-gen bots (HuggingFace Spaces et al.). The OpenClaw command registry can't claim the same prefix without inconsistent routing behavior in Telegram. ## What changed - `src/index.ts:1768` โ `api.re | High | 5/13/2026 |
| v0.12.185 | ## v0.12.185 โ May 4, 2026 - **`clawrouter setup` โ new CLI command for users who installed via bare `npm install -g`.** A user reported `/models` in their Telegram bot showing only 7 entries despite having `@blockrun/clawrouter@0.12.184` installed and the gateway restarted. Investigation: bare `npm install -g @blockrun/clawrouter` puts the package on disk and adds the `clawrouter` binary to PATH but performs **zero** OpenClaw integration โ no `plugins.entries.clawrouter` registration, no model | High | 5/4/2026 |
| v0.12.171 | ## v0.12.171 โ Apr 29, 2026 - **Three new free NVIDIA-hosted models added.** BlockRun refreshed the free catalog on 2026-04-29 with three additions, all wired into ClawRouter as `free/`-prefixed entries: - `free/deepseek-v4-pro` โ 1.6T MoE / 49B active, 1M context, MMLU-Pro 87.5, GPQA 90.1, SWE-bench 80.6, LiveCodeBench 93.5. NIM ~150 tok/s on Blackwell. Strongest free reasoning model. - `free/deepseek-v4-flash` โ 284B / 13B active MoE, 1M context, ~5x faster than v4-pro. Strong on chat/sum | High | 4/30/2026 |
| v0.12.161 | - **De-Gemini the Anthropic-primary fallback chains.** When Anthropic hiccups (503s, capacity), Gemini's own "high demand" 503s correlate with the same events โ agents fall back from Claude to Gemini together, both overloaded. Reordered `src/router/config.ts` fallback arrays in the two places Anthropic sits primary: `premiumTiers.COMPLEX` (claude-opus-4.7 primary) and `agenticTiers.COMPLEX` (claude-sonnet-4.6 primary). New order: in-family Anthropic hot swap (opus-4.6 / sonnet-4.6) โ xAI Grok ( | High | 4/22/2026 |
| v0.12.159 | - **Market data tools** โ BlockRun gateway now exposes realtime and historical market data; ClawRouter wires them into OpenClaw as 6 first-class agent tools so the model stops scraping finance sites. Paid ($0.001 via x402, same wallet as LLM calls): `blockrun_stock_price` and `blockrun_stock_history` across **12 global equity markets** (US, HK, JP, KR, UK, DE, FR, NL, IE, LU, CN, CA). Free (no x402 charge): `blockrun_stock_list` (ticker lookup / company-name search), `blockrun_crypto_price` (BT | High | 4/21/2026 |
| v0.12.158 | - **SKILL.md data-flow + key-storage transparency** โ second-pass fix for the OpenClaw scanner on clawhub.ai. v0.12.157 cleared the original scanner flags (opaque credentials, implied multi-provider keys, no install artifact). A deeper rescan surfaced three new nuanced flags: prompts go to blockrun.ai (data-privacy framing), wallet private-key storage location/encryption undocumented, and users may expect strictly-local routing. All three addressed: description reframed as "Hosted-gateway LLM ro | High | 4/20/2026 |
| v0.12.157 | - **SKILL.md credential transparency** โ rewrote `skills/clawrouter/SKILL.md` to clear the OpenClaw scanner's medium-confidence suspicious verdict on clawhub.ai. Frontmatter now declares `repository: https://github.com/BlockRunAI/ClawRouter`, `license: MIT`, and a structured `metadata.openclaw.install` array (`kind: node`, `package: @blockrun/clawrouter`, `bins: [clawrouter]`) so the registry entry has an auditable install artifact instead of a bare bash block. Body adds a **Credentials & Data H | High | 4/20/2026 |
| v0.12.156 | ## v0.12.156 โ Apr 20, 2026 - **Kimi K2.6 added** โ Moonshot's new flagship (`moonshot/kimi-k2.6`, 256K context, vision + reasoning, $0.95 in / $4.00 out per 1M) registered in `BLOCKRUN_MODELS` with `kimi-k2.6` alias. Added to the curated `/model` picker list (`src/index.ts`, `scripts/update.sh`, `scripts/reinstall.sh`), the README pricing table, `docs/routing-profiles.md`, and the AI-agent-facing model catalog in `skills/clawrouter/SKILL.md`. Premium routing tier (`blockrun/premium`) now uses | High | 4/20/2026 |
| v0.12.149 | ### Bug Fix - **Suppress remaining duplicate startup logs** โ The v0.12.147 fix only guarded provider registration logs. This release extends the guard to cover all repeated diagnostic messages on multi-call `register()`: - "Proxy already started by earlier register() call โ skipping" (main offender, fired on every call after proxy start) - "pluginConfig empty โ deferring proxy startup 250ms..." - Non-gateway wallet source logs + "Not in gateway mode" ### Improvements - **Explicit-pin m | High | 4/13/2026 |
| v0.12.148 | ### Bug Fixes **Suppress duplicate registration log spam.** OpenClaw calls \`register()\` 4+ times per gateway startup. Each call re-registers providers, commands, and tools (idempotent โ last loaded plugin wins) but previously also logged 6 info lines per call, producing 24+ identical lines on every startup. Now only the first \`register()\` call emits verbose info logs. Subsequent calls silently re-register without logging. **Before:** \`\`\` Commands registered: /wallet, /blockrun, /stats, | Medium | 4/12/2026 |
| v0.12.146 | ### New Feature **Every routed response now carries a \`usage.cost\` breakdown.** Users on \`blockrun/auto\` previously had no visible signal of which model actually answered or how much each call cost. Now every response includes: \`\`\`json { \"model\": \"google/gemini-2.5-flash\", \"usage\": { \"prompt_tokens\": 120, \"completion_tokens\": 80, \"total_tokens\": 200, \"cost\": { \"total\": 0.00023, \"input\": 0.000018, \"output\": 0.000048, \"base | High | 4/10/2026 |
| v0.12.145 | ### Improvements - **eco/premium null fallback** (router/strategy.ts): when \`ecoTiers\` or \`premiumTiers\` is set to \`null\`, fall back to regular \`tiers\` instead of dropping into auto routing. Preserves the eco/premium profile semantics even when the special tier set is disabled. - **provider.ts**: \`setActiveProxy\` now accepts \`null\` (used by the deactivate path). - **debug-command test**: 2s client-side timeout so the test no longer hangs on slow upstream. - **CI green**: prettier fo | Medium | 4/10/2026 |
| v0.12.144 | ### Bug Fixes **\`/model\` command now actually switches the model.** When a user ran \`/model blockrun/free/glm-4.7\` in OpenClaw, the bot's next response often still claimed to be the previously pinned model (typically Sonnet). The model wasn't really switching โ it was being silently overridden by ClawRouter's session pinning, which was designed to prevent mid-task model switching but was too aggressive. ### What changed - \`SessionEntry\` now carries a \`userExplicit\` flag. - When ClawR | Medium | 4/10/2026 |
| v0.12.143 | ### Chore Prettier formatting fix in \`src/web-search-provider.ts\` and \`src/web-search-provider.test.ts\` to keep CI green. No functional changes. | Medium | 4/10/2026 |
| v0.12.142 | ### Bug Fixes (#147) **User routing config in openclaw.json was silently ignored.** OpenClaw calls \`register()\` twice during gateway startup. The first call runs in a pre-gateway phase before \`openclaw.json\` has been parsed, so \`api.pluginConfig\` is empty. The previous \`proxyAlreadyStarted\` guard caused the proxy to start with \`DEFAULT_ROUTING_CONFIG\` on that first call, then the second call (the one with the user's actual \`plugins.entries.clawrouter.config.routing\`) bailed out as | Medium | 4/10/2026 |
| v0.12.141 | ### Bug Fixes (#148) Fixes two related bugs that prevented users from customizing agent routing via \`routingConfig\`: 1. **Custom tier sets weren't merged.** \`mergeRoutingConfig\` only deep-merged \`tiers\`, ignoring \`agenticTiers\`, \`ecoTiers\`, and \`premiumTiers\`. Users defining custom \`agenticTiers\` had no effect on routing โ agent requests always used the defaults. 2. **\`overrides.agenticMode: false\` didn't disable agentic tiers.** \`hasToolsInRequest\` was OR'ed in unconditiona | Medium | 4/10/2026 |
| v0.12.140 | ### Bug Fixes - **Fix doctor on Solana chain** โ `npx @blockrun/clawrouter doctor` was hardcoding an EVM signer and sending test requests to `blockrun.ai` regardless of the user's configured payment chain. On Solana users, it produced a misleading \`Payment verification failed\` error showing an EVM payer address that didn't match their actual Solana wallet. Now doctor registers the Solana scheme and routes to \`sol.blockrun.ai\` when \`paymentChain=solana\`. | Medium | 4/10/2026 |
| v0.12.139 | ### Bug Fixes - **Fix baseUrl overwrite after plugin install** โ OpenClaw's async config persistence was overwriting the correct local proxy URL (`127.0.0.1:8402`) with the remote `blockrun.ai/api` fallback. Root cause: `provider.ts` models getter returned the remote URL before proxy startup; OpenClaw serialized that into `openclaw.json`. Now always returns the local proxy URL. (reported by Cheetah) - **Post-install baseUrl verification** โ `update.sh` and `reinstall.sh` now re-verify and fix ` | Medium | 4/9/2026 |
| v0.12.92 | ## Bug Fix: Existing chat always fails in continue.dev (#135) ### Root cause `moonshot/kimi-k2.5` (primary MEDIUM-tier model in `blockrun/auto`) is a reasoning model that requires `reasoning_content` on **all** assistant messages in multi-turn history โ not just tool-call messages. When continue.dev sent an existing chat, the plain-text assistant message from the previous turn was missing `reasoning_content`, causing a 400 from the model. Since that 400 didn't match any `PROVIDER_ERROR_PATTER | Medium | 3/31/2026 |
| v0.12.90 | ## What's Fixed ### Empty turn responses now trigger model fallback **Problem:** Under the eco profile (and sometimes auto), agentic clients like Roo Code would receive silent empty responses โ the model returned HTTP 200 with no content and no tool calls, just `finish_reason: stop`. The proxy treated this as success and forwarded the empty turn to the client, causing the agent to loop or stall. **Root cause:** Models like `gemini-3.1-flash-lite` sometimes refuse complex agentic requests (lar | Medium | 3/31/2026 |
| v0.12.87 | Release v0.12.87 | Medium | 3/30/2026 |
| v0.12.70 | ### Fixed - **Plugin crash on string model config** โ ClawRouter crashed during OpenClaw plugin registration with `TypeError: Cannot create property 'primary' on string 'blockrun/auto'`. This happened when `agents.defaults.model` in the OpenClaw config was a plain string instead of the expected object `{ primary: "blockrun/auto" }`. Now auto-converts string/array/non-object model values to the correct object form. ### Install / Update ```bash npm i -g @blockrun/clawrouter@latest ``` | Medium | 3/24/2026 |
| v0.12.69 | ## What's Changed ### โจ Features - feat: add GPT-5.4 Nano + Gemini 3.1 Flash Lite, SOLโUSDC swap hint - feat: GEO optimize README with definition and FAQ section ### ๐ Bug Fixes - fix: config duplication on update โ full model allowlist reconciliation (#112) - fix: /stats under-reporting costs โ use actual x402 payment amounts - fix: save npm install error log to ~/clawrouter-npm-install.log - fix: remove redundant deprecated models list from reinstall step 2 - fix: sync package-lock.json (mi | Medium | 3/23/2026 |
| v0.12.66 | ## Bug Fixes **Fix: payment settlement failure now falls back to free model** When payment settlement fails on-chain (insufficient funds, simulation failure), ClawRouter now skips all remaining paid models and falls back to `nvidia/gpt-oss-120b` (free). Previously, payment settlement errors returned non-standard HTTP codes that weren't recognized as provider errors, so the fallback loop broke immediately with "Payment settlement failed" โ even though the free model was available. **Fix: pre-a | Low | 3/21/2026 |
| v0.12.65 | ## Bug Fix **Fix: payment error when using free model** โ The pre-auth cache keyed on URL path alone, so cached payment requirements from a paid model (e.g. sonnet) would be applied to `nvidia/gpt-oss-120b`. Users switching to free model with an empty wallet got payment errors even though the server never charged for free requests. Cache key now includes model ID. ``` npm install -g @blockrun/clawrouter@0.12.65 ``` | Low | 3/21/2026 |
| v0.12.64 | ## What's New ### Cost Visibility & Routing Transparency - **Cost headers on every response**: `x-clawrouter-cost` and `x-clawrouter-savings` show per-request cost and savings percentage - **SSE cost comment**: Streaming responses include a cost summary before `[DONE]` - **Model field injection**: SSE chunks and non-streaming responses now show the actual routed model (not the upstream provider's name) ### Improved Error Handling - **Structured fallback error**: When all models fail, error mes | Low | 3/21/2026 |
| v0.12.56 | - Add `zai/glm-5` and `zai/glm-5-turbo` models to model picker - Aliases: `glm`, `glm-5`, `glm-5-turbo` | Low | 3/17/2026 |
| v0.12.30 | Release v0.12.30 | Low | 3/10/2026 |
| v0.12.25 | - **Image generation docs** โ new `docs/image-generation.md` with API reference, curl/TypeScript/Python/OpenAI SDK examples, model pricing table, and `/imagegen` command reference - **Comprehensive docs refresh** โ architecture updated for dual-chain (Base + Solana), configuration updated with all env vars (`CLAWROUTER_SOLANA_RPC_URL`, `CLAWROUTER_WORKER`), troubleshooting updated for USDC-on-Solana funding, CHANGELOG backfilled for v0.11.14โv0.12.24 | Low | 3/9/2026 |
| v0.12.24 | - **Preserve user-defined blockrun/* allowlist entries** โ `injectModelsConfig()` no longer removes user-added `blockrun/*` allowlist entries on gateway restarts | Low | 3/8/2026 |
| v0.12.10 | ## What's New ### `/stats clear` โ Reset usage statistics Users can now wipe all local usage logs and start fresh: - **`/stats clear`** (or `/stats reset`) โ deletes all `usage-*.jsonl` log files and confirms how many were removed - **`DELETE /stats`** HTTP endpoint โ programmatic access for the same operation, returns `{ cleared: true, deletedFiles: N }` These are local usage tracking files only โ billing records on BlockRun's server are unaffected. ### Use cases - Clean metrics after test | Low | 3/6/2026 |
| v0.12.9 | ### Fix: Gemini 3 models break tool calling (#73) - Removed `toolCalling` from `google/gemini-3-flash-preview` โ this model returns empty responses on tool calls, so it's now excluded from tool-heavy routing entirely - Added `google/gemini-3-pro-preview` and `google/gemini-3.1-pro` to `TOOL_NONCOMPLIANT_MODELS` โ these models return tool JSON as plain text instead of structured `tool_calls`, so they're deprioritized when better alternatives exist in the fallback chain | Low | 3/6/2026 |
| v0.12.8 | ## New Models - **GPT-5.4** (`openai/gpt-5.4`) โ $2.50/$15 per 1M tokens, 400K context, reasoning + vision + agentic + tool calling - **GPT-5.4 Pro** (`openai/gpt-5.4-pro`) โ $30/$180 per 1M tokens, 400K context, reasoning + tool calling ## Aliases - `gpt5` now points to `openai/gpt-5.4` (was 5.2) - New: `gpt-5.4`, `gpt-5.4-pro` ## Smart Router Updates - **Auto COMPLEX**: GPT-5.4 replaces GPT-5.2 as fallback (newer, same price tier) - **Premium COMPLEX**: GPT-5.4 added as fallback option - | Low | 3/6/2026 |
| v0.12.5 | ### Bug Fix - **Force agentic tiers when tools are present in API request** โ OpenClaw (and other agentic clients) always send tools in their API requests, but the router only checked prompt keywords to decide whether to use agentic-capable models. Simple prompts like "create a markdown file" scored too low on keyword detection and got routed to cheaper models that don't handle tool use reliably (the "model just talks instead of creating files" bug). Now when the request contains tools, agentic | Low | 3/4/2026 |
| v0.12.4 | ### Bug Fix - **Fix Solana wallet migration missing signatures** โ `signTransactionMessageWithSigners` was producing unsigned transactions because only plain `Address` strings were in the instruction account metas. Added `addSignersToTransactionMessage` to bind both the fee payer (new wallet) and token transfer authority (old wallet) before signing. Fixes "Transaction is missing signatures for addresses" error on `/wallet migrate-solana`. | Low | 3/4/2026 |
| v0.12.3 | ## Fixes - **[P1] Multi-account sweep**: Transfer from each USDC token account individually instead of accumulating balance but only keeping the last account โ fixes failure when USDC is split across multiple accounts - **[P2] Partial file reads**: `fs-read` now loops until all bytes are consumed, respecting `bytesRead` return value - **[P3] JSONL resilience**: Stats parser skips malformed lines instead of dropping all entries when one line fails **Full Changelog**: https://github.com/BlockRun | Low | 3/4/2026 |
| v0.12.2 | ## Fix: Correct SPL Token Program ID in migration sweep The `TOKEN_PROGRAM` constant in `solana-sweep.ts` had an invalid address (`TokenkegQfeN4jV6bme4LphiJbfPe2VopRsimuVSoZ5K`) that decoded to 33 bytes instead of the required 32, causing the sweep to fail with: > Expected base58 encoded address to decode to a byte array of length 32. Actual length: 33. Fixed to the correct SPL Token Program address: `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA` **Full Changelog**: https://github.com/BlockRu | Low | 3/4/2026 |
| v0.12.1 | ## Fix: New wallet pays gas for migration sweep When migrating from the old (BIP-32 secp256k1) Solana wallet to the new (SLIP-10 Ed25519) wallet, the **new wallet now funds the gas** for the sweep transaction. Previously the old wallet was expected to pay gas, but users can't access the old wallet from Phantom to top up SOL โ making migration impossible if the old wallet had zero SOL balance. **Full Changelog**: https://github.com/BlockRunAI/ClawRouter/compare/v0.12.0...v0.12.1 | Low | 3/4/2026 |
| v0.12.0 | ## Breaking Change: Solana Wallet Derivation Fixed **Existing Solana wallets will derive a different address.** Run `/wallet migrate-solana` to sweep funds from old โ new wallet. ### What Changed The Solana key derivation was using **secp256k1 BIP-32** (`@scure/bip32` HDKey), but all Solana wallets (Phantom, Solflare, Backpack) use **SLIP-10 Ed25519**. Same mnemonic + same path (`m/44'/501'/0'/0'`) + different elliptic curve = completely different address. **Before:** Mnemonic recovery in Ph | Low | 3/4/2026 |
| v0.10.18 | ## Problem v0.10.17 pinned the session to the **routing decision** (primary model), not the **actual model used**. When the primary was rate-limited and fell back to gemini-flash: - Session pinned to kimi-k2.5 (the routing decision) - Next request: session says kimi-k2.5 โ rate-limited again โ falls back to gemini-flash again - Conversation stayed stuck in a retry-and-fallback loop ## Fix After the fallback loop resolves \`actualModelUsed\`, update the session pin to the actual responding mo | Low | 2/27/2026 |
| v0.10.17 | ## Problem Users in group chats reported models constantly jumping back to \`gemini-flash\`, even after setting a primary model in the dashboard. Each message was being re-routed from scratch. ## Root Cause Two bugs working together: 1. **Session persistence was disabled by default** โ \`SessionStore\` had \`enabled: false\`, so model pinning never activated 2. **No session ID without the header** โ \`getSessionId()\` only read the \`x-session-id\` header. OpenClaw sends no such header, so e | Low | 2/27/2026 |
| v0.10.15 | ## feat: `toolCalling` capability flag + routing filter ### Why v0.10.14 was directionally correct but incomplete v0.10.14 removed `grok-code-fast-1` from tier configs. That stopped the immediate bleeding, but the root cause remained: ClawRouter had no mechanism to *prevent* incompatible models from entering the routing chain when a request includes tool schemas. Any future model added to tier configs with the same issue would cause the same bug. ### What v0.10.15 adds A `toolCalling` capabi | Low | 2/26/2026 |
| v0.10.14 | ## Fix: Replace grok-code-fast-1 with kimi-k2.5 in MEDIUM routing tiers ### Problem Multiple users reported that ClawRouter was "talking to itself" โ showing raw JSON like `{"command":"..."}` as visible chat messages instead of silently executing tool calls. A large error block would sometimes appear in the chat as a result. **Root cause:** `xai/grok-code-fast-1` (Grok Code Fast) does not properly handle OpenClaw's function call format. When given tool schemas, it outputs tool invocations as | Low | 2/26/2026 |
| v0.10.13 | ## Fix: make `register()` synchronous for OpenClaw compatibility **Reported by:** @KevinkeVarson in #56 โ thank you for the detailed reproduction steps and version bisect\! ### Problem After upgrading from `0.10.10` to `0.10.12`, OpenClaw logs: ``` [gateway] [plugins] plugin register returned a promise; async registration is ignored (plugin=clawrouter, source=~/.openclaw/extensions/clawrouter/dist/index.js) ``` Routing never initializes โ `blockrun/auto` and all BlockRun models stop working | Low | 2/26/2026 |
| v0.10.12 | ## Fix: Score all keyword dimensions against user text only **Reported by:** @Machiel692 in #50 โ thank you for the exceptionally detailed bug report and follow-up testing! ### Problem When ClawRouter is used as an OpenClaw plugin, the system prompt (~6,000 tokens with 20+ tool definitions) contains keywords that match nearly every scoring dimension. This caused **all requests to score identically (~0.47)** regardless of user intent, making `blockrun/auto` routing completely non-functional. | Low | 2/26/2026 |
| v0.10.11 | ## What's New ### Routing Debug Headers Added `x-clawrouter-*` response headers that expose the full routing decision for every request โ making it easy to see exactly which profile, tier, model, and scoring was used. **Debug mode is ON by default.** To disable, send `x-clawrouter-debug: false` header. #### Non-streaming responses Returns these HTTP response headers: | Header | Example | Description | |--------|---------|-------------| | `x-clawrouter-profile` | `eco`, `auto`, `premium` | | Low | 2/26/2026 |
| v0.10.10 | # ClawRouter v0.10.9 โ Fix Agentic Mode False Trigger (Auto Mode Routing to Sonnet) **Release Date:** 2026-02-24 --- ## ๐ Bug Fix: `blockrun/auto` no longer routes all requests to Sonnet **Root cause:** `agenticScore` was computed from `systemPrompt + userPrompt` combined text. Coding assistant system prompts (e.g., OpenClaw's) contain words like "edit files", "fix bugs", "check", "verify", "deploy", "make sure" โ matching 3+ agentic keywords and triggering agentic mode (`agenticScore โฅ 0.6 | Low | 2/25/2026 |
| v0.10.9 | # ClawRouter v0.10.9 โ Fix x402 Payment Verification Failures **Release Date:** 2026-02-24 --- ## ๐ Bug Fixes: x402 Payment Reliability Three root causes behind intermittent "Payment verification failed" errors, all in ClawRouter's local pre-processing logic. The BlockRun server was working correctly throughout. ### Fix 1: Payment failures no longer silently surface to users ClawRouter checks errors against `PROVIDER_ERROR_PATTERNS` to decide whether to retry with a fallback model. `"Paym | Low | 2/25/2026 |
| v0.10.8 | # ClawRouter v0.10.8 โ Fix Partner Tool OpenClaw API Contract **Release Date:** 2026-02-24 --- ## ๐ Bug Fix: Partner Tools Now Work Correctly in OpenClaw Three API contract mismatches between ClawRouter and OpenClaw's tool execution interface, discovered and reported by a user. ### Bug 1: `inputSchema` โ `parameters` OpenClaw expects tool parameter schema under the key `parameters`, but ClawRouter was using `inputSchema`. The model had no way to know how to pass arguments. ### Bug 2: `ex | Low | 2/24/2026 |
| v0.10.7 | # ClawRouter v0.10.7 โ Partner Tool Fixes & Wallet Safety **Release Date:** 2026-02-24 --- ## ๐ Highlights - โ
**Partner tool now triggers reliably** โ AI will always call `blockrun_x_users_lookup` instead of answering from memory - โ
**Baseline cost calculation fixed** โ savings % now computed correctly against `claude-opus-4.6` - โ
**Wallet safety hardened** โ corrupted wallet file throws instead of silently overwriting --- ## ๐ง Fixes ### Fix: Partner tool description uses directive l | Low | 2/24/2026 |
| v0.10.6 | ## Partner API Integration ClawRouter now supports partner APIs through the same wallet โ zero extra setup. First partner: **AttentionVC** (Twitter/X user intelligence). ### How it works ``` Agent โ ClawRouter proxy โ x402 payment โ BlockRun API โ AttentionVC โ Twitter/X data ``` Your existing funded wallet handles payment automatically. Partner API calls route to `/v1/x/*` and `/v1/partner/*` through a new simplified proxy path (no smart routing, SSE, or compression โ just forward + pay). | Low | 2/24/2026 |
| v0.10.1 | ## ๐ฉบ New Feature: `blockrun doctor` AI-powered diagnostics when things go wrong. Collects system info and sends to Claude Opus 4.6 for analysis. ### Usage ```bash # Run automatic diagnostics npx @blockrun/clawrouter doctor # Ask a specific question npx @blockrun/clawrouter doctor "why is my request failing?" ``` ### What it checks - **System**: OS, Node version, memory - **Wallet**: Key exists, balance, low balance warning - **Network**: BlockRun API reachability, local proxy status - **L | Low | 2/22/2026 |
| v0.10.0 | # ClawRouter v0.10.0 - Full OpenClaw 2026.2.21 Alignment **Release Date:** 2026-02-21 --- ## ๐ Highlights - โ
**Claude 4.6** - Using newest Sonnet 4.6 and Opus 4.6 models - โ
**Gemini 3.1 Pro Preview** - Newest Gemini model now available - โ
**Gemini 2.5 Flash Lite** - #2 most popular model on OpenRouter (16.8% of traffic!) - โ
**7 New Models** - Total now 41 models (was 34) - โ
**67% Cheaper ECO Tier** - Flash Lite dramatically reduces costs - โ
**Fixed 5 Pricing Errors** - 15-30% better r | Low | 2/21/2026 |
| v0.9.39 | ## Features - **Context Usage Headers**: Added `x-context-used-kb` and `x-context-limit-kb` response headers to help track token/context usage per request ## Fixes - **Model Selection**: Fixed issue where ClawRouter was hijacking user model selection, forcing `blockrun/auto` even when users explicitly selected other providers (#14) ## Improvements - **Auto Routing**: Removed Minimax models from auto/eco/agentic fallback chains as they don't support tool calling. Users can still explicitly s | Low | 2/21/2026 |