[PR #9619] feat(cli): add cli model validation #13167

Open
opened 2026-02-16 18:18:02 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/anomalyco/opencode/pull/9619

State: open
Merged: No


Closes #9582

What does this PR do?

Adds early CLI validation for the --model argument that:

  • Validates model format (provider/model)
  • Checks provider & model exist before backend call
  • Shows fuzzy suggestions for typos
  • Exits with code 1 on validation error

How did you verify your code works?

Tested 6 scenarios with compiled executable:

# Test 1: Valid model
opencode run --model "opencode/gpt-5-nano" -> proceeds normally

# Test 2: Empty string
opencode run --model "" -> ✕ model argument cannot be empty\

# Test 3: Whitespace only
opencode run --model "   " -> ✕ model argument cannot be empty

# Test 4: Invalid provider
opencode run --model "opencode-typo/gpt-4" -> Model not found: opencode-typo/gpt-4 
Try: `opencode models` to list available models
Or check your config (opencode.json) provider/model names

# Test 5: Invalid model (typo)
opencode run --model "opencode/claude-sonet-4" -> Model not found: opencode/claude-sonet-4
Did you mean: claude-sonnet-4, claude-sonnet-4-5

# Test 6: No --model flag
opencode run -> proceeds normally with default model
**Original Pull Request:** https://github.com/anomalyco/opencode/pull/9619 **State:** open **Merged:** No --- Closes #9582 ### What does this PR do? Adds early CLI validation for the `--model` argument that: - Validates model format (provider/model) - Checks provider & model exist before backend call - Shows fuzzy suggestions for typos - Exits with code 1 on validation error ### How did you verify your code works? Tested 6 scenarios with compiled executable: ```sh # Test 1: Valid model opencode run --model "opencode/gpt-5-nano" -> proceeds normally # Test 2: Empty string opencode run --model "" -> ✕ model argument cannot be empty\ # Test 3: Whitespace only opencode run --model " " -> ✕ model argument cannot be empty # Test 4: Invalid provider opencode run --model "opencode-typo/gpt-4" -> Model not found: opencode-typo/gpt-4 Try: `opencode models` to list available models Or check your config (opencode.json) provider/model names # Test 5: Invalid model (typo) opencode run --model "opencode/claude-sonet-4" -> Model not found: opencode/claude-sonet-4 Did you mean: claude-sonnet-4, claude-sonnet-4-5 # Test 6: No --model flag opencode run -> proceeds normally with default model ```
yindo added the pull-request label 2026-02-16 18:18:02 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#13167