AI CLIs & agents · mistralai · ↗ Trending on GitHub

Mistral Vibe changelog

Minimal CLI coding agent by Mistral

Latest version
v2.26.1
Last shipped
10d ago
GitHub stars
5.1k
Avg. release gap
4.2 days
Weekly activity · last 26 weeks2 updates · 25w ago4 updates · 24w ago3 updates · 23w ago0 updates · 22w ago2 updates · 21w ago4 updates · 20w ago1 update · 19w ago2 updates · 18w ago4 updates · 17w ago1 update · 16w ago5 updates · 15w ago1 update · 14w ago2 updates · 13w ago1 update · 12w ago3 updates · 11w ago2 updates · 10w ago1 update · 9w ago2 updates · 8w ago2 updates · 7w ago1 update · 6w ago4 updates · 5w ago1 update · 4w ago2 updates · 3w ago0 updates · 2w ago2 updates · 1w ago0 updates · this week

Release history

Recent updates

Friday, October 9Oct 9, 2026

Release v2.26.1

Mistral Vibe v2.26.1

Added The app-server reports which process holds a stored session, and pushes a change when that process lets go of it, so a client can show a session open elsewhere as read-only Rust CLI: Configure proxy and SSL certificate settings with /proxy-setup. Rust…

Read full notes
Added
  • The app-server reports which process holds a stored session, and pushes a change when that process lets go of it, so a client can show a session open elsewhere as read-only
  • Rust CLI: Configure proxy and SSL certificate settings with /proxy-setup.
  • Rust CLI: The narrator reads each turn's summary aloud and shows a speaking status row that Esc or Ctrl+C stops.
  • Rust CLI: /plugins browses the session's plugins, and /reload-plugins re-pins them and reports what changed.
  • Rust CLI: Free-text answers to agent questions accept multiple lines, multi-line pastes, and click-to-place caret.
  • Rust CLI: In the /model and /thinking pickers, s applies the selection for the current session only, while Enter still saves it to your config.
  • Rust CLI: Picking a model immediately opens the thinking level picker for that model, and both are applied together (Esc cancels both); after a session-only model pick, the thinking level is session-only too.
  • nix run .#rustCli to launch the Rust terminal instead of the Python one
  • Rust CLI: /whoami shows the start of your API key, its scope, and its access scope.
  • Space toggles the focused checkbox in multi-select questions.
  • enable_background_processes = false stops the agent from starting background processes
  • enable_subagents = false takes subagents away from the agent on the default runtime.
  • Disable main input cursor blinking with cursor_blink = false or /config, keeping a steady caret in both Python and Rust terminals.
  • Document Library connector: search, list, open, and fetch documents from your Mistral document libraries directly in Vibe.
  • export.json records steps, the number of model calls the agent made
  • export.json lists the session's config issues, such as a skill it could not load, under warnings
  • vibe -p reads the prompt from --prompt-file or stdin, and --output-dir writes an export.json and the session journal on every exit.
  • vibe -p --time-limit SECONDS stops the run at a deadline; SIGTERM and Ctrl-C stop it the same way, and the session can be resumed.
  • Per-model top_p and max_output_tokens config settings.
  • Experimental experimental_enable_model_catalog config flag (default off) — groundwork for the upcoming model catalog, no visible effect yet.
  • New api_stream_idle_timeout setting (off by default) fails a model response that goes silent for that many seconds.
  • vibe -p --agent-socket sessions run background processes in their POSIX sandbox, as enable_background_processes says, instead of always turning them off
  • New title_prompt_id config setting to override the prompt used to generate session titles: built-in session_title or a custom .md file from ~/.vibe/prompts/ or .vibe/prompts/.
Changed
  • New sessions start their first turn faster, and long sessions open, load older messages and resume sooner.
  • /status shows token counts in a compact form (e.g. 1.23M) followed by the exact value, dimmed, with thousands separators.
  • The context usage indicator and subagent token counts round to three significant digits (e.g. 12.5k instead of 12k).
  • Rust CLI: Queue selection removes the highlighted prompt with Backspace or Ctrl+C instead of Backspace or Delete.
  • Rust CLI: Tool group headers count each kind of call (e.g. "Read 10 files, ran 3 commands"), a single visible entry is no longer folded into a group, and result borders line up under their toggle arrows, wrapped headers included.
  • The off thinking level now actually disables reasoning on models whose offered levels include it, instead of silently leaving the server's default in charge.
  • The default model's thinking levels are now off and high; a stored low pick resets to off and a stored medium pick resets to high.
  • The default model declares a 256k context window; auto-compaction now derives from it.
  • A stale pin to the removed local model now warns and falls back to the hosted default.
  • Rust CLI: In text inputs, Cmd+Left/Right, Home/End and Ctrl+A/E at a line edge move on to the previous line start or the next line end.
  • Rust CLI: Shortcut hints use the same wording everywhere, and j/k navigate every list.
  • Rust CLI: /config, /mcp, /plugins and the project picker search with /; Esc leaves the search, then clears it, then closes. /plugins now shows its search field under the title, like /mcp and /config.
  • Rust CLI: Every list marks the focused row with the same highlight bar, and a green › marks the current value.
  • Rust CLI: Lists wrap at both ends and scroll back to their very top, Esc always goes back one level, and numbered options take their digit.
  • Your Mistral identity and plan now show in /whoami and the banner even when the active model isn't a Mistral model.
  • Rust CLI: Typing /, ! or & over a fully selected input switches to that mode, and so does pasting a /command or !command into an empty input.
  • Rust CLI: the startup banner hint now reads "You are using the new Vibe TUI. To switch back to the classic TUI, set the VIBE_CLI environment variable to python."
  • Stopping a background process now also stops what it started in the background, and returns only once all of it has exited
  • A background process now keeps running until everything it started in the background has exited, not just its shell
  • The Document Library connector is now gated behind the experimental_enable_document_library_connector config flag (off by default) while its tools stabilize.
  • vibe -p exits 1 on usage or config errors, 2 on infrastructure failures and 3 when a limit or a model refusal stopped the agent
  • vibe -p --max-turns now exits 3, not 1, when the agent reaches the turn limit; so do --max-tokens and --max-price, including when the budget ran out as the agent finished
  • Model requests retry HTTP 520.
  • Rust CLI: The welcome banner starts at the top left, with the conversation and what's new flowing below it while queued messages stay at the bottom.
Fixed
  • Browser sign-in now explains when your workspace can't be used and asks you to select another one, instead of showing a generic error.
  • Rust CLI: Ctrl+G opens the current input in $VISUAL / $EDITOR and loads the saved text back.
  • Rust CLI: A chat input selection no longer reappears after an approval, a question, or the subagent list takes focus.
  • Rust CLI: Text stays selectable and copyable while an approval, question, picker, or other bottom panel is open, including the transcript, the loading row, and the panel itself.
  • /reload-plugins now offers the skills of a plugin installed during the session, without a restart.
  • Rust CLI: Copying a selection no longer adds line breaks or indentation where long text wraps on screen.
  • Rust CLI: Copying wide characters such as CJK text no longer inserts a space after each one.
  • Rust CLI: Selecting or copying a wrapped or multi-line transcript row no longer picks up its hang indent.
  • Rust CLI: Long lines in an expanded thought now wrap inside its border and indent.
  • Rust CLI: Queue selection and edit controls replace the loading hints for as long as the mode lasts, instead of a notice that timed out or lingered.
  • Rust CLI: The loading hints no longer offer steering or queued-message cancellation when Enter or Ctrl+C would do something else.
  • Rust CLI: Long free-text answers to agent questions wrap instead of overflowing the question box.
  • Rust CLI: Answered questions show a check mark instead of an expand arrow that did nothing.
  • A corrupted MCP OAuth token in the keychain no longer crashes Vibe; the server just asks you to log in again
  • Tool calls with a very large result (e.g. reading a big file) keep their tool-specific header, marked as truncated, instead of showing as a generic tool call.

…

Tuesday, October 6Oct 6, 2026

Release v2.26.0

Mistral Vibe v2.26.0

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…

Read full notes
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/.env fallback 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 --setup runs it and exits.
  • Rust CLI: /teleport, &<prompt> and --teleport send 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 /loop and model-managed cron tools.
  • Rust CLI: Undo and redo composer edits with platform-aware keyboard shortcuts.
  • Rust CLI: vibe update and --check-upgrade ask 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_levels field to offer only the thinking levels they support.
  • Rust CLI: /mcp shows 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_length setting, 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 /skill and @file completions 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 /resume preview loads its older messages automatically.
  • Rust CLI: the startup banner hint now explains that unsetting VIBE_CLI (or setting it to python) switches to the legacy Python TUI.
  • Documented the VIBE_CLI selector, 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 its mcp.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.
  • /status shows 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; active pins 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/remove gained additive inspect, force, and deleteBranch params plus branchCreated/holders response 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/updated before 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, and vibe-app-server executables 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 /resume picker 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.
  • A compaction model on a different provider than the active model is now ignored with a warning instead of rejecting the configuration.
  • CLI session titles now describe the whole task, stop changing after a single confirmation pass, and survive resume unchanged
  • Session titles now draw on tool results (fetched PRs, changed files) so terse prompts still get a useful title
  • Session titles are now generated by default for CLI (opt out with session_logging.generate_titles = false) and run on the session's own model and provider.
  • Session titles and smart approve now check once whether your deployment serves a small fast model, instead of assuming it from the endpoint's address.
  • Custom and self-hosted Mistral deployments that serve a small model now get fast session titles and a fast smart-approve classifier, rather than falling back to your coding model.
  • Where your deployment serves no small model, session titles and smart approve run on your session's model, which costs more per call; name a cheaper one under [utility_models].
  • New session worktrees check their files out in parallel, roughly halving creation time in large repositories.
Fixed
  • Forked Unified Harness sessions now keep their original cache affinity to improve prompt cache reuse.
  • Forked Unified Harness sessions running in managed worktrees now use independent managed worktrees.
  • Forking a live Unified Harness session preserves its active configuration.
  • Isolated forks no longer inherit or revoke the caller's --trust grant.
  • Worktree sessions now use one configuration update for the displayed, executed, and model-visible working directory.
  • Managed-worktree forks warn when uncommitted source changes remain outside the fork.
  • Smart Approve no longer asks for approval on every command or edit that names a file in a managed worktree under ~/.vibe/worktrees.

…

Wednesday, September 23Sep 23, 2026

Release v2.25.8

Mistral Vibe v2.25.8

Added Rust CLI: support for configuring Vibe Code remote projects Clean up managed worktrees after archiving local sessions Archive local sessions so they can be hidden from active session lists Vibe Desktop now shows unseen indicators for local Code sessions…

Read full notes
Added
  • Rust CLI: support for configuring Vibe Code remote projects
  • Clean up managed worktrees after archiving local sessions
  • Archive local sessions so they can be hidden from active session lists
  • Vibe Desktop now shows unseen indicators for local Code sessions that need attention or finish a turn
  • Rust CLI: the live todo plan pins above the input, and Cmd+\ opens the full plan in a right sidebar.
Fixed
  • MCP servers declared by a plugin now start, so the tools they carry are callable in the session
  • Rust CLI: Support sessionless MCP server add and remove commands from the shell.
  • Rust CLI: File completions respect the caret, preserve surrounding text, and allow directory descent.
  • Rust CLI: Filter MCP servers and connectors with / in the MCP browser.
  • Text selection, copying, and scrolling in trusted-folder prompts.
  • Rust CLI no longer renders raw ANSI escape codes from tool output as garbled text.
  • Rust CLI: Pasting into an interactive question now lands in the free-text answer box instead of the composer.
  • Rust CLI: Selecting transcript text while an interactive question is open now highlights and copies it.
  • Rust CLI: The question text, its options and the waiting row are now selectable with the mouse while a question is open; the option prefix (cursor, numbering, checkbox) is never selected or copied.
  • Rust CLI: Releasing a selection while a question is open now flashes the Copied inline notice, and only when autocopy is enabled.
  • Rust CLI: Selecting text while a question without the free-text row (hideOther) is open now anchors from every box row instead of none.
  • Rust CLI config editor now clearly identifies each setting's source and save layer
  • Rust CLI config editor keeps the caret visible at exact-width line endings
  • /leanstall and /unleanstall now work on the unified backend instead of failing
  • /leanstall and /unleanstall no longer crash the TUI on the unified backend
  • Uninstalling the agent the session is running switches it back to the default agent on the unified backend
  • Rust CLI exits cleanly when its terminal disconnects.
  • Rust CLI: toast text can be selected and copied without dismissing the toast
  • Rust CLI: preserves transcript ordering when session snapshots arrive
  • Rust CLI: the what's-new banner is dismissed by the first prompt instead of staying pinned at the bottom
  • Org-enforced configuration now applies when a Unified Harness session opens
  • Enforced allowed-model policies now match canonical model names
  • Show model-policy warnings when enforced configuration arrives at startup
  • Reject enforced model policies that match no configured models
  • Unified Harness: subagents defined in ~/.vibe/agents or .vibe/agents can be spawned again
  • Unified Harness: an agent that names its own system_prompt_id runs on that prompt instead of the default
  • An agent file the harness cannot honor is reported instead of disappearing silently
  • Switching to an agent before the first message now applies its prompt, not just its tools
  • Relative path allowlists no longer authorize files just because the path ends with the same suffix.
  • Shell command wildcards no longer skip outside-workdir path checks.
  • Legacy parent-folder grants no longer cover nested descendants, so some outside-workdir accesses may ask for approval again.
  • On macOS 26 and later, the native harness no longer fails to load with a 'mis-aligned LINKEDIT string pool' error.
  • MCP OAuth login no longer fails after the browser callback on servers that issue a client secret (e.g. Supabase)
  • Abandoned MCP OAuth logins now time out and release the loopback callback port instead of blocking later logins until exit
  • Outside-workdir approvals now apply to the referenced file or, for a folder, its full tree.
  • Scrolling the Rust CLI transcript no longer stutters on long sessions with large edit diffs or file bodies.
  • The todo list now updates while the agent is running a run_typescript program, instead of staying frozen until the program finishes.
  • Unified Harness: restore lazy injection of subdirectory AGENTS.md docs on read_file, matching the legacy harness

Tuesday, September 22Sep 22, 2026

Release v2.25.7

Mistral Vibe v2.25.7

Fixed Allow /teleport with Vibe and workspace API keys, including free accounts, without an internal feature gate. Explain which API keys to use when teleport rejects a Codestral key. Warn when managed configuration contains removed Vibe Code settings. On…

Read full notes
Fixed
  • Allow /teleport with Vibe and workspace API keys, including free accounts, without an internal feature gate.
  • Explain which API keys to use when teleport rejects a Codestral key.
  • Warn when managed configuration contains removed Vibe Code settings.
  • On Windows, opening a session that is already open in another process reports 'Session is already open' instead of a raw permission error.
  • On Windows, idle-session cleanup no longer mistakes a session held by another process for an idle one.
  • Automatic project context no longer runs repository-configured Git clean or process filters.

Friday, September 18Sep 18, 2026

Release v2.25.5

Mistral Vibe v2.25.5

Added Subagent conversation history is readable through the owning parent session Configurable live subagent status and read-only transcript switching from the interactive prompt --experimental-harness sessions can track todos, shown as a pinned line under the…

Read full notes
Added
  • Subagent conversation history is readable through the owning parent session
  • Configurable live subagent status and read-only transcript switching from the interactive prompt
  • --experimental-harness sessions can track todos, shown as a pinned line under the input and in full on /todo, and keep a per-session scratchpad whose notes are re-stated to the agent after the conversation is summarised.
  • Turn an installed skill on or off from the /skills browser without removing it.
  • Skill authors can mark skills as explicit-only, keeping slash invocation available while preventing model-initiated loading.
  • vibe mcp add --allow-insecure-http and /mcp add --allow-insecure-http opt into plaintext http:// MCP servers on non-localhost hosts, such as a server on the LAN.
  • Tool telemetry events now carry approval_source (config/smart/user/bypass/never) to distinguish how a tool call was authorized.
  • Press r in the MCP servers & connectors panel to refresh the list on demand.
  • Connectors view now links to Studio to add more connectors, pre-scoped to your org and workspace.
  • Local app-server sessions now persist and expose their latest accepted user interaction timestamp for downstream session resources.
  • Unified Harness app-server sessions can now be pinned, and remember it across restarts.
  • Scheduled loops (/loop) are now available in the Vibe VS Code extension with a panel UI for creating, listing, editing, and canceling recurring prompts.
  • Vulnerability disclosure guidance and private reporting instructions in SECURITY.md.
  • /teleport now works under --experimental-harness
