- Fixed an OAuth login that finishes after its server was retargeted arming the old-endpoint token against the new URL: credentials are endpoint-bound at issuance, and the host and kernel only use a token bound to the configured endpoint. Breaking: generic MCP OAuth credentials stored before this release lack the binding and require one
/mcp login <server>. - Fixed
mcp addkeeping a storedmcp:<name>credential when the entry was new: any add now drops the name's credential, so tokens for authored non-catalog skills (e.g. slack) cannot replay to a user-configured URL. - Fixed kernel MCP shutdown budgets exceeding the host's kill deadline; graceful close now finishes inside it, and a kernel that exits without a
shutdown_replyno longer stalls shutdown for the full deadline. - Fixed a shutdown race that could leave an MCP server process running after its generation was dropped from the registry.
- Fixed the kernel MCP regression test and the Python runtime tests not running in CI.
- Fixed first IPython calls after an upgrade failing with a raw "Operation was not possible or timed out": kernel startup now tolerates cold venv boots (30s budget; crashes still fail fast via the exit handler), and zmq socket-teardown rejections surface as actionable retriable kernel errors.
- Fixed headless completion reporting a clean finish when a post-compaction continuation failed to start: ACP and print-mode idle waiters now see the failure, while interactive idle behavior is unchanged.
- Added a pre-imported generic MCP API and shell/TUI commands to manage persistent Streamable HTTP and stdio servers in user settings.
- Breaking: removed the documented catalog-name override — an
mcpServersentry named after a built-in integration (e.g.linear) no longer repoints the built-in at a customurl/bearerTokenEnvVar; it now disables the built-in skill and is not served by the generic runtime. Rename the entry (e.g.linear-proxy) to keep using a custom endpoint via the generic API. This closes a credential-replay surface where name-keyed tokens could be sent to an override URL. - Fixed agents overlooking enabled generic MCP connections by advertising their names and pre-imported
mcpAPI usage in the system prompt. - Fixed
/mcpmanagement feedback disappearing during resource reload and limited server details in TUI output to names and transports. - Fixed credentials configured as env var names resolving to the literal variable name when the variable is set but empty; an empty env var now reports a missing credential (#1468).
- Fixed ACP rejecting an immediate follow-up prompt when injected work restarted the session; follow-ups now queue behind in-flight work, and cancellation drops queued follow-ups before they start.
- Added correlated ACP terminal-quiescence metadata, resident session settlement, and fail-closed daemon input fencing; prevented recovery state from persisting runtime credentials or model configuration.
- Fixed explicit RLM child deletion leaving hidden unsettled work after runtime teardown, including reporting cleanup failures and notifying the parent when deletion completes.
- Added changelog fragments (
packages/<pkg>/.changes/*.md) with a CI check and release-time aggregation, eliminating[Unreleased]merge conflicts. - Fixed the queued-message browse controls (Option+Up) rendering in the same style as typed prompt text inside the input box; the header is now dimmed like other hints so it cannot be mistaken for part of the prompt.
- Fixed IPython kernels and forkserver processes outliving their owner after a hard crash: kernels now arm ipykernel's parent-death poller via JPY_PARENT_PID, the forkserver watches its parent pid, and both pids are registered in the orphan process journal for supervisor recovery.
- Fixed a pid-reuse race for forked IPython kernels: signaling and liveness now go through the forkserver (the kernels' parent) instead of raw pid operations from Node, and the orphan journal's inactive record is only written on a confirmed kill outcome.
- Added session-scoped ACP MCP servers through the kernel MCP program API (#1378 by @hallerite).
- Changed the subagents summary under the prompt into a bordered
agentstile with color-coded running/idle/inactive counts and a right-aligned open hint. - Enabled
/fastwith OpenAI API-key authentication for GPT-5.4/GPT-5.5/GPT-5.6 and updated the unavailable message (#1595). - Fixed
/goalre-prompting a parent that had correctly delegated to subagents and ended its turn: the continuation now waits until descendant work settles, then resumes automatically. - Changed post-compaction continuation error classification to typed
AgentContinueErrorcodes instead of matching error message text. - Fixed the working-status elapsed timer (e.g. "Waiting · 5s") restarting at 0s after leaving and re-entering a session or re-attaching to it; the timer is now anchored to the in-flight turn's user message and keeps counting.
- Added a
session_before_refineextension hook: extensions can replace/refineand auto-refine planning with their own proposal (for example using a cheaper model — seeexamples/extensions/custom-refinement.ts) or skip a refinement round; rollbacks bypass the hook and extension edits go through the normal apply-time validation. Also documentsrefine_complete. - Added a durable
[refinement]transcript message after each refinement showing the applied harness edits (expandable to exact before/after diffs via the shared tool-output toggle), and a live loader while a user-issued /refine runs. - Fixed the Agents View heartbeat refresh failing entirely ("Cannot list heartbeats while session worker is failed") when any resident worker was terminally failed: failed workers are now excluded from the global catalog while recovering and disconnected workers still fail closed.
- Refreshed MCP providers immediately after server changes so OAuth connections can be started without restarting Prime Agent.