Configuration
Vibe is configured via a config.toml file. It looks for this file first in ./.vibe/config.toml and then falls back to ~/.vibe/config.toml.
For ~/.vibe/config.toml, you can open the configuration file with, for example:
open ~/.vibe/config.tomlAPI Key Configuration
Mistral API Key
You can get your Mistral API key from here.
Devstral 2 is currently free to use; create an account with either the Experiment or Scale Up (recommended) plan, and you will be free to use it with Mistral Vibe.
Vibe supports multiple ways to configure your API keys:
- Interactive Setup (Recommended for first-time users): When you run Vibe for the first time or if your API key is missing, Vibe will prompt you to enter it. The key will be securely saved to
~/.vibe/.envfor future sessions. - Environment Variables: Set your API key as an environment variable:
export MISTRAL_API_KEY="your_mistral_api_key" .envFile: Create a.envfile in~/.vibe/and add your API keys:Vibe automatically loads API keys fromMISTRAL_API_KEY=your_mistral_api_key~/.vibe/.envon startup. Environment variables take precedence over the.envfile if both are set.
The .env file is specifically for API keys and other provider credentials. General Vibe configuration should be done in config.toml.
Customize Behaviour
Custom System Prompts and Agent Configurations
You can customize Vibe's behavior by modifying prompts and agent configurations.
Custom System Prompts
You can create custom system prompts to replace the default one (prompts/cli.md). Create a markdown file in the ~/.vibe/prompts/ directory with your custom prompt content.
To use a custom system prompt, set the system_prompt_id in your configuration to match the filename (without the .md extension):
# Use a custom system prompt
system_prompt_id = "my_custom_prompt"This will load the prompt from ~/.vibe/prompts/my_custom_prompt.md.
Custom Agent Configurations
You can create custom agent configurations for specific use cases (e.g., red-teaming, specialized tasks) by adding agent-specific TOML files in the ~/.vibe/agents/ directory.
To use a custom agent, run Vibe with the --agent flag:
vibe --agent my_custom_agentVibe will look for a file named my_custom_agent.toml in the agents directory and apply its configuration.
Example custom agent configuration (~/.vibe/agents/redteam.toml):
# Custom agent configuration for red-teaming
active_model = "devstral-2"
system_prompt_id = "redteam"
# Disable some tools for this agent
disabled_tools = ["search_replace", "write_file"]
# Override tool permissions for this agent
[tools.bash]
permission = "always"
[tools.read_file]
permission = "always"This implies that you have set up a redteam prompt named ~/.vibe/prompts/redteam.md.
Change Providers and Models
We allow users to change providers and models behind Vibe, for this you need to edit the config.toml file as follows:
- Create a new Provider preset in the config file:
[[providers]] name = "openrouter" # the name of the provider for the Vibe config api_base = "https://openrouter.ai/api/v1" # base url of the api api_key_env_var = "OPENROUTER_API_KEY" # env var to get the api key api_style = "openai" backend = "generic" - Create a new Model preset:
[[models]] name = "mistralai/devstral-2512:free" # id name of the model in the api provider = "openrouter" # name of the provider alias = "devstral-openrouter" # the alias for Vibe to use the model temperature = 0.2 input_price = 0.0 output_price = 0.0 - Set the
active_modelin the config file to the alias:active_model = "devstral-openrouter" # alias of the model to be used
Models created are also accessible via Vibe directly with the /config command, allowing you to change the model on the fly.
MCP Server Configuration
Configuring MCP Servers
You can configure MCP (Model Context Protocol) servers to extend Vibe's capabilities. Add MCP server configurations under the mcp_servers section:
# Example MCP server configurations
[[mcp_servers]]
name = "my_http_server"
transport = "http"
url = "http://localhost:8000"
headers = { "Authorization" = "Bearer my_token" }
api_key_env = "MY_API_KEY_ENV_VAR"
api_key_header = "Authorization"
api_key_format = "Bearer {token}"
[[mcp_servers]]
name = "my_streamable_server"
transport = "streamable-http"
url = "http://localhost:8001"
headers = { "X-API-Key" = "my_api_key" }
[[mcp_servers]]
name = "fetch_server"
transport = "stdio"
command = "uvx"
args = ["mcp-server-fetch"]Supported transports:
http: Standard HTTP transportstreamable-http: HTTP transport with streaming supportstdio: Standard input/output transport (for local processes) Key fields:name: A short alias for the server (used in tool names)transport: The transport typeurl: Base URL for HTTP transportsheaders: Additional HTTP headersapi_key_env: Environment variable containing the API keycommand: Command to run for stdio transportargs: Additional arguments for stdio transport
MCP tools are named using the pattern {server_name}_{tool_name} and can be configured with permissions like built-in tools:
# Configure permissions for specific MCP tools
[tools.fetch_server_get]
permission = "always"
[tools.my_http_server_query]
permission = "ask"MCP Servers also support:
- Environment variables: Set environment variables for MCP servers (stdio transport)
- Custom timeouts: Configure startup and tool execution timeouts
- Enhanced security: Better API key handling
Example with environment variables and timeouts:
[[mcp_servers]]
name = "my_server"
transport = "http"
url = "http://localhost:8000"
env = { "DEBUG" = "1", "LOG_LEVEL" = "info" }
startup_timeout_sec = 15
tool_timeout_sec = 120Session Management
Session Continuation and Resumption
Vibe supports continuing from previous sessions:
--continueor-c: Continue from the most recent saved session--resume SESSION_ID: Resume a specific session by ID (supports partial matching)
# Continue from last session
vibe --continue
# Resume specific session
vibe --resume abc123Session logging is required for these features to work, it's enabled by default.
Enable/Disable Tools with Patterns
Controlling Tool Availability
You can control which tools are active using enabled_tools and disabled_tools.
These fields support exact names, glob patterns, and even regular expressions with a re: prefix.
Examples:
# Only enable tools that start with "serena_" (glob)
enabled_tools = ["serena_*"]
# Regex (prefix with re:) — matches full tool name (case-insensitive)
enabled_tools = ["re:^serena_.*$"]
# Disable a group with glob; everything else stays enabled
disabled_tools = ["mcp_*", "grep"]- MCP tool names use underscores, e.g.,
serena_listnotserena.list. - Regex patterns are matched against the full tool name using fullmatch.
Custom Vibe Home Directory
Customize Home Directory
By default, Vibe stores its configuration in ~/.vibe/. You can override this by setting the VIBE_HOME environment variable:
export VIBE_HOME="/path/to/custom/vibe/home"This affects where Vibe looks for:
config.toml- Main configuration.env- API keysagents/- Custom agent configurationsprompts/- Custom system promptstools/- Custom toolslogs/- Session logs
To run code, enable code execution and file creation in Settings > Capabilities.
Working Directory Control
Define a Working Directory
Use the --workdir option to specify a working directory:
vibe --workdir /path/to/projectThis is useful when you want to run Vibe from a different location than your current directory.
Trust Folder System
Manage which folders you trust
Vibe includes a trust folder system to ensure you only run the agent in directories you trust. When you first run Vibe in a new directory, it may ask you to confirm whether you trust the folder.
Trusted folders are remembered for future sessions. You can manage trusted folders through its configuration file ~/.vibe/trusted_folders.toml.
This safety feature helps prevent accidental execution in sensitive directories.
Update Settings
Auto-Update
Vibe includes an automatic update feature that keeps your installation current. This is enabled by default.
To disable auto-updates, add this to your config.toml:
enable_auto_update = false