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
speakingstatus row that Esc or Ctrl+C stops. - Rust CLI:
/pluginsbrowses the session's plugins, and/reload-pluginsre-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
/modeland/thinkingpickers,sapplies 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 .#rustClito launch the Rust terminal instead of the Python one- Rust CLI:
/whoamishows the start of your API key, its scope, and its access scope. - Space toggles the focused checkbox in multi-select questions.
enable_background_processes = falsestops the agent from starting background processesenable_subagents = falsetakes subagents away from the agent on the default runtime.- Disable main input cursor blinking with
cursor_blink = falseor/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.jsonrecordssteps, the number of model calls the agent madeexport.jsonlists the session's config issues, such as a skill it could not load, underwarningsvibe -preads the prompt from--prompt-fileor stdin, and--output-dirwrites anexport.jsonand the session journal on every exit.vibe -p --time-limit SECONDSstops the run at a deadline; SIGTERM and Ctrl-C stop it the same way, and the session can be resumed.- Per-model
top_pandmax_output_tokensconfig settings. - Experimental
experimental_enable_model_catalogconfig flag (default off) — groundwork for the upcoming model catalog, no visible effect yet. - New
api_stream_idle_timeoutsetting (off by default) fails a model response that goes silent for that many seconds. vibe -p --agent-socketsessions run background processes in their POSIX sandbox, asenable_background_processessays, instead of always turning them off- New
title_prompt_idconfig setting to override the prompt used to generate session titles: built-insession_titleor a custom.mdfile from~/.vibe/prompts/or.vibe/prompts/.
Changed
- New sessions start their first turn faster, and long sessions open, load older messages and resume sooner.
/statusshows 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.5kinstead of12k). - 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,/pluginsand the project picker search with/; Esc leaves the search, then clears it, then closes./pluginsnow shows its search field under the title, like/mcpand/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
/whoamiand 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/commandor!commandinto 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_CLIenvironment variable topython." - 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_connectorconfig flag (off by default) while its tools stabilize. vibe -pexits 1 on usage or config errors, 2 on infrastructure failures and 3 when a limit or a model refusal stopped the agentvibe -p --max-turnsnow exits 3, not 1, when the agent reaches the turn limit; so do--max-tokensand--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+Gopens the current input in$VISUAL/$EDITORand 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-pluginsnow 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.
- File paths in read, write, edit, and search headers are shown relative to the working directory or workspace root that contains them.
- Rust CLI: Rewinding to a skill invocation reloads it in
/mode with the caret at the end and that skill highlighted in the completion menu. - CI: fix Nix build step
- Prompts sent by a scheduled loop now appear in the conversation, marked with the loop that fired them.
- Scratchpad notes now display like file contents instead of a raw tool result dump.
- Rust CLI: Copying a transcript selection keeps the blank lines and wrapped characters it shows, and drops the spacing between messages.
- Rewinding to an earlier message no longer fails after the session was titled or renamed.
- Rust CLI:
/clearresets the context window display right away instead of keeping the previous conversation's usage until the next turn. - Rust CLI: Dead-key and IME previews show at the input caret instead of in the loader.
- Rust CLI: Code blocks and edit diffs wrap long lines between words instead of splitting words, and continuation rows no longer start with a space.
- Rust CLI: On terminal (ANSI) themes, code blocks are separated from the text around them by a blank row.
- Rust CLI: Text with
/,!or&added before an existing message, or after leading spaces, is sent as a message instead of running a command, and stays one when rewound or edited in the queue. - Rust CLI: Backspace at the start of a
/,!or&input leaves the mode and keeps the text. vibe -pno longer offers thecrontool, whose calls always failed in a headless session.- A model request that times out now shows a readable error instead of a blank one, and is recorded in the log.
- A question or approval the agent asks while a steered message is waiting is no longer hidden, so the session no longer stalls on "Preparing a question".
- Rust CLI: A long working directory is shortened with an ellipsis so the token counter stays visible in the bottom bar.
- Closing a session no longer waits for its archived worktree to be deleted.
- Smart approve asks less often for routine work, such as edits in a worktree, CI file changes and local commits.
- Tool results with accents or non-Latin text now reach the model as written instead of as escape sequences.
- Fix turns crashing with "Completed public history entry is frozen" when a backend keeps streaming reasoning or text after a tool call
Removed
- The bundled Devstral (local) model
- New
--experimental-harnessturns no longer re-state scratchpad notes into prompts, so they no longer add<vibe-scratchpad>blocks to the transcript.