Skip to content

fix(integrations): drop invalid --model/--output-format flags from Vibe dispatch - #4784

Merged
mnriem merged 1 commit into
github:mainfrom
kartsan03:fix/vibe-dispatch-flags
Sep 29, 2026
Merged

mnriem merged 1 commit into
github:mainfrom
kartsan03:fix/vibe-dispatch-flags

Conversation

@kartsan03

Copy link
Copy Markdown
Contributor

Description

The Mistral Vibe CLI has no --model and no --output-format flag (checked on the latest release, 2.25.8). VibeIntegration inherits SkillsIntegration.build_exec_args(), which appends both, so a dispatched step exits 2 at argument parsing whenever either one ends up in the argv: a workflow step (or workflow default) that sets model:, or output_json=True.

Same shape as the Forge (#4667) and Amp (#4581) fixes:

  • keep -p, Vibe's programmatic mode
  • map output_json to Vibe's own --output json
  • drop model: Vibe has no per-invocation model flag and picks its model from active_model in its config (or VIBE_ACTIVE_MODEL)

Vibe is one of the unverified integrations listed in #2416.

Reproduction on current main with vibe 2.25.8 on PATH (no API key configured) and this workflow in a project initialized with --integration vibe:

schema_version: "1.0"
workflow:
  id: "vibe-model-repro"
  name: "Vibe model repro"
  version: "1.0.0"
steps:
  - id: specify
    command: speckit.specify
    integration: vibe
    model: mistral-medium-latest
    input:
      args: "add a login page"

specify workflow run repro.yml:

vibe: error: unrecognized arguments: --model
Status: failed
Error: Command exited with code 2

With this change the step reaches Vibe itself and stops only at the missing credentials:

Error: Missing MISTRAL_API_KEY environment variable for mistral provider. ...
Status: failed
Error: Command exited with code 1

The JSON flag directly: vibe -p x --output-format json exits 2 with unrecognized arguments: --output-format, while vibe -p x --output json parses.

Testing

  • Tested locally with uv run specify --help

  • Ran existing tests with uv sync && uv run pytest

  • Tested with a sample project (if applicable)

  • New tests in tests/integrations/test_integration_vibe.py: prompt mode, --output json, model dropped, extra args. The last three fail on main and pass with the change.

  • Full suite: 8536 passed, 214 skipped (Linux, Python 3.13)

  • uvx ruff@0.15.0 check src tests: clean

  • Sample project: the workflow above against main and this branch, vibe 2.25.8.

AI Disclosure

  • I did not use AI assistance for this contribution
  • I did use AI assistance (fill in the disclosure below)

AI disclosure: Claude Code (Claude Opus 5.5, max reasoning effort, autonomous agent mode) was used for drafting/refactoring the code change, the regression tests and this description.

…be dispatch

The Mistral Vibe CLI has no --model and no --output-format flag, so the
inherited SkillsIntegration.build_exec_args() made a dispatched step exit
2 at argument parsing whenever a model was configured or JSON output was
requested. Keep -p, map output_json to Vibe's own --output json, and
drop model: Vibe picks its model from active_model in its config.

Assisted-by: Claude Code (model: Claude Opus 5.5, autonomous)
@kartsan03
kartsan03 requested a review from mnriem as a code owner September 29, 2026 11:12
@mnriem mnriem added the triage-nice-to-have Verdict: evidence-backed fix or greenlit feature — land after review label Sep 29, 2026
@mnriem
mnriem requested a balanced review from Copilot September 29, 2026 11:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The implementation matches Vibe 2.25.8’s CLI contract and includes focused positive and negative regression tests.

Review effort: Balanced
Findings: None

What changed in this PR

Corrects Vibe workflow dispatch to use supported CLI flags.

Changes:

  • Maps JSON output to --output json.
  • Drops unsupported per-invocation model flags.
  • Adds regression coverage for prompt mode, JSON output, model omission, and extra arguments.
File Description
src/​specify_cli/​integrations/​vibe/​__init__.py Adds Vibe-specific execution arguments.
tests/​integrations/​test_integration_vibe.py Covers corrected dispatch behavior.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@mnriem
mnriem merged commit 5a046ab into github:main Sep 29, 2026
15 checks passed
@mnriem

mnriem commented Sep 29, 2026

Copy link
Copy Markdown
Collaborator

Thank you!

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

Labels

triage-nice-to-have Verdict: evidence-backed fix or greenlit feature — land after review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants