Added
- The app-server can discover built-in plugins from roots an embedding application ships, alongside the ones inside the package.
- Vibe Code warns when the selected model cannot view attached images.
- Vibe Code sessions list their background processes in a side panel with live status indicators and a Stop action for running ones.
- The
~/.vibe/.envfallback for the API key when the OS keyring is unavailable is now created owner-only (0600), so a saved key is no longer readable by other accounts on the machine. - Rust CLI: first-run onboarding wizard with theme selection, API key entry stored in the OS keyring, and browser sign-in; it opens automatically when the API key is missing, and
--setupruns it and exits. - Rust CLI:
/teleport,&<prompt>and--teleportsend the session to Vibe Code Web, with push approval and Esc to cancel. - Rust CLI: Configure voice mode and narration with
/voice. - Rust CLI: Schedule recurring prompts in natural language with
/loopand model-managed cron tools. - Rust CLI: Undo and redo composer edits with platform-aware keyboard shortcuts.
- Rust CLI:
vibe updateand--check-upgradeask the install's own package manager (uv, Homebrew, or PyPI) what it can deliver and prompt to upgrade the CLI. - Rust CLI: update checks honor
enable_system_trust_store— bundled Mozilla roots by default, the OS trust store when enabled. - Rust CLI: Clicking the scrollbar track scrolls one page; holding it keeps scrolling until the thumb reaches the pointer.
- Rust CLI: Client usage telemetry now reaches the analytics pipeline: startup timings, slash commands, @-mentions, copies, cancellations and voice transcription events, with the detected terminal reported at launch.
- Models accept a
thinking_levelsfield to offer only the thinking levels they support. - Rust CLI:
/mcpshows connector display names, plugin owners, and a link to add connectors in Studio. /mcp <name>also accepts the display name shown in the browser, and unknown names list those display names.- Per-model
max_context_lengthsetting, editable in/config. - Rust CLI: Mention skills anywhere in a prompt with
/skill-name, with the same caret-based completion popup as@file mentions. - Rust CLI: Accepted
/skilland@filecompletions and pasted images are highlighted in the prompt and edited as a single unit. - Rust CLI: Long pastes show as a
[Pasted n characters]placeholder, also once sent or rewound; paste the same text again right away to show it in full. - Rust CLI: Scrolling to the top of a resumed session or a
/resumepreview loads its older messages automatically. - Rust CLI: the startup banner hint now explains that unsetting
VIBE_CLI(or setting it topython) switches to the legacy Python TUI. - Documented the
VIBE_CLIselector, including the Windows session-variable forms, for running the legacy Python TUI. - Publish a source distribution on PyPI again, so Homebrew can build new releases.
- Rust CLI: Typing a command followed by a space shows its arguments inline (e.g.
/loop,/mcp,/rename) until the first argument is typed. - Fork an earlier completed response while a session continues generating.
- A plugin can bundle its own MCP server executable and launch it with a
./command in itsmcp.json. - Project-links and teleport support in the VS Code extension: link a local workspace to a Vibe Code Web project and teleport the current conversation to continue it in the browser.
- While the model provider is unavailable, Vibe shows which retry it is on and counts down to the next attempt.
/statusshows the active model, provider, and API base.- You can now choose the model behind session titles and smart approve with
[utility_models]in your config;activepins a feature to the model your session runs. - The worktree step of a new session shows what it is doing while it is created, including how many files have been checked out.
- Xcode setup instructions for using Mistral Vibe as an ACP agent.
Changed
-
workspace/git/worktrees/removegained additiveinspect,force, anddeleteBranchparams plusbranchCreated/holdersresponse fields, so a client can probe a removal before committing to it. -
A session that starts in a worktree now announces the prepared worktree over
session/updatedbefore the session moves, so clients that gate their UI on it can proceed as soon as it exists. -
Unified backend: a tool set to
permission = "never"now denies a sensitive path instead of prompting for it. -
Packaged
vibe,vibe-acp, andvibe-app-serverexecutables now always ship the Unified Runtime; a build that cannot collect it fails instead of producing a legacy-only binary. -
Vibe now always runs on the Unified Harness by default and exits with an actionable error when the runtime is missing or broken, instead of silently falling back to the legacy engine.
-
Rust CLI: Pasted images show as numbered
[Image #N]placeholders instead of their file path. -
Rust CLI: Several images attached to one message are listed as a tree.
-
Rust CLI: Web search queries and source titles are sanitized, and long source titles wrap aligned under their bullet.
-
hooks.toml hooks on the unified harness receive session_id, transcript_path and parent_session_id on stdin again, matching the legacy runtime.
-
Builtin tool_input reaches hooks with the CLI's author-facing argument names, and a pre_tool rewrite of those names takes effect.
-
A hook's system_message shows as the hook's result line, and a hook that fails to run reports the real reason instead of a generic message.
-
Rust CLI: The
/resumepicker takes at most 40% of the screen height. -
Previewing a saved session in the resume picker is much faster.
-
Rust CLI: The command and skill completion menu closes as soon as anything is typed after the command.
-
Rust CLI: Tab-completing a command or skill adds a trailing space, ready for its arguments.