Skip to content

Add Mistral Vibe as experimental coding agent#16597

Closed
Copilot wants to merge 8 commits intomainfrom
copilot/add-mistral-vibe-agent
Closed

Add Mistral Vibe as experimental coding agent#16597
Copilot wants to merge 8 commits intomainfrom
copilot/add-mistral-vibe-agent

Conversation

Copy link
Contributor

Copilot AI commented Feb 18, 2026

Implementation Plan for Mistral Vibe Coding Agent

  • Add Mistral Vibe version constant and LLM gateway port constant to pkg/constants/constants.go
  • Create pkg/workflow/mistral_vibe_engine.go with core engine implementation
    • Define MistralVibeEngine struct embedding BaseEngine
    • Implement NewMistralVibeEngine() constructor (experimental=true, port=10004)
    • Implement GetRequiredSecretNames() for MISTRAL_API_KEY
    • Implement GetInstallationSteps() using curl install script
    • Implement GetExecutionSteps() with -p flag and config.toml generation
  • Create pkg/workflow/mistral_vibe_mcp.go for MCP configuration
    • Implement RenderMCPConfig() to generate config.toml format
    • Handle VIBE_HOME environment variable for config location
  • Create pkg/workflow/mistral_vibe_logs.go for log parsing
    • Implement ParseLogMetrics() for JSON/streaming output
    • Implement GetLogParserScriptId() and GetLogFileForParsing()
  • Register Mistral Vibe engine in pkg/workflow/agentic_engine.go
  • Create unit tests in pkg/workflow/mistral_vibe_engine_test.go
  • Run validation: make fmt, make lint, make test-unit
  • Manual testing: compile a test workflow with mistral-vibe engine
  • Add smoke-mistral workflow for engine validation
  • Merge main and recompile all workflows

All tasks completed! Mistral Vibe engine is now fully implemented, tested, and integrated into gh-aw with all workflows recompiled.

Original prompt

This section details on the original issue you should resolve

<issue_title>Add Mistral Vibe as coding agent</issue_title>
<issue_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 ⚠️ 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_n...

Custom agent used: custom-engine-implementation
Comprehensive guide for implementing custom agentic engines in gh-aw


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

Copilot AI and others added 2 commits February 18, 2026 16:48
- Added Mistral Vibe version constant and LLM gateway port (10004)
- Created mistral_vibe_engine.go with core engine implementation
- Created mistral_vibe_mcp.go for TOML-based MCP configuration
- Created mistral_vibe_logs.go for JSON log parsing
- Registered Mistral Vibe engine in engine registry
- Added comprehensive unit tests
- Marked as experimental engine
- Installation via curl/uv instead of npm
- Uses programmatic mode (-p) for non-interactive execution
- Supports max-turns, custom models, and tool allow-listing

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
- Added mistral-vibe to engine enum in main_workflow_schema.json
- Updated engine registry tests to expect 4 engines
- Fixed test assertions to use testify best practices
- Successfully compiled test workflow with mistral-vibe engine
- Workflow shows correct installation (curl/uv) and execution steps

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Add Mistral Vibe support as coding agent Add Mistral Vibe as experimental coding agent Feb 18, 2026
Copilot AI requested a review from pelikhan February 18, 2026 17:07
@pelikhan
Copy link
Contributor

@copilot add a simple smoke-mistral agentic workflow that does the usual smoke workflow stuff using the 'mistral' engine.

- Created smoke-mistral.md workflow following smoke-codex pattern
- Tests GitHub MCP, Serena MCP, Playwright, bash, and build
- Uses mistral-vibe engine with experimental flag
- Includes safe-outputs for labels, comments, and issue management
- Reaction emoji: rocket (🚀)
- Compiles successfully with only safe-inputs warning

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 18, 2026

@copilot add a simple smoke-mistral agentic workflow that does the usual smoke workflow stuff using the 'mistral' engine.

Added smoke-mistral workflow in commit bb4fed5. The workflow follows the same pattern as smoke-codex and smoke-claude, testing GitHub MCP, Serena MCP, Playwright, bash tools, and build verification using the mistral-vibe engine.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/user
    • Triggering command: /usr/bin/gh gh api user --jq .login (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Contributor

@copilot merge main, recompile

Copilot AI and others added 2 commits February 19, 2026 04:49
…ibe-agent

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
- Merged latest changes from origin/main
- Recompiled all 153 workflows successfully
- Updated smoke-mistral.lock.yml with GH_AW_GROUP_REPORTS flag
- All workflows compile without errors

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 19, 2026

@copilot merge main, recompile

Completed in commits 0809f39 (merge) and f4dc0b5 (recompile). All 153 workflows recompiled successfully including smoke-mistral.md.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha -c=4 -nolocalimports -importcfg /tmp/go-build2204695152/b001/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/cmd/gh-aw/main.go (http block)
  • https://api.github.com/repos/anchore/sbom-action/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha /gh-aw (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/c4e091835c7a94dc7d3acb8ed3ae145afb4995f3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/c4e091835c7a94dc7d3acb8ed3ae145afb4995f3 --jq .object.sha (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Mistral Vibe as coding agent

2 participants

Comments