Added
vibe-acpnotifies the client when the administrator changes the organization's Vibe Code configuration.- Vim Normal and Insert modes in the prompt input, enabled with the
vim_keybindingsconfig option - The prompt of the conversation section at the top of the screen stays pinned while you scroll, and a click jumps back to it
enable_sticky_prompt = falseturns the pinned prompt offpre_agenthooks run before the model reads a user message: they can block it, rewrite its text, or add context for the model.notificationhooks run in the background when Vibe needs your approval or an answer, or when a turn completes or fails.session_starthooks run when a session starts, resumes, is cleared or forked, and can add context for the model to the next message.session_endhooks run in the background when a session ends, with the reason (exit,clearorother).- Built-in
/vibe:importskill that finds your setup from other coding agents and imports instructions, skills, subagents, commands, hooks, MCP servers and permissions into Vibe vibe -preports each denied tool call on stderr and in the export'swarningsvibe -psays on stderr when the agent finishes without an answer- Commands the agent runs get
VIBE_SESSION=1in their environment, so scripts can detect they run under Vibe - On macOS and Linux, with nothing selected,
Ctrl+Ypastes back the text last deleted withCtrl+K,Ctrl+U,Ctrl+WorAlt+D. - App servers offer a new
agentWorktreesclient capability: its sessions get theenter_worktreetool, and before editing the user's checkout the agent asks whether to work in a new git worktree or in place. A session can hold several worktrees; each is listed inartifacts/listand cleaned up when the session is archived. - With the model catalog enabled, a model's old name (its catalog aliases) now works everywhere a model is named:
[models.<old name>]settings apply to the model, and--model <old name>or the ACPmodeloption picks it /prlists the session's pull and merge requests with their number, title and state (green open, grey draft, purple merged, red closed).- In
/pr,copens the first failing CI check andfdrafts a prompt asking the agent to fix what blocks the PR.
Changed
- Session ids shown for
vibe --resumenow use the last 8 characters of the id; the first 8 still resume older sessions. - Quitting Vibe waits up to 5 seconds for
notificationandsession_endhooks still running. - On macOS and Linux, what a
bashcommand or a hook starts with&is stopped when it exits: long-running commands go through background processes. /branchnow works while the agent is running, forking the conversation as it was before the current turn, and shows the command that resumes the copy in a panel instead of the conversation.- Errors from pickers and keyboard actions (session resume, model, thinking, log level, agent switch, MCP browser, image paste, voice, external editor, queued-message edits) now show above the input until the next key instead of staying in the conversation.
- The startup Warnings box now goes away after your first message or when you resume another session.
- Markdown tables wider than the terminal size their columns to render as few lines as possible, keeping words whole where they can.
--yolo/--auto-approveon a new session now starts theauto-approveagent instead of a hidden bypass onask,accept-editsorsmart-approve, so Shift+Tab can leave it; the session resumes on that agent.- Hovering the model, the PR link or the context gauge now tints and bolds them instead of painting them blue
- The footer's copy-path icon now appears only when the working directory is shortened.
- Prompts sent by a scheduled loop now show only the loop's title, with its instructions and fired-at line folded until clicked or expanded with Ctrl+O, and scheduling a loop shows only its title.
- A model pick now saves
active_modelunder the name the config file already uses for that model (during the catalog rollout), so older versions sharing the file still resolve it - When the model catalog is turned on for your account, the model list no longer shows a second copy of a catalog model, and the catalog's recommended model is the default.
- With the model catalog enabled and listing at least one model, the built-in default model is not available anymore: the pickers show one row per catalog model, and a catalog alias can take the built-in's name (e.g. a pin on
mistral-medium-3.5runs the catalog'smistral-medium-latestwhen the catalog lists that alias) allowed_modelspatterns now also match a model's catalog aliases, so an allowlist written against a retired built-in's name (e.g.mistral-vibe-cli-*) keeps matching the catalog model that replaces it- Pull requests and merge requests of a session are now tracked by default (with
ghorglab); setenable_pr_monitoring = false(orVIBE_ENABLE_PR_MONITORING=false) to turn this off - Sessions of one account and client now share one experiment evaluation per app server, kept on disk, so opening a session no longer waits on it after the first run
- The footer shortens a long working directory one word at a time instead of jumping to its last folder.
- An unreachable MCP server is retried after a growing delay instead of by every session that opens, and a server due a refresh is refreshed once for every session.
- When Mistral refuses your sign-in again right after renewing it, Vibe now asks you to update Vibe or sign in again.
- Plugin skills, knowledge and agents are named after the plugin as written (
my-plugin:review) instead of its tool namespace (my_plugin:review) - Custom agents whose
enabled_skillsordisabled_skillsname plugin skills by the tool namespace (my_plugin:*) need the plugin name instead (my-plugin:*) - Clicking the footer's PR/MR link opens
/prand refreshes the statuses; clicking it again closes the list. - The footer's PR/MR status names its cause (
CI failing,changes requested,conflicts,CI running,review required), prefers the open PR over merged or closed ones, and reads bold until a new status has been seen. - A refused rewind or fork now says what is still running, such as a background process or a subagent, and a refused rewind shows as a notice instead of a conversation row.
- In vibe-acp and headless runs, the agent no longer assumes its replies are shown in a terminal, and writes markdown that reads well in any client
Fixed
- Rust CLI: moving the mouse outside the terminal window no longer highlights the subagent row or footer item on the same line.
- The update prompt no longer reports a failed update when uv shows a download progress bar
- Links in the transcript and onboarding open with your terminal's own link click (such as Cmd+click), including over SSH.
- New files follow the line endings the repository's .gitattributes sets for them.
- The agent no longer stops editing a file because of Windows (CRLF) line endings.
- Queued messages run again after a turn fails on a storage error such as a full disk, once the disk has space.
- On Windows, the agent writes paths in PowerShell and Git Bash commands so backslashes no longer break them.
- Update checks work again with uv older than 0.10.10 instead of silently finding no new version
- A subagent's scheduled prompts now run in that subagent, and it can only list, cancel or clear its own, not the main session's.
- Reading a log full of control characters no longer floods the context window.
- A model whose auto-compaction threshold does not fit its context window now compacts at the closest threshold that fits, with a warning, instead of failing to start or to be picked
- Release notes no longer stay pinned below the conversation when the first prompt is sent at startup
- The input caret no longer disappears when your text reaches the right edge of the input.
- The context gauge keeps its unused part visible while hovered
vibe -p --agentwith an unknown or unavailable agent exits as a usage error (exit 1), and--agent plansays it was removed and names its replacement- A
default_agentin the config that cannot start is reported as a configuration error - Mistral Large 4's thinking picker offers Low, Medium and High, the levels the API now takes, instead of Low, High and Max when its config lists no levels.
- On Windows, multi-line pastes in terminals that send LF line breaks, such as WezTerm, no longer submit a prompt at each line.
- A provider error echoing a large payload, such as a rejected image, no longer freezes the terminal UI.
/clearnow starts a conversation with no scheduled prompts; the cleared session keeps its own and runs them again when resumed.- Picking a model or thinking level no longer shows a false "A turn is already running" error when you send a prompt right after.
- Connectors no longer all fail to load with "Connector bootstrap cache projection exceeds 2 MiB" on accounts with many connectors
- Fixed sessions that failed and could not be resumed after a script passed a tool something other than an object
- A resumed session uses the model and agent it last ran, instead of the current default.
- Sessions start again when a cache file in
~/.vibecontains invalid UTF-8 bytes. - Commands run by Vibe no longer inherit
GIT_PYTHON_GIT_EXECUTABLE, which brokeimport gitin containers or remote jobs where Git lives elsewhere. - Subagent spawns no longer fail as often because the model left out the task message.
/compactno longer fails and blocks the session when a warning arrives during the compaction, such as a cut-off summary.- Skills whose frontmatter values contain an unquoted colon now load instead of failing with an invalid YAML error
vibedoing nothing on Windows machines without the Visual C++ Redistributable- On dedicated deployments where only
api_baseis set, the admin-managed config and account links now use the deployment's chat URL instead ofchat.mistral.ai - Ctrl+Z on Linux no longer occasionally hangs without returning to the shell prompt.
- File autocomplete no longer rescans the whole folder when dependencies change ignore files, such as during
npm install. - Clicking the footer's context gauge again now closes
/context. - Clicking a footer link or the context gauge no longer starts a text selection.
- A turn interrupted right after it starts no longer stays shown as running.
- Interrupting or messaging a subagent no longer fails when the parent turn ends while the request is still running.
- A managed worktree whose checkout lost its
.gitis reported once in the log instead of every few seconds. - Plugins with an unknown top-level
plugin.jsonfield now load, with a warning, instead of being skipped. - Plugins whose
ai.mistral.vibeextension has an unknown key or declaresvolumesnow keep their hooks, knowledge, and agents. - A pull request the agent opens after writing its description in a heredoc that contains an apostrophe now shows up on the session.
- The same pull request no longer shows twice in the footer's PR list.
- A command that creates several PRs/MRs now records all of them.
- Rewinding no longer fails after a background process finishes between turns.
Removed
- The
/teleportcommand is gone fromvibe-acp. - The
/remote-projectcommand is gone. - The
/teleportcommand, the&prompt prefix and the--teleportflag are gone; passing--teleportis now an error. - The
experimental_enable_pr_monitoringandexperimental_enable_pr_discoverysettings and theVIBE_EXPERIMENTAL_ENABLE_PR_MONITORINGvariable are gone and now ignored; useenable_pr_monitoring - A skill named
prcan no longer be run as/pr, which now opens the built-in PR list.