Skip to content

Add Mistral Vibe as coding agent #16145

@dsyme

Description

@dsyme

After talking with Pini Wietchner at Mistral we will take a look at adding support for Mistral Vibe

@pelikhan is tidying up the internal engineering to make sure adding new coding agents is reasonably straight-forward.

I asked Opus to take a look at the coding agent features needed, download Mistral Vibe CLI and analyze what's what according what's needed. Here's what it came up with

Technical Requirements for Coding Agent CLI Integration with gh-aw

Support Comparison Table

Requirement Copilot CLI Claude Code Codex Mistral Vibe
P0 - Core CLI
Non-interactive mode --prompt --print exec subcommand -p (programmatic mode)
Prompt input --prompt "..." ✅ positional arg exec "..." ✅ positional or -p "..."
Prompt from file ✅ stdin/shell ✅ stdin/shell ✅ stdin/shell ✅ stdin/shell
Exit codes
Installation method npm @github/copilot npm @anthropic-ai/claude-code npm @openai/codex curl install script (uv/pip)
P0 - Authentication
API key via env var COPILOT_GITHUB_TOKEN ANTHROPIC_API_KEY OPENAI_API_KEY MISTRAL_API_KEY
P1 - MCP Integration
MCP config file --mcp-config --mcp-config ⚠️ In development ⚠️ config.toml only¹
Tool allow-listing --allow-tool --allowed-tools ⚠️ Limited --enabled-tools²
Granular tool perms server(tool) mcp__server__tool ⚠️ glob/regex patterns
P1 - Logging
Structured logs ✅ JSONL session files --debug-file ⚠️ Text logs --output json|streaming
Log file output --log-dir --debug-file ⚠️ stderr redirect ⚠️ session logs only³
Verbose mode --log-level all --verbose ⚠️ Limited ⚠️ config-based
Token usage in logs ⚠️ ⚠️ Session summary
Tool calls in logs ⚠️
P2 - Configuration
Custom model --model --model -c model= ⚠️ config.toml only
Max turns/iterations --max-turns --max-turns
Max cost limit --max-price
Custom CLI args
P2 - Security
Directory access control --add-dir ⚠️ Trust folder system
Network restrictions ⚠️ Via AWF sandbox ⚠️ Via AWF sandbox ⚠️ Via AWF sandbox
Auto-approve mode ❌ (uses sandbox) --dangerously-skip-permissions --dangerously-bypass... -p auto-approves
Disable confirmations --accept --disable-slash-commands ✅ (part of bypass) -p mode
P2 - Advanced
Agent/system prompt files --agent --agent NAME
Built-in web-fetch
Built-in web-search --search
Plugin system copilot plugin install ✅ Skills system
Session resume --continue, --resume
Working directory --workdir (planned) --workdir

Legend: ✅ Full support | ⚠️ Partial/limited | ❌ Not supported

Footnotes

¹ Mistral Vibe MCP: MCP servers configured via ~/.vibe/config.toml [[mcp_servers]] section, not CLI flag. Supports stdio, http, streamable-http transports.

² Vibe tool patterns: --enabled-tools supports exact names, glob patterns (bash*), and regex (re:^pattern$).

³ Vibe logging: Session logs stored in ~/.vibe/logs/. JSON output via --output json only in programmatic mode.

Vibe agents: References TOML files in ~/.vibe/agents/NAME.toml, not markdown files.


Requirements for gh-aw Integration

1. Core CLI Interface

Essential:

  • Non-interactive execution mode: CLI must support fully automated, non-interactive operation (no user prompts/confirmations)
  • Prompt/instruction input: Accept multi-line natural language instructions via:
    • Command-line argument (e.g., --prompt "instruction" or positional argument)
    • File input (e.g., --prompt-file /path/to/prompt.txt)
    • Stdin (pipe input)
  • Exit codes: Return 0 on success, non-zero on failure
  • Installation: Installable via npm (npm install -g @mistral/vibe-cli) or provide equivalent installation method

2. Authentication

Essential:

  • Support API key authentication via environment variable (e.g., MISTRAL_API_KEY)
  • Document required API key permissions/scopes

3. MCP (Model Context Protocol) Integration

Highly Recommended:

  • Support MCP server configuration via JSON config file (e.g., --mcp-config /path/to/config.json)
  • Support tool allow-listing to restrict which MCP tools the agent can invoke
    • Granular permissions: --allow-tool server_name(tool_name)
    • Server-wide permissions: --allow-tool server_name
  • Standard MCP JSON config format:
{
  "mcpServers": {
    "github": {
      "command": "node",
      "args": ["/path/to/server.js"],
      "env": {"GITHUB_TOKEN": "..."}
    }
  }
}

4. Logging & Observability

