Skip to content

v2026.11.3-2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 06:58
· 1843 commits to main since this release

senpi 2026.11.3-2

The main change: a thinking-signature 400 no longer ends Anthropic sessions.

Fixes you'll notice

  • Anthropic sessions whose replayed thinking is bound to a different conversation recover instead of failing every turn. Claude requests that replay signed thinking ask the API to drop a mismatched block, and the 400 is retried once on the same model without the replayed thinking. Anthropic Subscription reports that refusal as an invalid-request failure instead of an unknown one (#5589, fixes #5587).
  • Anthropic Subscription sessions keep their running Claude Code process across a config hot-reload. Before, the next turn in the same chat paid a fresh Claude Code spawn and transcript resume (#5578).
  • Compaction, /btw, look-at and cache keepalive on a multi-account provider authenticate as the account the session uses, so compaction on a pooled ChatGPT subscription no longer fails with a 401. A managed account-pool placeholder is never sent to a token endpoint (#4426; approach from #2049 by @youngminsw).
  • After a sign-in, a session pinned to a fallback by a billing failure tries the original model again on its next turn instead of staying on the fallback until restart. A token refresh doesn't count as a sign-in; a Cursor CLI account import does. Stored credentials carry an optional loginId for this (#4430).

New

  • The execution ledger gains a block event, so a re-sent prepare after a restart gets the stored reply. An internal prepared tool executor builds on it; nothing calls it yet (#5428).
  • createLooplessRuntimeFactory() builds a runtime with the built-in and extension tools and no agent loop, model binding or transcript. Nothing selects it yet (#5436).

Fixes

  • An auth.json that exists but can't be read is no longer treated as empty. get_auth_providers reports storeError, sign-ins aren't silently shown as "Not connected", and a login can't overwrite the file until it's repaired (#4431, fixes #4413).
  • Sign-in result pages show the running product's name (and logo, when SENPI_BRAND carries one) instead of the pi logo. MCP server sign-in pages and consent screens show that brand too (#4434, fixes #4432).
  • Anthropic Subscription: when one account fails while the others are already blocked, the turn reports that account's own failure, each account block is logged, and the blocked-pool message names the account that needs /login (#4674).
  • Anthropic Subscription: a turn the account pool refuses locally, or a classified Claude Code failure, reports its category (auth, rate_limit, ...) and the soonest retry instead of an unclassified error (#4676).
  • A session given its own fallback policy by its opener (open_session.retryFallback, set_retry_fallback, or SettingsManager.applyOverrides) uses only that policy; the built-in default chains aren't merged back under it (#4678).
  • A user bash run over RPC is published to every observer connection as entry_appended, so a mirror: "all" observer sees the command and its output (#5579, fixes #5576).

Known issues

  • Three CI checks are red on this release and carried: Fused equivalence goldens (#5556), the Eval kernel WebView test on Windows (#5571), and the codemode gate (#5460; fixed on main by #5605, ships in the next release).