Changed
  • The Unified Harness is no longer labeled "experimental"; --legacy-harness is the documented escape hatch back to the legacy Python harness.
  • Sessions with OAuth MCP servers configured start faster: fewer and overlapping keychain reads.
  • Approving a shell command with a variable expansion now covers the next call that differs only in the expansion.
  • Switched the audio engine to miniaudio to improve stability and performance of voice recording and playback
  • Connectors are listed and titled by their display name, falling back to the connector name.
  • Removed the local Cargo build job cap that limited editable builds to 2 jobs, restoring full parallelism for local harness builds.
  • Admin-managed config now enforces the individual keys it sets inside session_logging, project_context and experiments, rather than the whole group. Keys an admin does not set are taken from the user's own config instead of being reset to defaults.
  • A model change requested while a turn is running is now accepted and applied at the next turn boundary, instead of being rejected.
  • The Vibe CLI now sends a dedicated MistralAI-VibeCLI/<version> User-Agent header on MCP HTTP requests, letting the connectors gateway distinguish Vibe CLI tool calls from other MCP clients.
Fixed
  • Images attached to text-only models now fall back to file links instead of failing the turn.
  • Worktree sessions now tell the agent about the worktree working directory instead of the original checkout.
  • Subagents no longer prompt for tool permission when the parent session is in auto-approve mode under the Unified Harness
  • Workspace trust decisions over ACP now require a session and can only target its working directory.
  • The experimental unified harness can now record the IDE's workspace trust decision.
  • Keep skills with invalid invocation policy metadata explicit-only instead of exposing them to the model.
  • Creating or cleaning up a worktree no longer runs the repository's own git hooks (such as post-checkout) or its fsmonitor command.
  • Show retrying status during transient provider failures.
  • Cancelling a turn no longer hangs when the interrupt wedges server-side, and an interrupt that is taking unusually long now warns with the force-quit hint instead of leaving you staring at a silent "Interrupting" spinner.
  • Message sending after resuming pre-existing sessions that use connectors
  • Attaching an image from outside the workspace (e.g. ~/Downloads) in a fresh session no longer fails with 'Image file is outside the workspace or session attachments'.
  • Existing session logs are restricted to owner-only permissions when Vibe starts.
  • Vibe's home directory and the logs inside it are now accessible only to the current user.
  • Tool telemetry events now carry the actual approval decision (execute/skip) and approval type (always/never/ask) instead of always None.
  • MCP and connector tool calls now respect the permission system: they honor each tool's configured permission, ask before running by default, and remember your approval for later calls.
  • The enabled_tools and disabled_tools config globs now apply to MCP tools, not just connector tools.
  • session_logging.enabled = false is honoured again on the Unified Harness: the conversation and its attachments no longer land in the session save directory, the session log summary reports that logging is off, and --continue/--resume are refused with the same message the legacy backend gives.
  • Hooks now run inside subagents on the experimental harness, instead of being silently skipped.
  • pre_tool and post_tool hooks now run for the skill tool, which previously took no hooks at all.
  • Hook commands using pipes, &&, redirects, globs or $VAR now run through the shell.
  • A hook's match now matches the tool the model actually calls, including edit and MCP tools.
  • Unified Harness now injects the current git branch, status, and recent commits into the system instructions, matching the legacy backend
  • Shell approvals no longer widen to cover a different program, subcommand, custom shell, or environment.
  • Shell approvals no longer cover side-effecting options that the command's guardrails gate.
  • Approving a guardrailed command whose argument the shell could not read no longer approves the same command with a different one.
  • A shell call that can only be approved as written -- a redirect, a heredoc, a command the shell could not read -- is no longer covered by a wider approval for the same program.
  • A permanent approval a tool's allowlist cannot express is kept to the session instead of written there, and now says which scopes it kept.
  • Saving a setting while another part of Vibe reads the same config file no longer fails the request
  • Starting a turn after an enqueued first message no longer fails while a worktree is being prepared.
  • Agent and experiment updates no longer conflict with a worktree setup turn the UI already shows as running.
  • Stopping a worktree setup turn now runs the next queued message.
  • A dropped first-turn response no longer blocks later turns while a worktree is being prepared.
  • A dropped stop response no longer leaves a worktree setup turn stuck.
  • Creating a loop via /loop no longer fails with an opaque "Internal error"; app-server errors are now surfaced with their actual message.
  • /mcp login now recovers when a stored OAuth token refresh fails transiently (e.g. the server returns 5xx); it discards the stuck credentials and retries a fresh authorization instead of failing every retry.
  • Shell commands using line continuations now require approval.
  • sort --files0-from now requires approval before reading listed files.
  • Teleport no longer runs repository-configured external diff or text conversion helpers when preparing diffs.
  • Teleport no longer runs repository-configured file-monitor hooks when preparing diffs.
  • WebFetch now requires separate approval before following redirects to another origin.
  • Vibe no longer runs a project-local Git executable during automatic repository inspection.
  • Config layers now merge key by key, so setting one nested value through an environment variable or a project file no longer discards the rest of that group.
  • Reopening a session now restores the model that was picked last, not the one the last turn started with.
  • Changing the model in the CLI no longer stops the session's live display.
  • Smart approve now asks you to confirm a risky action you requested, instead of blocking it repeatedly and giving up.

…

Saturday, September 12Sep 12, 2026

Release v2.25.4

Mistral Vibe v2.25.4

Fixed Connector discovery excludes raw HTTP connectors that do not support MCP tools. A single invalid connector no longer prevents the rest of your connectors from loading; an individual tool with an oversized schema is dropped on its own, and accounts over…

Read full notes
Fixed
  • Connector discovery excludes raw HTTP connectors that do not support MCP tools.
  • A single invalid connector no longer prevents the rest of your connectors from loading; an individual tool with an oversized schema is dropped on its own, and accounts over the connector cap keep a bounded catalog instead of loading none.
  • Automatic session titles use the active model on custom Mistral endpoints.
  • Smart-approve now appears in the Vibe Desktop mode picker when enabled via its rollout, and a background refresh no longer drops it.
  • ACP clients (Zed/JetBrains) always list the active mode, so a session can never get stuck on a mode missing from its own list.
  • Smart-approve now escalates to a confirmation prompt when a risky action is requested again, instead of only blocking it, and shows the reason it is asking.
  • Auto-approved calls no longer read as warnings: the reason smart-approve let a call run is shown as a note rather than a warning.
  • @ file mentions now resolve against every workspace root, including --add-dir ones.
  • A @ mention outside the workspace no longer rejects the whole message; it stays plain text and the read tool can still ask for it.
  • --add-dir no longer drops the working directory from the file tools' workspace roots.
  • Shell permission checks now require approval for risky syntax and command options that could bypass workspace and denylist controls (CVE-2026-87984, CVE-2026-87985, CVE-2026-87986, CVE-2026-87987, and residual CVE-2026-87988 variants).

Friday, September 11Sep 11, 2026

Release v2.25.3

Mistral Vibe v2.25.3

Added New /branch command forks the current conversation into a new resumable session, leaving the current session unchanged. Resume the copy in another terminal with vibe --resume <id>. Changed Bump the local harness runtime to v0.4.5. Make @ file mentions…

Read full notes
Added
  • New /branch command forks the current conversation into a new resumable session, leaving the current session unchanged. Resume the copy in another terminal with vibe --resume <id>.
Changed
  • Bump the local harness runtime to v0.4.5.
  • Make @ file mentions use Git-aware discovery and accept standalone pasted files and folders.
Fixed
  • Retained chats remain readable and restore their worktrees when work resumes.
  • New session logs are no longer readable by other users on POSIX systems.
  • AGENTS.md instructions now load into the system prompt under the experimental unified harness.

Thursday, September 10Sep 10, 2026

Release v2.25.2

Mistral Vibe v2.25.2

Added VS Code extension: debug submenu with log level picker, open log file, and a togglable session status panel showing agent statistics (steps, tokens, tokens/sec, context, cost) Changed Open the session picker faster by building the merged session listing…

Read full notes
Added
  • VS Code extension: debug submenu with log level picker, open log file, and a togglable session status panel showing agent statistics (steps, tokens, tokens/sec, context, cost)
Changed
  • Open the session picker faster by building the merged session listing once per cursor walk instead of on every page.
  • Renamed SessionBackendKind literals from "python"/"rust" to "legacy"/"unified" to match backend identity naming.
Fixed
  • An "always" permission grant that fails to reach ~/.vibe now warns instead of passing silently: ConfigOrchestrator.set_field returns its errors rather than raising, so an ignored failure looked exactly like a successful write and the next session asked again with nothing to explain why.
  • Steered prompts now preserve their host-provided display content in app-server session history.
  • Preserve the selected permission mode when a session starts in a worktree.
  • Managed worktree creation, attachment, and retention cleanup are serialized across processes, and stale reservations are recovered safely.
  • Stop dropping a session from the picker when it is touched while paging through the list.

Wednesday, September 9Sep 9, 2026

Release v2.25.1

Mistral Vibe v2.25.1

[2.25.1] - 2026-09-09 Added Desktop keeps 15 recent managed Code worktrees by default, configurable in Local Coding settings; cleanup skips active, dirty, untracked, or unpushed worktrees. Background process tools (process.start, process.stop, process.output,…

Read full notes

[2.25.1] - 2026-09-09

Added
  • Desktop keeps 15 recent managed Code worktrees by default, configurable in Local Coding settings; cleanup skips active, dirty, untracked, or unpushed worktrees.
  • Background process tools (process.start, process.stop, process.output, process.list, process.write) now show the command or process ID in the call header and a typed result widget instead of raw JSON.
  • Tool call groups now fold into a single compact summary line by default. Click to expand the full list. Ctrl+O toggles all groups and result bodies. The summary shows present-tense labels while running (e.g. "Running commands") and past-tense when done (e.g. "Ran commands"). File edits and writes are included in the fold.
  • Show a loading spinner in the conversation while /reload is in progress
  • A risky call is returned to the model to self-correct rather than interrupting the human, escalating to an approval prompt only after a streak; no failure path auto-approves
  • Experimental experimental_enable_tab_status config option: shows >> (running) and ? (waiting) indicators in the terminal tab title.
  • New built-in worktree plugin with a skill for creating, reusing, and cleaning up git worktrees under $VIBE_HOME/worktrees.
Changed
  • The invalid API key error now names where the key came from (env var MISTRAL_API_KEY, the keyring), so a shell-exported key shadowing the one saved at setup is visible.
  • Optimized resource usage when running the full test suite.
  • The vibe and skill-creator skills now reach a session as skills of the shipped vibe plugin, so they are offered once, as /vibe:vibe and /vibe:skill-creator.
  • Bump harness to v0.4.3
  • Vibe Desktop can create local projects from any existing folder.
  • Background LLM session titles are now off by default. Set session_logging.generate_titles = true to re-enable them.
  • Vibe CLI shows the output of a ! command directly in the timeline: it is neither folded behind its own toggle nor gathered into the summary line that folds the agent's tool calls. Shell calls the model makes still fold, as every other tool result does.
  • The /plugins detail view now leads with Author and Version, then the description, then Location (renamed from "Installed from"), Scope, Format, and Pinned.
  • The /resume session picker now shows an animated loading indicator while saved sessions are discovered and waits briefly before loading a highlighted session preview, keeping rapid keyboard navigation responsive.
  • A session that asks for a worktree now starts in the repository and moves into the worktree once git worktree add lands, so the session exists from the moment the prompt is sent instead of after the checkout. Only its first turn waits.
Fixed
  • Worktree sessions retain access to attached images and files.
  • Pinning or removing a shared skill now republishes this repository's claims, so another repository's cleanup no longer deletes a skill you just added.
  • Removed unauthenticated debugpy listener on localhost:5678 that was activated by DEBUG_MODE=true under vibe-acp
  • A rejected API key no longer offers /retry, which could only fail again with the same key.
  • Path autocomplete now prioritizes matches beneath an explicitly typed directory prefix in large repositories
  • GrowthBook rollouts set only via a feature's default value now take effect (previously ignored)
  • GrowthBook boolean feature flags now take effect, not just string on/off values
  • Cached experiment variants are no longer dropped to defaults on cold start or resume
  • Stop the CLI from dumping a traceback on exit when the app-server connection drops during shutdown (a failed reconnect/resume no longer crashes the event listener).
  • Built-in plugins are no longer listed under "Not loaded" in /plugins with "Plugin namespace 'vibe' is reserved". Only a built-in may claim the reserved vibe namespace, but the re-resolve a session's plugin bind performs was re-reading every checkout at project scope, so the shipped vibe plugin was dropped from every session.
  • Tool call group icon now reflects the status of the last call in the group instead of the worst (any failure no longer overrides a later success)
  • Individual failed tool call indicators stay grey (muted) when a later call in the same group succeeds, instead of escalating to red
  • Tool group and individual tool call indicators now show a blinking square while running, then a colored dropdown triangle when settled
  • App-server validation errors now name the offending field and reason instead of only "Invalid request parameters".
  • The auto-generated session title now waits for the first turn to complete and ignores the assistant's process preamble, so it names the actual task (e.g. the real subject of a linked issue) rather than an opening line like "I'll explore the codebase"
  • Session titles now generate and refresh while a turn is still running — including long, tool-heavy turns that emit few assistant messages — instead of only when the turn ends or is interrupted
  • A ! command that exits non-zero (or is interrupted) now shows what it printed. Only the exit status was reported before, which hid the stderr explaining it.
  • User-scope plugins (~/.vibe/plugins/) were shown as project scope in /plugins because the bind-time resolve collapsed all staged checkouts to project scope. Scope is now preserved from the original discovery.
  • Smart approve now runs its classifier on the fast Mistral model regardless of the session's active model, including when you switch into the mode mid-turn; a session on another model (e.g. a non-Mistral provider) sent the classify call to the wrong endpoint, so every gated tool call came back unverifiable and prompted instead of auto-approving
  • The smart-approve pre-check no longer fast-approves content-dumping git commands (git diff/show/blame, git log -p, git status -v); they defer to the classifier so a secret shown in a diff is not auto-read
  • The smart-approve pre-check no longer fast-approves a secret path hidden behind a cd prefix (e.g. cd ~/.ssh && ls); the secret scan now reads the whole command, not the part after the cd
  • The classifier now runs the fast model with deterministic decoding (temperature 0, thinking off) regardless of the session, so a thinking session no longer sends a thinking request to the small model and escalates every gated call
  • A subagent's classification event under smart approve is now forwarded to telemetry like a top-level one, instead of being applied as a subagent state update — which had dropped the subagent's events from the main-agent stream
  • Smart approve no longer classifies ui.ask_user_question; asking the user a clarifying question is the escalation channel itself, so it always runs instead of paying a classifier round-trip, being deny-and-continued, or escalating to an approval dialog to ask
  • Starting with --smart-approve now keeps the mode in the Shift+Tab cycle for the whole session; it was selected at launch but dropped out of the cycle after switching to another mode, so you could not switch back to it
  • Switching agent mode mid-turn now re-gates MCP/connector tools too: leaving smart approve stopped asking for built-in tools but kept classifying every connector call because the mid-turn config graft dropped provided_tool_mode
  • "Approve for session" on an MCP/connector tool under smart approve now covers the whole tool instead of the exact arguments, so calling the same tool with different arguments no longer re-prompts (built-in tools keep their per-call resolver scope)
  • Resuming a session created by a newer version of Vibe now shows a clear message to restart with --check-upgrade and update, instead of an internal store-format validation error.
  • Hook commands run without a shell to prevent injection via hooks.toml

Friday, September 4Sep 4, 2026

Release v2.25.0

Mistral Vibe v2.25.0

Added /skills browser for session skills, with search and filter; shared skills sync on session start. Experimental, off by default. Browser SSO completes behind split-horizon reverse proxies; opt-in browser_auth_allow_origin_rewrite rewrites sign-in/poll URLs…

Read full notes
Added
  • /skills browser for session skills, with search and filter; shared skills sync on session start. Experimental, off by default.
  • Browser SSO completes behind split-horizon reverse proxies; opt-in browser_auth_allow_origin_rewrite rewrites sign-in/poll URLs onto configured origins
  • Discovery of Mistral's built-in web-search connector
  • Plugin-declared MCP servers in /mcp, tagged with their plugin and authenticatable via /mcp login; a pending login is announced at session start
  • Connectors (Notion, Linear, Slack, GitHub, Gmail, Google Calendar, Drive) in ACP
  • ACP elicitation-form clients can answer ask_user_question and exit_plan_mode
  • Session-scoped model pinning for resumed conversations
  • vibe update to check for and install a newer release
Changed
  • Connector discovery skips unsupported protocols
  • agents/list no longer requires a session id
  • Prompt queueing runs through the app server with select, edit, remove, pause, and resume controls
  • /skills browser groups by scope, fits rows to width, and pages long lists
  • vibe --yolo selects the auto-approve profile (cyclable with Shift+Tab; blockable via disabled_agents)
  • A plugin MCP server whose name collides with an [[mcp_servers]] entry is dropped with a warning instead of inheriting the configured credential
  • /config saves to user config by default; Tab cycles user / session / (trusted) project target
  • Vibe CLI sends queued prompts as a single turn; Desktop keeps turn-by-turn
  • /mcp title marks an in-flight background refresh
Fixed
  • Pruning cached skills preserves versions pinned by other repos
  • Approved file operations act on the cleared path, preventing symlink redirection outside the project; approved writes outside the project execute
  • Onboarding crash on a malformed browser_auth_api_base_url port
  • Split-horizon account and re-signin reach the connector origin and adopt tenant domains from /whoami
  • Multi-line tool descriptions (remote MCP, connector, plugin) no longer break /mcp layout; rows render the first line only, [source] prefix stripped
  • Mode indicator reflects the effective tool-approval bypass (--yolo, --auto-approve, bypass_tool_permissions)
  • Builtin vibe skill no longer recommends the removed /terminal-setup and now documents /copy, /paste-image, /remote-project
  • Context gauge drops the discarded conversation immediately after /clear and /compact
  • /config shows and edits the active model's effective auto-compaction threshold, preserving org-enforced global locks
  • Session event stream no longer crashes on a JSON-Patch move from a field relocation
  • /mcp login no longer probes with a bare GET (405 before credentials); for a plugin server it sends the plugin's declared headers and uses its own URL, not a same-named [[mcp_servers]] entry from another session
  • Toggling an MCP row the app server refuses to change shows a notice instead of ending the session
  • /mcp add under a plugin-owned name takes the name immediately for the configured entry
  • /mcp refresh reconnects plugin servers, not just configured ones
  • Same-named plugin MCP servers each get their own /mcp row with their own status and tools
  • Adding then removing an [[mcp_servers]] entry under a plugin-owned name no longer strands the plugin's server
  • A second session no longer drops the first's plugin servers or [[mcp_servers]] entries; each session's configured servers are its own
  • A server whose name another session shares no longer gets that session's credential deleted on identity mismatch
  • Context-window indicator updates on model switch without a restart
  • Failed queue merge no longer leaves a ghost prompt; rewind targets the merged turn's real history entry and survives removing the first queued prompt
  • Connectors/MCP panel auto-sizes to content instead of a fixed 50vh
  • /mcp no longer paints a failing-discovery source or unlinked connector as enabled before it comes up
  • Crash on closing the app while a turn is streaming
  • Loading spinner keeps its "Interrupting" label in the pre-surface gap
  • Closing the resume picker mid-load no longer crashes with NoMatches
  • Invalid active model falls back to the current default; the banner model refreshes after clearing a session
  • Account refresh no longer overwrites third-party provider settings on a concurrent model change
  • Rewind into a new session and rewind-in-place while resyncing no longer redraw stale turns
  • /mcp opens from cache and waits 60s before refreshing; HTTP setup runs outside the UI loop
  • System trust store respected during browser sign-in
  • A message sent while idle or right after interrupting no longer flashes as queued and shows the loading indicator immediately
  • Escape-to-interrupt updates the status immediately; Escape+Enter to restart a queued turn no longer drops the Enter; Escape just as a turn finishes no longer stalls the next message
Removed
  • Devstral Small (devstral-small-latest) from the default models list; stale sparse config overrides migrated automatically

Thursday, August 27Aug 27, 2026

Release v2.24.5

Mistral Vibe v2.24.5

Added Fuzzy search in the MCP servers and connectors browser Changed Faster startup through additional lazy imports and deferred schema builds Fixed Trust prompt is skipped when --worktree or --trust already grants access Links are normalized before opening to…

Read full notes
Added
  • Fuzzy search in the MCP servers and connectors browser
Changed
  • Faster startup through additional lazy imports and deferred schema builds
Fixed
  • Trust prompt is skipped when --worktree or --trust already grants access
  • Links are normalized before opening to prevent broken clicks
  • Themes apply correctly at startup
  • Retried Mistral responses are released back into the connection pool

Wednesday, August 26Aug 26, 2026

Release v2.24.4

Mistral Vibe v2.24.4

Added LLM-generated session titles and terminal title Queue selection and edit mode for queued messages Git info is shown in the session header Changed Model connections are reused across tool turns for faster responses Fixed /mcp login <connector> routes to…

Read full notes
Added
  • LLM-generated session titles and terminal title
  • Queue selection and edit mode for queued messages
  • Git info is shown in the session header
Changed
  • Model connections are reused across tool turns for faster responses
Fixed
  • /mcp login <connector> routes to the connector auth flow
  • Rate-limited calls retry with adaptive backoff and pacing
  • Model retry state stays authoritative across clients
  • Loading nix-managed skills through a symlinked SKILL.md no longer freezes
  • Chat-completion connections are closed to avoid pool timeouts

Thursday, August 20Aug 20, 2026

Release v2.24.3

Mistral Vibe v2.24.3

Added Slash commands and setting pickers can be used while the agent or a command is running The process is named "Vibe CLI" and the bottom bar shows its PID Changed Models are shown by display name instead of the raw config alias Python dependencies updated…

Read full notes
Added
  • Slash commands and setting pickers can be used while the agent or a command is running
  • The process is named "Vibe CLI" and the bottom bar shows its PID
Changed
  • Models are shown by display name instead of the raw config alias
  • Python dependencies updated to clear known security advisories
Fixed
  • Connector bootstrap failures are surfaced instead of reporting no connectors

Tuesday, August 18Aug 18, 2026

Release v2.24.2

Mistral Vibe v2.24.2

Added In-app session picker with live preview /log-level command for runtime log-level control /retry is exposed to ACP clients Created worktrees are shown in the transcript Worktrees are cleaned up when their local session is deleted Changed Faster startup:…

Read full notes
Added
  • In-app session picker with live preview
  • /log-level command for runtime log-level control
  • /retry is exposed to ACP clients
  • Created worktrees are shown in the transcript
  • Worktrees are cleaned up when their local session is deleted
Changed
  • Faster startup: the TUI renders before session initialization and imports are deferred
  • Faster session resume
  • Edit and read tool headers show paths relative to the current directory
  • Admin config fetch retries with exponential backoff
  • Custom tools are flagged as deprecated
Fixed
  • New worktrees branch from the remote default instead of local HEAD
  • Configured temperature is respected for reasoning models
  • Thinking setting updates correctly for routed models
  • Path picker stays open on / and supports ../ traversal
  • Escape sequences in command output no longer flood the input box
  • Live tool-permission bypass propagates to child agent loops
  • Managed shell output is no longer sent to the LLM twice
  • Adding a tool to the allowlist keeps the default allowlist
  • OpenTelemetry traces are sent to the correct endpoint

Tuesday, August 11Aug 11, 2026

Release v2.24.1

Mistral Vibe v2.24.1

Added Inline ghost-text completion for mid-prompt skills /clear and /new accept an optional first prompt and show the resume id Compacted conversation history is preserved OpenTelemetry tracing configuration is now available Changed Default agent renamed to…

Read full notes
Added
  • Inline ghost-text completion for mid-prompt skills
  • /clear and /new accept an optional first prompt and show the resume id
  • Compacted conversation history is preserved
  • OpenTelemetry tracing configuration is now available
Changed
  • Default agent renamed to ask and defaults to accept-edits
  • Auto worktrees are named with a model
  • Faster resume by deferring sub-agent instantiation
Fixed
  • Surface MCP server startup failures to the user
  • Text selection is now visible in the chat input
  • Provider reasoning is replayed verbatim
  • Detect and retry incomplete LLM streams
  • Surface voice transcription errors instead of swallowing them
  • Proactively refresh expired MCP OAuth tokens
  • Theme switching is now responsive
  • Crash on undo of a large multiline insert in the chat input
  • Config modal headers stay visible on wrap, with a tighter layout
  • Trusting the cwd no longer untrusts <cwd>/.vibe
  • Home directory is no longer treated as a project root
  • Explain the fallback when the configured default model is invalid
  • Scope sensitive-file read grants and stop chat bypass
  • Git Bash paths no longer create bogus C:\c\... directories on Windows
  • Use POSIX separators when shortening home paths in display
  • /clear resume hint gated on session persistability

Wednesday, August 5Aug 5, 2026

Release v2.24.0

Mistral Vibe v2.24.0

[2.24.0] - 2026-08-05 Added Admin config layer for shared/enforced config that applies over user config "Default" (unpinned) model option in /model and /config to track the recommended model without pinning a specific alias Server-side default model routing…

Read full notes

[2.24.0] - 2026-08-05

Added
  • Admin config layer for shared/enforced config that applies over user config
  • "Default" (unpinned) model option in /model and /config to track the recommended model without pinning a specific alias
  • Server-side default model routing via experiment, never overriding explicit pins
  • LLM retries surfaced in ACP/VS Code conversations via _session/retrying notification
  • Explore subagent can load skills
  • Local sessions start in the selected worktree
  • User and project config layers compose; trusted project config overlays user config instead of replacing it
  • Startup duration telemetry (vibe.startup)
Changed
  • Experiment variants routed through the config schema; TOML/env/overrides now take precedence over GrowthBook assignments
  • Autocopy: keyboard copy shortcuts give feedback, double/triple-click drag improved, and autocopy_to_clipboard documented
Fixed
  • Drag-and-drop of files into the terminal when unfocused (iTerm2, Ghostty)
  • Subagent session handoff after compaction
  • Stale devstral-small thinking setting migrated to off
  • Noisy non-Vibe events dropped from Sentry
  • ACP returns max_turn_requests stop reason instead of erroring on turn limit
  • /resume listing speed no longer scales with total session count (persistent index)

Monday, August 3Aug 3, 2026

Release v2.23.3

Mistral Vibe v2.23.3

Added /retry command to retry an interrupted response /rewind now lets you choose between forking and rewinding in place LLM retries surfaced in the UI and logs Read the config catalogue without an attached session Changed /status shows provider prompt-cache…

Read full notes
Added
  • /retry command to retry an interrupted response
  • /rewind now lets you choose between forking and rewinding in place
  • LLM retries surfaced in the UI and logs
  • Read the config catalogue without an attached session
Changed
  • /status shows provider prompt-cache usage and discounts cached tokens from the session cost
  • Native copy hint on the clipboard notice
Fixed
  • Refused config change no longer wipes the picker
  • Git fsmonitor hook disabled in project context
  • Signed reasoning blocks preserved
  • Tab hint colored in config edit modal
  • UPX disabled in the PyInstaller specs
  • List formatting preserved when copying a selection from the TUI
  • Duplicate approval widget prevented when callbacks overlap
  • ACP usage update sent on session resume, fork, and new
  • Context token display updated on session resume
  • More frequent context window updates in ACP
Removed
  • Unreachable chat mode

Thursday, July 30Jul 30, 2026

Release v2.23.2

Mistral Vibe v2.23.2

Added Skill-creator built-in skill: a guided flow to author, update, and delete your own skills Browser sign-in can target a custom login domain for self-hosted or private-gateway deployments Session stats now track provider cache-hit (cached) tokens Changed…

Read full notes
Added
  • Skill-creator built-in skill: a guided flow to author, update, and delete your own skills
  • Browser sign-in can target a custom login domain for self-hosted or private-gateway deployments
  • Session stats now track provider cache-hit (cached) tokens
Changed
  • Redesigned /config as a searchable, full-screen settings browser with typed edit modals and per-layer origin display
  • App-server protocol extended and packaged as a standalone vibe-app-server binary for desktop integration
Fixed
  • Cached-token counts now reported in session stats instead of always zero
  • Zed ACP packaging preserves symlinks by shipping .tar.gz archives
  • grep result chips open the correct file and no longer leak absolute host paths into context (ACP)
  • ACP /rewind truncates in place instead of forking
  • Extra fields in the whoami response no longer rejected
  • ACP session history sorted by recency
  • Blank permission prompt and duplicated user message in the ACP/VS Code webview
  • WhoAmI result again tolerates extra fields

Tuesday, July 28Jul 28, 2026

Release v2.23.1

Mistral Vibe v2.23.1

Fixed Crash when @-mentioning a file, which aborted the turn

Read full notes
Fixed
  • Crash when @-mentioning a file, which aborted the turn
Release v2.23.0

Mistral Vibe v2.23.0

Added [A/B testing] OS-native managed shell tools vibe mcp add and vibe mcp remove commands to add and remove remote MCP servers without editing TOML Auto theme that follows terminal/OS appearance ACP project links surface for desktop integration Dense,…

Read full notes
Added
  • [A/B testing] OS-native managed shell tools
  • vibe mcp add and vibe mcp remove commands to add and remove remote MCP servers without editing TOML
  • Auto theme that follows terminal/OS appearance
  • ACP project links surface for desktop integration
  • Dense, grouped tool-call rendering in the TUI
Changed
  • Trust dialog now defaults to "Trust folder" and is simplified
  • Tool descriptions compressed to reduce context bloat
  • Smoother, faster scrolling in long conversations
  • Fixed unnecessary textual relayout computation on constant-size animation frames, removing lag spikes
  • Major internal refactor introducing a JSON-RPC 2.0 app server as the single runtime owner between delivery surfaces (TUI, -p, ACP) and the core engine, replacing direct AgentLoop/callback coupling with a typed, projected protocol
Fixed
  • Option+Left/Right word navigation in the chat input
  • Unsigned thinking blocks dropped on backend replay
  • SGR mouse protocol renegotiated when the emulator sends x10 bytes
  • Crash on /resume delete confirmation
  • Empty mapping treated as absent in CONCAT/UNION config merge
  • LC_CTYPE used instead of LC_ALL in the bash tool environment
  • Chunk text emitted before its tool call in the streaming loop
  • Text selection guarded against detached widgets
  • OSError on over-long @-mention autocompletion candidates
  • MCP registry created when the first server is added via /mcp add
  • CLI conversation ID preserved after teleport
  • Data-retention link accessible to non-admins

Tuesday, July 21Jul 21, 2026

Release v2.22.0

Mistral Vibe v2.22.0

Added /new command as an alias for /clear ACP review support: approve or revert agent changes from ACP clients, with live refresh Changed Full migration to ConfigOrchestrator for configuration handling Defaults now filled at merge time via DefaultConfigLayer;…

Read full notes
Added
  • /new command as an alias for /clear
  • ACP review support: approve or revert agent changes from ACP clients, with live refresh
Changed
  • Full migration to ConfigOrchestrator for configuration handling
  • Defaults now filled at merge time via DefaultConfigLayer; config.toml stores only user-set values
Fixed
  • read_file no longer prompts for approval on plan files in plan mode
  • Benign Sentry noise suppressed (EIO, clean exits, broken pipe, transcription 401)
  • Exception on unsafe configuration read
Removed
  • Teleport context summary flag

Friday, July 17Jul 17, 2026

Release v2.21.0

Mistral Vibe v2.21.0

Added Registry skills content store and manifest for skill discovery Config schema exposed through ACP Checkpointer engine state model, owner union, and pending hunks Changed [Breaking — hooks] Hooks graduated from experimental; hooks.toml is now stable. Every…

Read full notes
Added
  • Registry skills content store and manifest for skill discovery
  • Config schema exposed through ACP
  • Checkpointer engine state model, owner union, and pending hunks
Changed
  • [Breaking — hooks] Hooks graduated from experimental; hooks.toml is now stable. Every hook type is renamed: post_agent_turn → post_agent, before_tool → pre_tool, after_tool → post_tool (the hook_event_name payload field is renamed to match). Update existing hooks.toml files accordingly.
  • @file mentions now inject as read_file tool calls
  • Telemetry routed through client-side redaction
  • Models field migration from list to dict
  • VibeConfig cutover prep with persisted-config read and orchestrator SSL parity
  • Reduced feedback survey frequency for users who already responded
Fixed
  • Duplicate model aliases deduplicated instead of failing config load
  • UTF-8 BOM stripped in decode_safe
  • UTF-8 BOM stripped from SKILL.md before parsing frontmatter
  • MCP server connection errors now surface in the TUI
  • MCP discovery failures now surface in ACP sessions
  • stdin content no longer discarded when /dev/tty is unavailable
  • GitPython import deferred off the ACP startup path
  • @file mention suggestions stretched to full width
  • Blank line removed between approval options
  • Connector tool permission content scrolls instead of cropping
  • ConfigOrchestrator gained an explicit copy() for forking
Removed
  • enable_experimental_hooks config flag (and VIBE_ENABLE_EXPERIMENTAL_HOOKS env var); hooks now load unconditionally when declared

Wednesday, July 15Jul 15, 2026

Release v2.20.0

Mistral Vibe v2.20.0

Added Warning when the Narrator is enabled without working audio output Changed Windows command prompt is now shell-aware Hardened bash tool permissions and cross-platform shell handling Rewind now triggers on a double Esc when the input is empty, with…

Read full notes
Added
  • Warning when the Narrator is enabled without working audio output
Changed
  • Windows command prompt is now shell-aware
  • Hardened bash tool permissions and cross-platform shell handling
  • Rewind now triggers on a double Esc when the input is empty, with improved keybindings
  • Teleports now include summarized context
  • Renamed user plan labels (Teams → Team, Education → Student)
  • ask_user_question selection now works via mouse and supports free-text entry
Fixed
  • More robust SSE streaming in the generic backend
  • NoneType crash when stopping voice recording during a drain-timeout race
  • Windows ProactorEventLoop teardown tracebacks on /exit
  • MCP OAuth tokens are no longer dropped on transient refresh errors

Thursday, July 9Jul 9, 2026

Release v2.19.1

Mistral Vibe v2.19.1

Added Experimental managed bash tool for running and tracking shell sessions --disabled-tools CLI flag to turn off specific tools for a run Per-tool description overrides via <tools-dir>/prompts/<name>.md Setting to clear context when a plan is accepted…

Read full notes
Added
  • Experimental managed bash tool for running and tracking shell sessions
  • --disabled-tools CLI flag to turn off specific tools for a run
  • Per-tool description overrides via <tools-dir>/prompts/<name>.md
  • Setting to clear context when a plan is accepted
  • Discovered AGENTS.md files are now surfaced during read_file tool calls
Changed
  • Reactive compaction with a dedicated summary fallback and stricter summaries
  • User-invoked skills now load as a synthetic tool call
  • Tool config now merges via deep merge
  • MCP panel now refreshes silently in the background
  • Debounced the agent-switch spinner
  • Neutral color for keyboard shortcut hints
  • Falls back to the first available model when the active model is unknown
  • HTTP requests now honor CIDR notation in NO_PROXY
  • History now loads lazily on resume, and session writes are off the event loop
  • Faster startup by deferring heavy imports
  • PII and identifying paths are now scrubbed from Sentry reports
Fixed
  • Rewind now happens in place instead of forking the session
  • No longer includes pydantic URLs in error messages
  • Text can now be scrolled while selecting at the chat bottom
  • Click text selection is now scoped to word and paragraph
  • DuplicateIds crash when the recording UI starts twice
  • Git subprocess output is now decoded as UTF-8
  • Corrected the truncated indicator position and removed a duplicate fetch link

Friday, July 3Jul 3, 2026

Release v2.19.0

Mistral Vibe v2.19.0

Added --worktree NAME option to create or reuse a git worktree and run inside it Rewind support over ACP for both the agent and the host Changed Teleport URL in the CLI is now clickable Raised the Leanstral context limit Sentry auto integrations are now…

Read full notes
Added
  • --worktree NAME option to create or reuse a git worktree and run inside it
  • Rewind support over ACP for both the agent and the host
Changed
  • Teleport URL in the CLI is now clickable
  • Raised the Leanstral context limit
  • Sentry auto integrations are now disabled
Fixed
  • Path prompt work is now offloaded from the UI thread
  • StopIteration crash in QuestionApp when submitting an empty multi-select
  • User message index now accounts for the deferred system prompt
  • No longer reports benign Sentry noise (KeyboardInterrupt and destroyed pending tasks)

Wednesday, July 1Jul 1, 2026

Release v2.18.4

Mistral Vibe v2.18.4

Changed Whole-line content now shown in the edit diff Declined or skipped tool calls now render as a muted square Auto-approve now works in lean mode Fixed Session resume with --continue now matches the resolved working directory Long tool call titles now wrap…

Read full notes
Changed
  • Whole-line content now shown in the edit diff
  • Declined or skipped tool calls now render as a muted square
  • Auto-approve now works in lean mode
Fixed
  • Session resume with --continue now matches the resolved working directory
  • Long tool call titles now wrap instead of being cropped
  • Duplicate mcp_servers names in config are now rejected
  • MarkupError crash when a tool error contained square brackets
  • Teleport now uses the matched GitHub remote
  • Raw compaction user messages are now preserved
  • ACP now honors default_agent on new and resumed sessions
  • Ambiguous teleport session creates are now retried

Tuesday, June 30Jun 30, 2026

Release v2.18.3

Mistral Vibe v2.18.3

Added j/k navigation in selectable lists across the TUI (questions, theme picker, rewind, voice, MCP panels) ask_confirmation_on_exit config option to prompt before quitting Project-level .vibe/config.toml now persists config option changes Changed Consistent…

Read full notes
Added
  • j/k navigation in selectable lists across the TUI (questions, theme picker, rewind, voice, MCP panels)
  • ask_confirmation_on_exit config option to prompt before quitting
  • Project-level .vibe/config.toml now persists config option changes
Changed
  • Consistent styling and casing for keyboard shortcut hints across the TUI
  • ask_user_question now supports more than 4 options and questions
Fixed
  • No longer prompts to log in for disabled MCP servers
  • Teleport diff no longer mutates the real git index

Monday, June 29Jun 29, 2026

Release v2.18.2

Mistral Vibe v2.18.2

Added Sentry crash reporting for unhandled exceptions in the TUI (gated by enable_telemetry; off when telemetry is disabled) Changed Recoverable tool-call errors are now muted in the UI; only terminal errors render as a hard failure Fixed MarkupError crash…

Read full notes
Added
  • Sentry crash reporting for unhandled exceptions in the TUI (gated by enable_telemetry; off when telemetry is disabled)
Changed
  • Recoverable tool-call errors are now muted in the UI; only terminal errors render as a hard failure
Fixed
  • MarkupError crash when tool output contained square brackets
  • OpenTelemetry chat/LLM spans missing after Mistral Python SDK 2.4.10+ telemetry opt-in gate
Release v2.18.1

Mistral Vibe v2.18.1

Added /mcp add slash command for adding OAuth MCP servers Petit chat animation idle pauses Changed Bare exit synonyms (exit, quit, :q, :quit) now treated as slash commands instead of prompts Fixed MCP OAuth login crash when keyring backend is un-loadable

Read full notes
Added
  • /mcp add slash command for adding OAuth MCP servers
  • Petit chat animation idle pauses
Changed
  • Bare exit synonyms (exit, quit, :q, :quit) now treated as slash commands instead of prompts
Fixed
  • MCP OAuth login crash when keyring backend is un-loadable

Thursday, June 25Jun 25, 2026

Release v2.18.0

Mistral Vibe v2.18.0

Added Clickable URLs in web fetch and web search tool output Context window usage display in tokens at the bottom of the TUI Clipboard image paste support in the TUI (macOS) Max generated tokens set_config_option in ACP Changed MCP OAuth authentication UX…

Read full notes
Added
  • Clickable URLs in web fetch and web search tool output
  • Context window usage display in tokens at the bottom of the TUI
  • Clipboard image paste support in the TUI (macOS)
  • Max generated tokens set_config_option in ACP
Changed
  • MCP OAuth authentication UX improvements in /mcp panel
  • Diff gutter and body split into separate widgets
  • Faster UI startup with lazy heavy imports
  • Improved connector performance with bootstrap caching
Fixed
  • macOS keychain access for Vibe credentials
  • Standalone denylist incorrectly blocking commands with heredocs
  • Copy selected text from prompt input and text areas
  • Repeated keyring requests in Vibe Code
  • Brew upgrade now always runs even when uv upgrade succeeds
  • Terminal kill/release bounding for ACP to prevent hangs

Friday, June 19Jun 19, 2026

Release v2.17.1

Mistral Vibe v2.17.1

Changed Commands in /help are now listed alphabetically in both the CLI and ACP /teleport is now always available and shows an explicit error when its prerequisites aren't met, instead of being hidden

Read full notes
Changed
  • Commands in /help are now listed alphabetically in both the CLI and ACP
  • /teleport is now always available and shows an explicit error when its prerequisites aren't met, instead of being hidden
Release v2.17.0

Mistral Vibe v2.17.0

Added /mcp login, /mcp logout, and /mcp status commands to authenticate OAuth-backed MCP servers from the TUI vibe --check-upgrade to force an immediate update check and exit --yolo as an alias for --auto-approve ACP now accepts inline image content blocks…

Read full notes
Added
  • /mcp login, /mcp logout, and /mcp status commands to authenticate OAuth-backed MCP servers from the TUI
  • vibe --check-upgrade to force an immediate update check and exit
  • --yolo as an alias for --auto-approve
  • ACP now accepts inline image content blocks
Changed
  • API keys are now stored in the OS keyring instead of plain text
  • Edit diff view now shows all replaced occurrences instead of just the first
  • Completion popup now uses a two-column layout
  • Chat messages now have right padding so text no longer collapses into the scrollbar
  • Faster CLI shutdown by deferring resource cleanup on exit
Fixed
  • Skill autocomplete popup now dismisses after Tab completion
  • Stdio MCP connections now persist across tool calls
  • Retryable 5xx responses from the Mistral backend are now retried instead of failing

Tuesday, June 16Jun 16, 2026

Release v2.16.1

Mistral Vibe v2.16.1

Added ACP workspace trust gated behind the workspace-trust client capability Changed /resume now opens much faster Startup update-failure message is now gentler and no longer alarms when an update can't be applied

Read full notes
Added
  • ACP workspace trust gated behind the workspace-trust client capability
Changed
  • /resume now opens much faster
  • Startup update-failure message is now gentler and no longer alarms when an update can't be applied

Monday, June 15Jun 15, 2026

Release v2.16.0

Mistral Vibe v2.16.0

Added Fuzzy search in slash command autocomplete Syntax-highlighted, line-numbered, theme-aware diffs for file edits Changed /resume now scopes the session picker to the current folder Clipboard copy confirmations now appear inline instead of stacking toast…

Read full notes
Added
  • Fuzzy search in slash command autocomplete
  • Syntax-highlighted, line-numbered, theme-aware diffs for file edits
Changed
  • /resume now scopes the session picker to the current folder
  • Clipboard copy confirmations now appear inline instead of stacking toast notifications
  • ACP teleports now use the client title as the Vibe Code project name when no explicit project name is configured
Fixed
  • ACP max-output-token responses now stop gracefully with max_tokens instead of surfacing internal errors
  • Context-too-long responses wrapped as HTTP 422 are now classified correctly
  • SSE streams are parsed on CR/LF boundaries only, avoiding crashes on valid Unicode line separators in JSON strings
  • CLI banner now shows the Free plan correctly
  • Mistral backend no longer sends reasoning content when model thinking is off

Friday, June 12Jun 12, 2026

Release v2.15.0

Mistral Vibe v2.15.0

Added [Experimental] before_tool and after_tool hooks: shell scripts declared in hooks.toml that fire around every tool call; hooks can deny the call, rewrite tool inputs, or append context to the output — enable with enable_experimental_hooks = true Message…

Read full notes
Added
  • [Experimental] before_tool and after_tool hooks: shell scripts declared in hooks.toml that fire around every tool call; hooks can deny the call, rewrite tool inputs, or append context to the output — enable with enable_experimental_hooks = true
  • Message queue: messages typed while the agent or a !bash command is running are queued and shown above the input; Esc pauses the queue, Ctrl+C drops the last queued message (LIFO), Enter flushes the queue when paused
  • Tool result output is now collapsed by default to keep responses scannable
  • Common read-only shell commands (ls, cat, pwd, etc.) are allowed without approval by default
  • Session deletion available directly from the resume picker
  • [mcp_servers.auth] block in config for per-server MCP authentication
  • Collapsed web tool output now shows the URL and search query at a glance
  • max_turns support exposed over ACP via set_config_option
Changed
  • Compaction now re-injects prior user messages so the agent retains the original task goals across context resets
  • [Breaking — experimental hooks] post_agent_turn retries no longer use exit code 2; hooks must now exit 0 and return {"decision": "deny", "reason": "..."} on stdout to trigger a retry — exit code 2 is treated as a failure
  • Model refusal stop reason is now surfaced to the user instead of stopping silently
Fixed
  • CLI UI no longer goes blank during app switches
  • User messages are preserved correctly across repeated compactions
  • Non-UTF-8 input is handled gracefully across all CLI surfaces
  • --resume now shows history when launched from a dangerous directory
  • Startup no longer crashes in unowned folders or when a git ancestor is unreadable
  • Plain-string answers from web_search are handled without crashing
  • NaN SGR mouse reports no longer leak into the chat input

Monday, June 8Jun 8, 2026

Release v2.14.1

Mistral Vibe v2.14.1

Added /teleport slash command exposed over ACP, mirroring the TUI command for IDE integrations Startup prompt to install a pending Vibe update before continuing the session Fixed JetBrains IDEs no longer trigger a preemptive auth prompt over ACP and no longer…

Read full notes
Added
  • /teleport slash command exposed over ACP, mirroring the TUI command for IDE integrations
  • Startup prompt to install a pending Vibe update before continuing the session
Fixed
  • JetBrains IDEs no longer trigger a preemptive auth prompt over ACP and no longer drop terminal arguments
  • Initial ACP slash-command advertisement is delayed so Zed registers commands like /help instead of rejecting them
  • Built-in tool prompts no longer reference the removed search_replace name and now point to edit

Thursday, June 4Jun 4, 2026

Release v2.14.0

Mistral Vibe v2.14.0

Added Image attachments via @-mentions in the TUI for vision-capable models Session deletion, exposed over ACP as the session/delete extension method Browser sign-in now shows a copyable fallback URL when the browser does not open, so SSH and remote sessions…

Read full notes
Added
  • Image attachments via @-mentions in the TUI for vision-capable models
  • Session deletion, exposed over ACP as the session/delete extension method
  • Browser sign-in now shows a copyable fallback URL when the browser does not open, so SSH and remote sessions can complete onboarding
  • Toast notification when a SKILL.md file fails to parse instead of silently dropping the skill
  • Trust prompt now proposes the git repository ancestor as a trust target
  • EnvironmentLayer in the layered configuration, populated from VIBE_-prefixed environment variables
Changed
  • New tool-call format for read and the file edit tool
  • write_file is now create-only and refuses to overwrite existing files
  • Bumped agent-client-protocol to 0.10.1
Fixed
  • LLM calls now retry on network errors and timeouts (connection, read, write, remote protocol, timeout)
  • Approval modal now sizes itself so the bottom of long tool-call payloads stays visible above the options block
  • Banner connector count and /mcp panel ordering now reflect which connectors are actually usable and the user's enable/disable choices
  • disabled_tools from runtime is merged with the TOML configuration instead of replacing it, and is enforced inside ToolManager.get()
  • shift+backspace and shift+delete now work in the chat input
  • Crash in the ACP todo plan-update handler when the model's tool call failed validation
Removed
  • Recursive search for nested harness files

Friday, May 29May 29, 2026

Release v2.13.0

Mistral Vibe v2.13.0

Added enable_system_trust_store config flag to switch the shared SSL context to the OS trust store for corporate TLS / private CA setups Changed MCP HTTP transport now uses Vibe's shared SSL context so it honors SSL_CERT_FILE / SSL_CERT_DIR and the system…

Read full notes
Added
  • enable_system_trust_store config flag to switch the shared SSL context to the OS trust store for corporate TLS / private CA setups
Changed
  • MCP HTTP transport now uses Vibe's shared SSL context so it honors SSL_CERT_FILE / SSL_CERT_DIR and the system trust store opt-in
  • API key onboarding and plan-upgrade CTAs now link to the new Mistral Vibe Code extensions page
  • Compaction summaries are now injected into the conversation instead of replacing it
Fixed
  • Crash during initialization
  • VS Code extension promo banner now sits at the top of the conversation instead of being pinned above the input

Wednesday, May 27May 27, 2026

Release v2.12.1

Mistral Vibe v2.12.1

Fixed VS Code extension promo link in the CLI banner now points to the renamed mistralai.mistral-vibe-code extension Changed /teleport now uses the new Vibe Code Web sessions

Read full notes
Fixed
  • VS Code extension promo link in the CLI banner now points to the renamed mistralai.mistral-vibe-code extension
Changed
  • /teleport now uses the new Vibe Code Web sessions
Release v2.11.1

Mistral Vibe v2.11.1

Added Custom compaction prompts via the compaction_prompt_id config setting, resolved from ~/.vibe/prompts/ or .vibe/prompts/ --max-tokens flag for programmatic mode (-p) ACP _auth/status and _auth/signOut extension methods so IDE extensions can show auth…

Read full notes
Added
  • Custom compaction prompts via the compaction_prompt_id config setting, resolved from ~/.vibe/prompts/ or .vibe/prompts/
  • --max-tokens flag for programmatic mode (-p)
  • ACP _auth/status and _auth/signOut extension methods so IDE extensions can show auth state and sign the user out
  • Auth source assessment in vibe.setup.auth to classify the active credential source
  • VS Code extension promo line in the CLI banner when launched from a VS Code, Cursor, or VS Code Insiders terminal
  • OverridesLayer and ProjectConfigLayer for the layered configuration system
Changed
  • Programmatic mode (-p) no longer auto-approves tool calls by default
  • Browser sign-in is enabled by default for Mistral providers; the enable_experimental_browser_sign_in flag is no longer required (stale entries are silently ignored)
  • Compaction quality improved
  • Refreshed user message styling and slash/teleport variants
  • /teleport to Vibe Code Web now carries the working diff and last commit, matching the legacy teleport
  • Reworded /teleport help and completion copy to say "Vibe Code Web"
Removed
  • Zed extension publishing job from the release workflow