Essential:

  • Structured logs: Output logs in parseable format (JSONL strongly preferred)
  • Log file output: Support writing logs to file (e.g., --log-file /path/to/log.txt or --debug-file)
  • Verbose mode: Flag for detailed debugging output (e.g., --verbose, --debug)

Log should include:

  • Token usage metrics (input/output tokens per turn)
  • Tool calls (tool name, input size, output size, call count)
  • Number of agent turns/iterations
  • Error messages with clear failure reasons

Example JSONL log format:

{"type": "assistant", "message": {"content": [{"type": "tool_use", "name": "bash", "input": {...}}]}}
{"type": "user", "message": {"content": [{"type": "tool_result", "content": "..."}]}}
{"type": "result", "usage": {"input_tokens": 1500, "output_tokens": 300}, "num_turns": 5}

5. Configuration Options

Recommended:

  • Custom model selection: --model model-name to override default model
  • Max iterations: --max-turns N to limit agent iterations (prevent runaway costs)
  • Custom arguments: Support arbitrary CLI flags that can be passed through workflow configuration

6. Sandboxing & Security

Optional but Valuable:

  • Directory access control: Ability to restrict file system access (e.g., --add-dir /allowed/path)
  • Network restrictions: Support for domain allow-listing or firewall integration
  • Command approval bypass: Flag to skip interactive confirmations (e.g., --non-interactive, --auto-approve)

7. Advanced Features

Nice to Have:

  • Agent files: Support loading custom system prompts from files (e.g., --agent /path/to/agent.md)
  • Built-in tools: Native support for web-fetch, web-search, or other utility tools
  • Plugin system: Extensibility via plugins
  • Session management: Ability to persist/resume sessions

Mistral Vibe: Current Status & Gaps

Based on analysis of Mistral Vibe v2.1.0:

✅ Fully Supported

  • Non-interactive mode (-p flag with auto-approve)
  • Max turns (--max-turns)
  • Max cost limit (--max-price) - unique feature!
  • Tool allow-listing (--enabled-tools with glob/regex)
  • JSON/streaming output (--output json|streaming)
  • Agent profiles (--agent NAME)
  • Working directory (--workdir)
  • Session resume (--continue, --resume)
  • MCP servers (via config.toml)
  • API key via MISTRAL_API_KEY

⚠️ Gaps for gh-aw Integration

  1. MCP config via CLI flag: Currently requires config.toml, no --mcp-config /path/to/file.json flag

    • Workaround: Generate ~/.vibe/config.toml dynamically or use VIBE_HOME env var
  2. Model selection via CLI: No --model flag, requires config.toml

    • Workaround: Generate config.toml with active_model
  3. Log file path control: Logs go to ~/.vibe/logs/, no --log-file flag

    • Workaround: Use VIBE_HOME to control log location, or parse --output streaming
  4. No --verbose CLI flag: Verbosity controlled via config

    • Workaround: Pre-configure in config.toml

Recommended CLI Additions for gh-aw Compatibility

# Proposed new flags for Vibe CLI:
vibe -p "prompt" \
  --mcp-config /path/to/mcp-servers.json \  # ⭐ NEW: MCP config file path
  --model devstral-2 \                       # ⭐ NEW: Model selection
  --log-file /path/to/output.log \           # ⭐ NEW: Log file path
  --enabled-tools "github_*" "bash" \
  --max-turns 20 \
  --output streaming

Example gh-aw Integration Command

With current Vibe capabilities:

# Set Vibe home to control config location
export VIBE_HOME=/tmp/gh-aw/vibe-config

# Pre-generate config.toml with MCP servers
cat > "$VIBE_HOME/config.toml" << 'EOF'
active_model = "devstral-2"

[[mcp_servers]]
name = "github"
transport = "stdio"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { "GITHUB_TOKEN" = "${GITHUB_TOKEN}" }
EOF

# Execute Vibe in programmatic mode
vibe -p "$(cat /tmp/gh-aw/prompt.txt)" \
  --enabled-tools "github_*" "bash" "read_file" "write_file" \
  --max-turns 20 \
  --max-price 5.00 \
  --output streaming \
  2>&1 | tee /tmp/gh-aw/agent-stdio.log

Priority Levels

  • P0 (Must Have): Items 1-2 (Core CLI + Authentication) - ✅ Vibe meets these
  • P1 (Strongly Recommended): Items 3-4 (MCP + Logging) - ⚠️ Vibe partially meets (workarounds available)
  • P2 (Nice to Have): Items 5-7 (Configuration + Security + Advanced) - ✅ Vibe has many advanced features

This specification enables gh-aw to compile workflow markdown files into GitHub Actions that install and execute coding agent CLIs in a sandboxed, observable, and controlled manner.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions