-
Notifications
You must be signed in to change notification settings - Fork 232
Description
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 |
||
| Tool allow-listing | ✅ --allow-tool |
✅ --allowed-tools |
✅ --enabled-tools² |
|
| Granular tool perms | ✅ server(tool) |
✅ mcp__server__tool |
❌ | |
| P1 - Logging | ||||
| Structured logs | ✅ JSONL session files | ✅ --debug-file |
✅ --output json|streaming |
|
| Log file output | ✅ --log-dir |
✅ --debug-file |
||
| Verbose mode | ✅ --log-level all |
✅ --verbose |
||
| Token usage in logs | ✅ | ✅ | ||
| Tool calls in logs | ✅ | ✅ | ✅ | |
| P2 - Configuration | ||||
| Custom model | ✅ --model |
✅ --model |
✅ -c model= |
|
| Max turns/iterations | ❌ | ✅ --max-turns |
❌ | ✅ --max-turns |
| Max cost limit | ❌ | ❌ | ❌ | ✅ --max-price |
| Custom CLI args | ✅ | ✅ | ✅ | ✅ |
| P2 - Security | ||||
| Directory access control | ✅ --add-dir |
❌ | ❌ | |
| Network restrictions | ❌ | |||
| 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 |
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)
- Command-line argument (e.g.,
- 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
- Granular permissions:
- 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.txtor--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-nameto override default model - Max iterations:
--max-turns Nto 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 (
-pflag with auto-approve) - Max turns (
--max-turns) - Max cost limit (
--max-price) - unique feature! - Tool allow-listing (
--enabled-toolswith 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
-
MCP config via CLI flag: Currently requires
config.toml, no--mcp-config /path/to/file.jsonflag- Workaround: Generate
~/.vibe/config.tomldynamically or useVIBE_HOMEenv var
- Workaround: Generate
-
Model selection via CLI: No
--modelflag, requires config.toml- Workaround: Generate config.toml with
active_model
- Workaround: Generate config.toml with
-
Log file path control: Logs go to
~/.vibe/logs/, no--log-fileflag- Workaround: Use
VIBE_HOMEto control log location, or parse--output streaming
- Workaround: Use
-
No
--verboseCLI 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 streamingExample 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.logPriority 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.