Skip to content
MV

Mistral Vibe v3.0.3

Released · Mistral AI

BreakingSecurity fixChanges hooks, permission rules, skills and plugins, subagent definitions

What the release notes say

Added

  • Skills added or edited on disk are picked up by running sessions without /reload

  • The footer shows the active model and its thinking level next to the token counter, and updates after /model, /thinking or a resume.

  • Clicking the model in the footer opens /model while no turn is running, keeping the prompt being typed.

  • The / menu starts each skill's description with its scope (project, user or vibe), setting skills apart from built-in commands.

  • post_agent hooks accept match to run only after a given agent, or after the main agent with match = "main".

  • The post_agent hook payload includes agent_name, the configuration name of the agent that finished its turn.

  • outside_workdir = "deny" (global or per tool) refuses file and shell access outside the working directory with a tool error instead of a prompt, so the agent keeps working.

  • Vibe now shows a warning when the model refuses a request as too long or a compaction has to shorten its inputs or summary

  • Vibe now warns at startup about settings in your config that it does not use, such as misspelt keys, and suggests the right name

  • Set strict_config = true (or VIBE_STRICT_CONFIG=1) to make Vibe refuse to start when your config has settings it does not use. A VIBE_STRICT_CONFIG value that is not on or off, such as 2, is refused too

  • vibe config schema prints a JSON schema of every setting, including each built-in tool's settings

  • Administrators can set VIBE_CUSTOM_CONSOLE_URL to pin the console URL: VS Code and Vibe CLI sign-in is prefilled with that console, redirected into its normal login flow, and the domain can no longer be changed. The value may be a full URL or a bare domain; scheme-less values are upgraded to https:// (an explicit http:// is kept) and trailing slashes are stripped. A split-horizon API base configured for the pinned console is preserved.

  • New artifacts/markViewed app-server RPC: marks a session's artifacts (PRs/MRs) as viewed, persists viewed_at into the session logs, and announces each newly marked artifact with an artifacts/updated notification (Phase 3, Desktop artifact panel)

  • Session artifacts (experimental): open pull requests and merge requests linked to the session's current branch (gh pr list --head / glab mr list --source-branch) are now discovered at session load and recorded in the session logs, behind the experimental_enable_pr_monitoring feature flag (shared with PR/MR creation detection)

  • The bottom bar shows the session's pull requests and merge requests: a single one as a centered, clickable link (PR #123 / MR !7) that opens it in your browser, or a PRs (n) count link that opens a modal listing every artifact with its link

  • Session artifacts (experimental): pull requests and merge requests created during a session (gh pr create / glab mr create) are now detected and recorded in the session logs, behind the experimental_enable_pr_monitoring feature flag

  • Session artifacts (experimental): PR/MR artifacts now sync from the provider — lifecycle state, title, branches, author, timestamps, merge commit, CI checks, and an aggregated actionability status — at session start, after each turn, and on a new artifacts/sync RPC; the bottom bar and artifacts modal render the status and the per-check list

Changed

  • /theme, /log-level, /voice, /proxy-setup and /remote-project now work while the agent is busy or prompts are queued.
  • An agent file named main is no longer loaded: the name is reserved for hook matching.
  • Shell tools set to permission = "always" now ask before reaching paths outside the working directory, like file tools.
  • Shell tools now treat a bare file name that is a symlink or a Windows junction, such as cat link, as a path, so a link pointing outside the working directory asks or is denied like any outside path.
  • On platforms without a prebuilt audio library, such as OpenBSD, editor dictation and narration are no longer installed by default; install the voice extra to build them from source.
  • Sending a message no longer waits for connectors or MCP servers that have cached tools: it runs on those, and they refresh in the background. A message waits only for ones with nothing cached yet, and only a call to a server still loading waits for it.
  • The app server started by the CLI and Desktop fetches the connector catalog as it starts, before any session opens.
  • Sessions opened at the same time contact each MCP server once and share what it returns.
  • New sessions start with the connectors from the last successful load instead of none.
  • Vibe now shows a warning naming each connector or MCP server that could not load, including in vibe -p runs and their export. A server without a connector service (self-hosted, Private Cloud) has no connectors rather than a failure to load them.
  • An MCP server found to need a login after the session starts is named with the /mcp login command to run.
  • MCP server tools older than six hours are refreshed in the background, and the cached tools are kept if the refresh fails.
  • [Breaking — config] auto_compact_threshold = 0 is now a config error; set a positive threshold or remove it to use the model's default
  • auto_compact_threshold must fit the model's range; an old -1 is removed when the config loads, so the model's default applies
  • [Breaking — models] A reply without token usage fails the turn; third-party model servers must support stream_options.include_usage
  • Context window, maximum output, image input and thinking levels come from your config, then the provider's model list, then a built-in table; unknown models use a 262,144-token window and show a warning
  • An unset thinking uses the model's lowest level; off is refused on models that always reason, such as gpt-6-astra and GLM 5.3
  • With third-party models that can turn thinking off, thinking off turns thinking off