Skip to content
MV

Mistral Vibe v3.0.0

Released · Mistral AI

BreakingSecurity fixChanges MCP server config, skills and plugins, background and headless runs, subagent definitions, permission rules

What the release notes say

Added

  • The app-server reports each model's compaction threshold, so a client can show how full a session's context is before it compacts.
  • Desktop can import projects and sessions from another coding agent during onboarding.
  • Rust CLI: /leanstall and /unleanstall install and uninstall the Lean agent.
  • With experimental_enable_model_catalog on, the model list includes Mistral's curated models, and your config can still override their settings.
  • Rust CLI: Tool approval options, /thinking levels, /resume sessions and /log-level rows and badges can be clicked.
  • Rust CLI: Option lists show a faint hover background under the mouse.
  • With a "shared only" API key, /mcp blocks connectors that need your login and tells you to run vibe --setup.
  • Rust CLI: /branch forks the current conversation into a new resumable session.
  • The agent can now wait for your next message or for background work to finish, instead of repeatedly checking.
  • Rust CLI: Debug console for live session logs, opened with /debug or Ctrl+.
  • Rust CLI: Report activity, approvals, questions, completion, and failure with session titles and error messages through the OSC 7501 Program Status Protocol.
  • /status shows the credential source in use and the shadowed sources
  • Admin-enforceable enable_mcp flag to block all user-facing MCP server operations (add, remove, toggle, login, logout, tool registration), including plugin-provided MCP servers, via managed config.

Changed

  • read_file shows a file's line endings as they are on disk, like shell commands do
  • write_file writes new files with the line endings it is given, also on Windows
  • The app server now shows up as vibe-app-server instead of python3 in Activity Monitor, ps, and top.
  • Rust CLI: dragging a scrollbar moves smoothly in fine steps on terminals that report the mouse in pixels, such as Ghostty, kitty and WezTerm.
  • displayed_workdir, context_warnings and raise_on_compaction_failure are deprecated: they remain accepted in existing configs but have no effect on Unified execution.
  • 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.
  • Rust CLI: One click picks an option whose only action is choosing it (tool approvals, questions, /theme, /plugins, subagents, config choices, the remote project picker, MCP or connector sign-in); options with several actions (/model, /thinking, /resume, /mcp, /config) highlight on the first click and confirm on the second.
  • Rust CLI: The highlighted free-text answer spans the full row, and clicking its number unticks it in multi-select questions.
  • Rust CLI: Colored text on a highlighted row takes the row's text color.
  • Rust CLI: headless mode (-p) now follows the Python CLI's run contract, with turn, token, price and time limits, graceful stops, and a JSON run export whose exit code reports the outcome.
  • Pressing Esc twice to clear the input or open rewind now accepts a slower second press.
  • Rust CLI: The welcome banner is more compact: the cat sits beside the version, model and plan, and the model, connector, MCP server, skill and hook counts are gone.
  • The Vibe VS Code extension (ACP surface) now gets the same background session titles as CLI and Desktop; the sessions list shows the summarized title instead of the message preview
  • The agent's subagent tools are renamed from subagent.* to agents.*, and sessions saved with the old names still resume.
  • Plugins can no longer use the agents, agent or collaboration tool namespaces, which are reserved for built-in agent tools.
  • A programmatic tool call now stops after 60 seconds in total, and a single sleep inside it is capped at 30 seconds.
  • Faster session startup when no MCP server is used.
  • Vibe now requires Python 3.14 or newer (previously 3.12)
  • Outbound HTTPS connections now validate certificate chains with stricter RFC 5280 rules; a private CA missing SKID/AKID or KeyUsage extensions may be rejected — set enable_system_trust_store or use a compliant CA
  • Vibe Code: the retry notice keeps counting the seconds past the planned retry instead of freezing until the provider answers, and screen readers get paced progress announcements
  • vibe -p JSON and streaming output mark each completed assistant message and reasoning with an outcome: committed, or discarded with its cause.
  • The Rust TUI detects terminal activity reporting support to avoid duplicate title indicators and notification bells.
  • Faster session startup, most noticeably on Windows and in repositories with many branches or tags.

Fixed

  • Desktop local Code holds queued messages while editing without a timeout; Save and Cancel let the queue continue unless paused.

  • Disconnecting during an unfinished queued edit keeps the original message and pauses the queue until Resume.

  • In Vibe Desktop, the sidebar session list now only reorders when a new conversation turn starts, instead of jumping around on queued messages, steers, and permission answers.

  • On Windows, the shell tools no longer auto-approve commands that use a mid-word #, an escaped quote, or PowerShell quoting to hide part of the command from the approval check.

  • Multi-line edits to CRLF files no longer fail, and edited lines keep the file's line endings

  • The Unified Harness no longer converts a CRLF file to LF when it overwrites it

  • Sessions containing a large image no longer fail with a compaction error when the context is nowhere near full.

  • Listing saved sessions (/resume and the Desktop session sidebar) is several times faster when you have thousands of sessions.

  • Rust CLI: scrolling with the wheel or a scrollbar no longer stutters or trails the pointer when the view is slow to redraw.

  • Rust CLI: the smart approve mode now shows its warning-colored input border and cycles with Shift+Tab, matching the Python CLI.