All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- 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
- Models are shown by display name instead of the raw config alias
- Python dependencies updated to clear known security advisories
- Connector bootstrap failures are surfaced instead of reporting no connectors
- In-app session picker with live preview
/log-levelcommand for runtime log-level control/retryis exposed to ACP clients- Created worktrees are shown in the transcript
- Worktrees are cleaned up when their local session is deleted
- 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
- 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
- Inline ghost-text completion for mid-prompt skills
/clearand/newaccept an optional first prompt and show the resume id- Compacted conversation history is preserved
- OpenTelemetry tracing configuration is now available
- Default agent renamed to
askand defaults to accept-edits - Auto worktrees are named with a model
- Faster resume by deferring sub-agent instantiation
- 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
/clearresume hint gated on session persistability
- Admin config layer for shared/enforced config that applies over user config
- "Default" (unpinned) model option in
/modeland/configto 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/retryingnotification - 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)
- 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_clipboarddocumented
- Drag-and-drop of files into the terminal when unfocused (iTerm2, Ghostty)
- Subagent session handoff after compaction
- Stale
devstral-smallthinking setting migrated to off - Noisy non-Vibe events dropped from Sentry
- ACP returns
max_turn_requestsstop reason instead of erroring on turn limit /resumelisting speed no longer scales with total session count (persistent index)
/retrycommand to retry an interrupted response/rewindnow 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
/statusshows provider prompt-cache usage and discounts cached tokens from the session cost- Native copy hint on the clipboard notice
- 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
- Unreachable chat mode
- 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
- Redesigned
/configas 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-serverbinary for desktop integration
- Cached-token counts now reported in session stats instead of always zero
- Zed ACP packaging preserves symlinks by shipping
.tar.gzarchives grepresult chips open the correct file and no longer leak absolute host paths into context (ACP)- ACP
/rewindtruncates 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
- Crash when
@-mentioning a file, which aborted the turn
- [A/B testing] OS-native managed shell tools
vibe mcp addandvibe mcp removecommands 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
- 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 directAgentLoop/callback coupling with a typed, projected protocol
- 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
/resumedelete confirmation - Empty mapping treated as absent in CONCAT/UNION config merge
LC_CTYPEused instead ofLC_ALLin the bash tool environment- Chunk text emitted before its tool call in the streaming loop
- Text selection guarded against detached widgets
OSErroron 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
/newcommand as an alias for/clear- ACP review support: approve or revert agent changes from ACP clients, with live refresh
- Full migration to ConfigOrchestrator for configuration handling
- Defaults now filled at merge time via
DefaultConfigLayer;config.tomlstores only user-set values
read_fileno 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
- Teleport context summary flag
- Registry skills content store and manifest for skill discovery
- Config schema exposed through ACP
- Checkpointer engine state model, owner union, and pending hunks
- [Breaking — hooks] Hooks graduated from experimental;
hooks.tomlis now stable. Every hooktypeis renamed:post_agent_turn→post_agent,before_tool→pre_tool,after_tool→post_tool(thehook_event_namepayload field is renamed to match). Update existinghooks.tomlfiles accordingly. @filementions now inject asread_filetool 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
- Duplicate model aliases deduplicated instead of failing config load
- UTF-8 BOM stripped in
decode_safe - UTF-8 BOM stripped from
SKILL.mdbefore 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/ttyis unavailable - GitPython import deferred off the ACP startup path
@filemention 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
enable_experimental_hooksconfig flag (andVIBE_ENABLE_EXPERIMENTAL_HOOKSenv var); hooks now load unconditionally when declared
- Warning when the Narrator is enabled without working audio output
- Windows command prompt is now shell-aware
- Hardened bash tool permissions and cross-platform shell handling
- Rewind now triggers on a double
Escwhen the input is empty, with improved keybindings - Teleports now include summarized context
- Renamed user plan labels (Teams → Team, Education → Student)
ask_user_questionselection now works via mouse and supports free-text entry
- 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
- Experimental managed bash tool for running and tracking shell sessions
--disabled-toolsCLI 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.mdfiles are now surfaced duringread_filetool calls
- 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
- 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
--worktree NAMEoption to create or reuse a git worktree and run inside it- Rewind support over ACP for both the agent and the host
- Teleport URL in the CLI is now clickable
- Raised the Leanstral context limit
- Sentry auto integrations are now disabled
- Path prompt work is now offloaded from the UI thread
- StopIteration crash in
QuestionAppwhen 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)
- 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
- Session resume with
--continuenow matches the resolved working directory - Long tool call titles now wrap instead of being cropped
- Duplicate
mcp_serversnames 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_agenton new and resumed sessions - Ambiguous teleport session creates are now retried
j/knavigation in selectable lists across the TUI (questions, theme picker, rewind, voice, MCP panels)ask_confirmation_on_exitconfig option to prompt before quitting- Project-level
.vibe/config.tomlnow persists config option changes
- Consistent styling and casing for keyboard shortcut hints across the TUI
ask_user_questionnow supports more than 4 options and questions
- No longer prompts to log in for disabled MCP servers
- Teleport diff no longer mutates the real git index
- Sentry crash reporting for unhandled exceptions in the TUI (gated by
enable_telemetry; off when telemetry is disabled)
- Recoverable tool-call errors are now muted in the UI; only terminal errors render as a hard failure
- MarkupError crash when tool output contained square brackets
- OpenTelemetry chat/LLM spans missing after Mistral Python SDK 2.4.10+ telemetry opt-in gate
/mcp addslash command for adding OAuth MCP servers- Petit chat animation idle pauses
- Bare exit synonyms (exit, quit, :q, :quit) now treated as slash commands instead of prompts
- MCP OAuth login crash when keyring backend is un-loadable
- 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
- MCP OAuth authentication UX improvements in
/mcppanel - Diff gutter and body split into separate widgets
- Faster UI startup with lazy heavy imports
- Improved connector performance with bootstrap caching
- 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
- Commands in
/helpare now listed alphabetically in both the CLI and ACP /teleportis now always available and shows an explicit error when its prerequisites aren't met, instead of being hidden
/mcp login,/mcp logout, and/mcp statuscommands to authenticate OAuth-backed MCP servers from the TUIvibe --check-upgradeto force an immediate update check and exit--yoloas an alias for--auto-approve- ACP now accepts inline image content blocks
- 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
- 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
- ACP workspace trust gated behind the
workspace-trustclient capability
/resumenow opens much faster- Startup update-failure message is now gentler and no longer alarms when an update can't be applied
- Fuzzy search in slash command autocomplete
- Syntax-highlighted, line-numbered, theme-aware diffs for file edits
/resumenow 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
- ACP max-output-token responses now stop gracefully with
max_tokensinstead 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
- [Experimental]
before_toolandafter_toolhooks: shell scripts declared inhooks.tomlthat fire around every tool call; hooks can deny the call, rewrite tool inputs, or append context to the output — enable withenable_experimental_hooks = true - Message queue: messages typed while the agent or a
!bashcommand 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_turnssupport exposed over ACP viaset_config_option
- Compaction now re-injects prior user messages so the agent retains the original task goals across context resets
- [Breaking — experimental hooks]
post_agent_turnretries no longer use exit code2; hooks must now exit0and return{"decision": "deny", "reason": "..."}on stdout to trigger a retry — exit code2is treated as a failure - Model refusal stop reason is now surfaced to the user instead of stopping silently
- 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
--resumenow 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_searchare handled without crashing - NaN SGR mouse reports no longer leak into the chat input
/teleportslash command exposed over ACP, mirroring the TUI command for IDE integrations- Startup prompt to install a pending Vibe update before continuing the session
- 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
/helpinstead of rejecting them - Built-in tool prompts no longer reference the removed
search_replacename and now point toedit
- Image attachments via
@-mentions in the TUI for vision-capable models - Session deletion, exposed over ACP as the
session/deleteextension 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.mdfile fails to parse instead of silently dropping the skill - Trust prompt now proposes the git repository ancestor as a trust target
EnvironmentLayerin the layered configuration, populated fromVIBE_-prefixed environment variables
- New tool-call format for
readand the fileedittool write_fileis now create-only and refuses to overwrite existing files- Bumped
agent-client-protocolto 0.10.1
- 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
/mcppanel ordering now reflect which connectors are actually usable and the user's enable/disable choices disabled_toolsfrom runtime is merged with the TOML configuration instead of replacing it, and is enforced insideToolManager.get()shift+backspaceandshift+deletenow work in the chat input- Crash in the ACP
todoplan-update handler when the model's tool call failed validation
- Recursive search for nested harness files
enable_system_trust_storeconfig flag to switch the shared SSL context to the OS trust store for corporate TLS / private CA setups
- MCP HTTP transport now uses Vibe's shared SSL context so it honors
SSL_CERT_FILE/SSL_CERT_DIRand 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
- Crash during initialization
- VS Code extension promo banner now sits at the top of the conversation instead of being pinned above the input
- VS Code extension promo link in the CLI banner now points to the renamed
mistralai.mistral-vibe-codeextension
/teleportnow uses the new Vibe Code Web sessions
- Custom compaction prompts via the
compaction_prompt_idconfig setting, resolved from~/.vibe/prompts/or.vibe/prompts/ --max-tokensflag for programmatic mode (-p)- ACP
_auth/statusand_auth/signOutextension methods so IDE extensions can show auth state and sign the user out - Auth source assessment in
vibe.setup.authto 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
OverridesLayerandProjectConfigLayerfor the layered configuration system
- 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_inflag is no longer required (stale entries are silently ignored) - Compaction quality improved
- Refreshed user message styling and slash/teleport variants
/teleportto Vibe Code Web now carries the working diff and last commit, matching the legacy teleport- Reworded
/teleporthelp and completion copy to say "Vibe Code Web"
- Zed extension publishing job from the release workflow
- Load skills from
~/.agents/skillsso they can be shared across agents - Restore the textual theme selection system with an onboarding theme picker
- Surface unauthenticated connectors in
/mcpwithneeds auth/needs setuplabels and start the OAuth flow from inside the CLI - Current date injected into the system prompt
minimalsystem prompt variant for eval and training
- Refreshed manual API key onboarding screen to match the new onboarding panel layout
- Newly discovered connectors are now disabled by default; existing user choices are preserved
- Preserve original line endings in ACP
search_replace - Show MCP/connectors count as
enabled/totalin the banner - ACP grep tool displays the search path as a chip and no longer drops the filename
- Pretty session titles that format
@mentionsyntax for human-readable display - Auto-emit
SessionInfoUpdateon the first prompt so IDE session pickers reflect the title immediately - End-to-end layered config read path with
TomlFileLayer,ConfigBuilder, andConfigOrchestrator
- MCP menu no longer shows
D/Eshortcuts in the detail view when there are no tools to enable or disable - Parallel
bashtool calls in ACP each render their own live terminal instead of racing on shared state
- GrowthBook A/B testing layer with first system prompt experiment
--add-dirflag to pull additional repository roots into a session--no-autofillflag for bump_version.py script- TTY-keyed
--continuescoping to current terminal - Improved plan mode readability with live-editable plan display (Ctrl+G to edit)
- ACP dispatch user rating telemetry
enable_connectorsconfig flag to control connector availability- Connectors migrated to public GA endpoints
- Combine git subprocess calls in SessionLogger for improved performance by @MichisGitIsKing
- Indent assistant message content to align with other messages
- Deprecate retrying workflow status and expose retry source
- Drop consecutive user-message merging in LLM backends
- Share session permissions with subagents
- Bump pydantic-settings to >=2.13.0
- Avoid closing in-use backend on agent reload
- Slash commands broken when automatic IDE context is enabled
- Debounce tool approvals to avoid interrupting user typing
- Preserve newline style in search_replace
- Reset cursor position on up-arrow
- Remove hardcoded API key env var in websearch
- Fix whoami hardcoded url
- Pin dependencies in published wheel
- Syntax-highlighted file diffs for
write_fileandsearch_replacein the IDE agent webview - Spinner and loader for
!(bang) command output prepare releasescript can resume after resolving merge conflicts
- Strip wildcard suffix when persisting bash allowlist patterns
- Build a combined SSL context for all outbound HTTPS requests
- Hide non-interactive tools from the LLM in ACP and programmatic mode
/loopcommand to run a prompt or slash command on a recurring intervaldefault_agentconfig setting- Telemetry instrumentation for the
teleportcommand - Logging environment variables documented in
--help
enable_telemetrynow takes precedence overenable_otel
- Non-retryable errors raised by sub-activities now correctly stop the retry when the agent loop runs inside a Temporal activity (deepens the 2.9.4 fix to walk the exception cause chain)
- Compacted session IDs displayed correctly
- Reload the history file before writing so parallel instances don't clobber each other
read_fileflagged as truncated when the limit is reached- CLI loader left-alignment
- Default scroll sensitivity in the TUI restored
- Loosened the "no git commit" constraint
- Ensure
enable_telemetrytakes precedence overenable_otel
/renamecommand to rename the current sessionfeat: vibe.at_mention_insertedtelemetry event- "Always allow" tool permissions persist across sessions
- Eager agent-loop warmup so
vibe.readytelemetry fires sooner
bash(!command) bang commands run via async subprocess for better latency- Bumped
mistralSDK to 2.4.4 - Bumped
cryptographyto address upstream CVEs
- Preserve
non_retryableflag on exceptions raised through_chat/_chat_streaming, so callers driving the agent loop from a Temporal activity can signal "do not retry" /clearno longer chainsparent_session_idto the previous sessionvibe.new_sessiontelemetry no longer fires when resuming a session
- Windows ARM build artifacts (no longer published; required to bump
cryptography)
- Fix textual version
- Teleport surfaces the latest GitHub connection status while polling
- Connector OAuth authentication flow in
/mcpmenu ConfigPatchoperation types for Vibe Codeextra_headersfield toProviderConfig- Structured metadata on ACP tool results
vibe.user_cancelled_actionACP telemetry coveragevibe.new_sessiontelemetry event emitted whenever the session is reset
- Migrated default model to
mistral-medium-3.5
- Scratchpad directory for temporary working files shared with subagents
/copyslash command- Experimental hooks system with post-agent-turn lifecycle
- OpenAI Responses API adapter
- ACP session fork and session close support
- Thinking level picker in ACP CLI
--trustsession-only flag and fail-fast behavior in-pmode- Opus 4.7 model support
ConfigLayerfor layered configuration resolution~/.vibe/promptsoverrides for builtin prompts- Enable/disable MCP servers and individual tools from
/mcpmenu - Custom compaction instructions via
/compact vibe.readytelemetry event- Usage updates sent after every LLM turn for ACP
- Headless section in system prompt to prevent bad model behavior
- Renamed
auto_approveconfig tobypass_tool_permissions - Increased feedback bar frequency with cooldown and TOML cache
- Feedback bar only shown when active model is Mistral
- Centralized telemetry metadata construction and wired through entrypoints
- Preserved stable session identity across compact/fork/rewind
- Filtered remote sessions by current user and deduped continue-as-new
--continuenow only looks for sessions of the current working directory- Batched widget mounts and narrowed CSS selectors for UI performance
- Autocomplete popup height calculation for wrapped lines
- Autocomplete popup dismissed on tab completion and escape
- Double Ctrl+C/Ctrl+D required to quit instead of killing session immediately
- Context window overrun now shows a friendly error message
MallocStackLoggingerror messages suppressed in CLI inputindex.lockleftover on interrupted deferred init- Safe
findcommands allowed by default - Session ID preserved when resuming sessions through ACP
- Usage updates sent after tool results instead of tool streams in ACP
- KV cache warming via x-affinity in count tokens
- Fixed changelog and whats_new
- Builtin skills system with self-awareness skill
cwdconfiguration parameter for MCP stdio servers/connectorsas alias for/mcpandRrefresh shortcut in MCP browserMergeFieldMetadataand annotated merge strategy helpers for config schemasvibe.request_senttelemetry event fired before each LLM API call- Model alias to
tool_call_finishedtelemetry event
- Deferred heavy init in subagents and ACP sessions to background thread
- Renamed
request_senttelemetry fields and addednb_prompt_chars - Sorted connectors in
/mcpmenu by connection state then alphabetically
/debugcommand no longer throws- Race condition in banner initialization dropping initial state
/terminal-setupcommand
MergeStrategyenum and merge logic for configurationcall_source=vibe_codefield in LLM request metadata- "Other" task type for non-code requests in CLI prompt
- Parallelized git subprocess calls during startup
- Extracted command registry and refactored skill resolution
- 1M context window and thinking budget max for opus
- Updated default telemetry URL to
api.mistral.ai
- Markdown fence context loss causing streaming rendering problems
- Proxy chain URLs in
api_baseparsing
- Alt+Left / Alt+Right key bindings from chat input
- Display detected files and LLM risks in trust folder dialog
- Text-to-speech via the Mistral SDK with telemetry tracking
- Deferred MCP and git I/O to background thread for faster CLI startup
- Made telemetry URL configurable
- Bumped Textual to 8.2.1
- Encoding detection fallback in
read_safefor non-UTF-8 files - Config saving logic cleanup
- Console View for enhanced debugging and monitoring
/mcpcommand to display MCP servers and their status- Manual command output forwarding to agent context
- Improved web_fetch content truncation for better readability
- Lazily load heavy dependencies to improve startup time
- Optimized folder parsing at startup using scandir
- Include file name in search_replace result display
- Stale configurations from subagent switch
- ValueError on OTEL context detach in agent_span
- Clipboard toast preview replaced with fixed text
- Only agents with type "agent" are loadable with --agent flag
- Made chat_url nullable in ChatAssistantPublicData
- Normalized OTEL span exporter endpoint
- Removed redundant permission prompts for parallel tool calls needing the same permission
- Removed bottom margin issue in UI
- Never crash before ACP server starts
- Use skill in recent commands via the up-arrow navigation
- Fixed loading order issues in vibe initialization
/data-retentionslash command to view Mistral AI's data retention notice and privacy settings
- Alt+Left / Alt+Right keyboard shortcuts for word-wise cursor movement in chat input
- Refactored narrator into a dedicated narrator manager
- Broken build on Linux
- Errored MCP servers are now excluded from the banner count
- Improved bash denylist matching and error messages
- Command messages are now skipped during rewind navigation
- ACP message-id support for reliable message boundary identification
- Reasoning effort parameter for supported models
- Updated MistralAI SDK
- Updated ACP SDK dependency
- Refined system prompt wording and structure
- Reduced scroll sensitivity to 1 line per tick for smoother scrolling
- Non-standard HTTP 529 status codes now handled gracefully in error formatting and retried
- Text selection errors when copying from unmounting components
- Excluded "injected" field from user messages in generic backend
- Rewind mode to navigate and fork conversation history
- Preserve message_id when aggregating streaming LLM chunks
- Improved error handling for SDK response errors
- Pinned agent-client-protocol dependency back to 0.8.1
- Context usage updates via ACP
- Loosened agent-client-protocol version constraint from pinned to minimum bound
- OTEL tracing support for observability
- Skill tool for managing task lists and workflows
- Text-to-speech (TTS) functionality
- Standalone --resume command for session picker
- BFS for vibe folders to improve startup performance
- List-based model picker for /model command
- is_user_prompt flag to Mistral metadata header
- Correlation ID in user feedback calls
- Current date added to system prompt in vibe-work
- TypeScript type inference for large tool outputs in vibe-work-harness
- Updated agent-client-protocol to 0.9.0a1
- Changed inline code color from yellow to green
- Removed "You have no internet access" from CLI prompt
- Fine-grained permission system improvements
- Inject system certs into vibe-acp frozen binary via truststore
- Streaming for currently streamed message when switching agents
- Proper UI updates when tools switch current agents
- Space key functionality when holding shift
- Empty TextChunk not appended when reasoning has no text content
- Messages removed from user feedback event
- Bash allowlist/denylist activation on Windows
- Improved scrolling performance
- ACP error handling in webview
- Context usage updates sent via ACP
- Include
exit_plan_modetool only in plan mode
- Dedicated theorem proving agent powered by leanstral, setup with /leanstall
- More advanced AGENTS.md support:
- AGENTS.md in ~/.vibe/ folder for user-level agent instructions
- AGENTS.md for subfolders and in parent folders
- Mistral Code API key info displayed in CLI banner
- Voice mode with real-time transcription support
- Parallel tool execution for improved performance
- Structured ACP error classes for better error handling
- Bash allowlist/denylist now active on Windows
- Auto-completion relevance improved with better filename and path matching
- History navigation no longer filters by prefix
- Updated to Mistral SDK v2 import structure
- Removed
findfrom bash default allowlist to prevent -exec abuse
- Improved scrolling performance
- Web search tool now infers server URL from provider config
- Session ID included in telemetry events for better tracing
- Skills now extract arguments when invoked, improving parameter handling
- Auto-compact threshold falls back to global setting when not defined at model level
- Update notification toast no longer times out, ensuring the user sees the restart prompt
- Removed
file_content_beforefrom Vibe Code, reducing payload size
HarnessFilesManagerfor selective loading of harness files, enabling SDK usage without accessing the file system.
- Web search tool infers server URL from provider config instead of hardcoded production API
ask_user_questionstool disabled in prompt mode
- Space key fix extended to all
Inputwidgets (question prompts, proxy setup) in VS Code terminal - Ruff isort/formatter config conflict resolved (
split-on-trailing-commaset tofalse)
- User plan displayed in the CLI banner
- Reasoning effort configuration and thinking blocks adapter
- Auto-compact threshold is now per-model
- Removed expensive file scan from system prompt; cached git operations for faster agent switching
- Improved plan mode
- Updated
whoamiresponse handling with new plan type and name fields
- Space key works again in VSCode 1.110+
- Arrow-key history navigation at wrapped-line boundaries in chat input
- UTF-8 encoding enforced when reading metadata files
- Update notifier no longer crashes on unexpected response fields
- /resume command to choose which session to resume
- Web search and web fetch tools for retrieving and searching web content
- MCP sampling support: MCP servers can request LLM completions via the sampling protocol
- MCP server discovery cache (
MCPRegistry): survives agent switches without re-discovering unchanged servers - Chat mode for ACP (
session/set_config_optionswithmode=chat) - ACP
session/set_config_optionssupport for switching mode and model - Tool call streaming: tool call arguments are now streamed incrementally in the UI
- Notification indicator in CLI: terminal bell and window title change on action required or completion
- Subagent traces saved in
agents/subfolder of parent session directory - IDE detection in
new_sessiontelemetry - Discover agents, tools, and skills in subfolders of trusted directories (monorepo support)
- E2E test infrastructure for CLI TUI
- System prompts rewritten for improved model behavior (3-phase Orient/Plan/Execute workflow, brevity rules)
- Tool call display refactored with
ToolCallDisplay/ToolResultDisplaymodels and per-tool UI customization - Middleware pipeline replaces observer pattern for system message injections
- Improved permission handling for
write_file,read_file,search_replace(allowlist/denylist globs, out-of-cwd detection) - Proxy setup UI updated with guided bottom-panel wizard
- Smoother color transitions in CLI loader animation
- Dead tool state classes removed (
Grep,ReadFile,WriteFilestate)
- Agent switch (Shift+Tab) no longer freezes the UI (moved to thread worker)
- Empty assistant messages are no longer displayed
- Tool results returned to LLM in correct order matching tool calls
- Auto-scroll suspended when user has scrolled up; resumes at bottom
- Retry and timeout handling in Mistral backend (backoff strategy, configurable timeout)
- Multiple clipboard copy strategies: OSC52 first, then pyperclip fallback when system clipboard is available (e.g. local GUI, SSH without OSC52)
- Ctrl+Z to put Vibe in background
- Improve performance around streaming and scrolling
- File watcher is now opt-out by default; opt-in via config
- Bump Textual version in dependencies
- Inline code styling: yellow bold with transparent background for better readability
- Banner: sync skills count after initial app mount (fixes wrong count in some cases)
- Collapsed tool results: strip newlines in truncation to remove extra blank line
- Context token widget: preserve stats listeners across
/clearso token percentage updates correctly - Vertex AI: cache credentials to avoid blocking the event loop on every LLM request
- Bash tool: remove
NO_COLORfrom subprocess env to fix snapshot tests and colored output
- Google Vertex AI support
- Telemetry: user interaction and tool usage events sent to datalake (configurable via
enable_telemetry) - Skill discovery from
.agents/skills/(Agent Skills standard) in addition to.vibe/skills/ - ACP:
session/loadandsession/listfor loading and listing sessions - New model behavior prompts (CLI and explore)
- Proxy Wizard (PoC) for CLI and for ACP
- Proxy setup documentation
- Documentation for JetBrains ACP registry
- Trusted folders: presence of
.agentsis now considered trustable content - Logging handling updated
- Pin
cryptographyto >=44.0.0,<=46.0.3; uv sync for cryptography
- Auto scroll when switching to input
- MCP stdio: redirect stderr to logger to avoid unwanted console output
- Align
pyproject.tomlminimum versions withuv.lockfor pip installs - Middleware injection: use standalone user messages instead of mutating flushed messages
- Revert cryptography 46.0.5 bump for compatibility
- Pin banner version in UI snapshot tests for stability
- Incremental load of long sessions: windowing (20 messages), "Load more" to fetch older messages, scroll to bottom when resuming
- ACP support for thinking (agent-client-protocol 0.8.0)
- Support for FIFO path for env file
- UI redesign: new look and layout for the CLI
- Textual UI optimizations: ChatScroll to reduce style recalculations, VerticalGroup for messages, stream layout for streaming blocks, cached DOM queries
- Bumped agent-client-protocol to 0.8.0
- Use UTC date for timestamps
- Clipboard behavior improvements
- Docs updated for GitHub discussions
- Made the Upgrade to Pro banner less prominent
- Fixed inaccurate token count in UI in some cases
- Fixed agent prompt overrides being ignored
- Terminal setup: avoid overwriting Wezterm config
- Legacy terminal theme module and agent indicator widget
- Standalone onboarding theme selection screen (replaced by redesign)
- Allow environment variables to be overridden by dotenv files
- Display custom rate limit messages depending on plan type
- Made plan offer message more discreet in UI
- Speed up latest session scan and harden validation
- Updated pytest-xdist configuration to schedule single test chunks
- Prevent duplicate messages in persisted sessions
- Fix ACP bash tool to pass full command string for chained commands
- Fix global agent prompt not being loaded correctly
- Do not propose to "resume" when there is nothing to resume
- Fix encoding issues in Windows
- Subagent support
- AskUserQuestion tool for interactive user input
- User-defined slash commands through skills
- What's new message display on version update
- Auto-update feature
- Environment variables and timeout support for MCP servers
- Editor shortcut support
- Shift+enter support for VS Code Insiders
- Message ID property for messages
- Client notification of compaction events
- debugpy support for macOS debugging
- Mode system refactored to Agents
- Standardized managers
- Improved system prompt
- Updated session storage to separate metadata from messages
- Use shell environment to determine shell in bash tool
- Expanded user input handling
- Bumped agent-client-protocol to 0.7.1
- Refactored UI to require AgentLoop at VibeApp construction
- Updated README with new MCP server config
- Improved readability of the AskUserQuestion tool output
- Use ensure_ascii=False for all JSON dumps
- Delete long-living temporary session files
- Ignore system prompt when saving/loading session messages
- Bash tool timeout handling
- Clipboard: no markup parsing of selected texts
- Canonical imports
- Remove last user message from compaction
- Pause tool timer while awaiting user action
- instructions.md support
- workdir setting in config file
- bash tool not discovered by vibe-acp
- markup in blinking messages
- safety around Bash and AGENTS.md
- explicit permissions to GitHub Actions workflows
- improve render performance in long sessions
- Fix config desyncing issues
- User definable reasoning field
- Fix rendering issue with spinner
- Fix crash when continuing conversation
- Fix Nix flake to not export python
- agentskills.io support
- Reasoning support
- Native terminal theme support
- Issue templates for bug reports and feature requests
- Auto update zed extension on release creation
- Improve ToolUI system with better rendering and organization
- Use pinned actions in CI workflows
- Remove 100k -> 200k tokens config migration
- Fix
-pmode to auto-approve tool calls - Fix crash when switching mode
- Fix some cases where clipboard copy didn't work
- Remove dead code
- Fix artefacts automatically attached to the release
- Refactor agent post streaming
- Improve error message when running in home dir
- Do not show trusted folder workflow in home dir
- Modular mode system
- Trusted folder mechanism for local .vibe directories
- Document public setup for vibe-acp in zed, jetbrains and neovim
--versionflag
- Improve UI based on feedback
- Remove unnecessary logging and flushing for better performance
- Update textual
- Update nix flake
- Automate binary attachment to GitHub releases
- Prevent segmentation fault on exit by shutting down thread pools
- Fix extra spacing with assistant message
- Add more copy_to_clipboard methods to support all cases
- Add bindings to scroll chat history
- Relax config to accept extra inputs
- Remove useless stats from assistant events
- Improve scroll actions while streaming
- Do not check for updates more than once a day
- Use PyPI in update notifier
- Fix tool permission handling for "allow always" option in ACP
- Fix security issue: prevent command injection in GitHub Action prompt handling
- Fix issues with vLLM
- add
terminal-authauth method to ACP agent only if the client supports it - fix
user-agentheader when using Mistral backend, using SDK hook
- added
include_commit_signatureinconfig.tomlto disable signing commits
- fixed crash in some rare instances when copy-pasting
- improved context length from 100k to 200k
- add missing steps in bump_version script
- move
pytest-xdistto dev dependencies - take into account config for bash timeout
- improve textual performance
- improve README:
- improve windows installation instructions
- update default system prompt reference
- document MCP tool permission configuration
- Fix streaming with OpenAI adapter
- Rename agent in distribution/zed/extension.toml to mistral-vibe
- Fix icon and description in distribution/zed/extension.toml
- Remove .envrc file
- Add LICENCE symlink in distribution/zed for compatibility with zed extension release process
- Fix setup flow for vibe-acp builds
- Fix update notification
- Initial release