MiniMax: the model is MiniMax-M3.1-Flash (out of preview)

The API now answers MiniMax-M3.1-Flash-Preview as MiniMax-M3.1-Flash, and
accepts the new name directly. Verified 2026-11-03: a live call returns
"ok" with a 1M context window. Claude Code 2.1.317 prints an
unrecognized_model warning for either name; the session still runs.

Claude-Session: https://claude.ai/code/session_01CLUCNYsiEaER1CMqw5WqfY
This commit is contained in:
Paul O'Reilly
2026-11-03 21:15:16 +13:00
parent d8abe45ea5
commit b51d192a95
14 changed files with 15 additions and 15 deletions

View File

@@ -46,7 +46,7 @@ while [[ $# -gt 0 ]]; do
*) echo "error: unknown argument '$1'" >&2; usage >&2; exit 1 ;; *) echo "error: unknown argument '$1'" >&2; usage >&2; exit 1 ;;
esac esac
done done
if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3[1m]"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash-Preview"; EFFORT="${EFFORT_ARG:-low}"; fi if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3[1m]"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash"; EFFORT="${EFFORT_ARG:-low}"; fi
[[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { echo "error: --effort must be low|medium|high|xhigh|max" >&2; exit 1; } [[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { echo "error: --effort must be low|medium|high|xhigh|max" >&2; exit 1; }
# --- CT-1 preflight ----------------------------------------------------------- # --- CT-1 preflight -----------------------------------------------------------

View File

@@ -46,7 +46,7 @@ while [[ $# -gt 0 ]]; do
*) echo "error: unknown argument '$1'" >&2; usage >&2; exit 1 ;; *) echo "error: unknown argument '$1'" >&2; usage >&2; exit 1 ;;
esac esac
done done
if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash-Preview"; EFFORT="${EFFORT_ARG:-medium}"; fi if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash"; EFFORT="${EFFORT_ARG:-medium}"; fi
[[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { echo "error: --effort must be low|medium|high|xhigh|max" >&2; exit 1; } [[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { echo "error: --effort must be low|medium|high|xhigh|max" >&2; exit 1; }
[[ ${#ROOTS[@]} -gt 0 ]] || { echo "error: at least one --root required" >&2; exit 1; } [[ ${#ROOTS[@]} -gt 0 ]] || { echo "error: at least one --root required" >&2; exit 1; }

View File

@@ -33,7 +33,7 @@ Options:
--docs all|recent|none Which item documents to bundle (default: recent) --docs all|recent|none Which item documents to bundle (default: recent)
--tools "<list>" Extra --allowedTools entries (comma-separated) --tools "<list>" Extra --allowedTools entries (comma-separated)
--timeout <secs> Sub-session timeout (default: 1800) --timeout <secs> Sub-session timeout (default: 1800)
--m3 Use MiniMax-M3[1m] instead of the default MiniMax-M3.1-Flash-Preview --m3 Use MiniMax-M3[1m] instead of the default MiniMax-M3.1-Flash
--effort <level> Thinking depth low|medium|high|xhigh|max (default: max; --effort <level> Thinking depth low|medium|high|xhigh|max (default: max;
not sent with --m3 unless given) not sent with --m3 unless given)
--gate "<command>" Re-run this command in the worktree yourself, after --gate "<command>" Re-run this command in the worktree yourself, after
@@ -105,7 +105,7 @@ while [[ $# -gt 0 ]]; do
esac esac
done done
if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3[1m]"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash-Preview"; EFFORT="${EFFORT_ARG:-max}"; fi if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3[1m]"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash"; EFFORT="${EFFORT_ARG:-max}"; fi
[[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { err "--effort must be low|medium|high|xhigh|max"; exit 1; } [[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { err "--effort must be low|medium|high|xhigh|max"; exit 1; }
case "$DOCS" in all|recent|none) ;; *) err "--docs must be all|recent|none"; exit 1 ;; esac case "$DOCS" in all|recent|none) ;; *) err "--docs must be all|recent|none"; exit 1 ;; esac

View File

@@ -259,7 +259,7 @@ cmd_launch() {
*) die "unknown option: $1" 2 ;; *) die "unknown option: $1" 2 ;;
esac esac
done done
if [[ $use_m3 -eq 1 ]]; then model="MiniMax-M3"; effort="$effort_arg"; else model="MiniMax-M3.1-Flash-Preview"; effort="${effort_arg:-max}"; fi if [[ $use_m3 -eq 1 ]]; then model="MiniMax-M3"; effort="$effort_arg"; else model="MiniMax-M3.1-Flash"; effort="${effort_arg:-max}"; fi
[[ -z "$effort" || "$effort" =~ ^(low|medium|high|xhigh|max)$ ]] || die "--effort must be low|medium|high|xhigh|max" 2 [[ -z "$effort" || "$effort" =~ ^(low|medium|high|xhigh|max)$ ]] || die "--effort must be low|medium|high|xhigh|max" 2
[[ " $KINDS " == *" $kind "* ]] || die "--kind must be one of: $KINDS" 2 [[ " $KINDS " == *" $kind "* ]] || die "--kind must be one of: $KINDS" 2
[[ "$name" =~ ^[A-Za-z0-9._-]+$ ]] || die "--name must match ^[A-Za-z0-9._-]+\$" 2 [[ "$name" =~ ^[A-Za-z0-9._-]+$ ]] || die "--name must match ^[A-Za-z0-9._-]+\$" 2

View File

@@ -47,7 +47,7 @@ while [[ $# -gt 0 ]]; do
*) echo "error: unknown argument '$1'" >&2; usage >&2; exit 1 ;; *) echo "error: unknown argument '$1'" >&2; usage >&2; exit 1 ;;
esac esac
done done
if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3[1m]"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash-Preview"; EFFORT="${EFFORT_ARG:-max}"; fi if [[ $USE_M3 -eq 1 ]]; then MODEL="MiniMax-M3[1m]"; EFFORT="$EFFORT_ARG"; else MODEL="MiniMax-M3.1-Flash"; EFFORT="${EFFORT_ARG:-max}"; fi
[[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { echo "error: --effort must be low|medium|high|xhigh|max" >&2; exit 1; } [[ -z "$EFFORT" || "$EFFORT" =~ ^(low|medium|high|xhigh|max)$ ]] || { echo "error: --effort must be low|medium|high|xhigh|max" >&2; exit 1; }
# --- RM-1 preflight ----------------------------------------------------------- # --- RM-1 preflight -----------------------------------------------------------

View File

@@ -20,7 +20,7 @@ ci-triage-minimax-run --repo <owner/repo> --run <N> [--job <name|id>] \
| `--tail` | 2000 | Log lines fetched (gac `--tail`) | | `--tail` | 2000 | Log lines fetched (gac `--tail`) |
| `--max-turns` | 25 | Sub-session turn cap | | `--max-turns` | 25 | Sub-session turn cap |
| `--timeout` | 300 | Internal timeout (logs-only task; well under the harness Bash 600s cap) | | `--timeout` | 300 | Internal timeout (logs-only task; well under the harness Bash 600s cap) |
| `--m3` | off | Use `MiniMax-M3[1m]` instead of the default `MiniMax-M3.1-Flash-Preview` (1M window natively, always thinks). No effort is sent unless `--effort` is given. | | `--m3` | off | Use `MiniMax-M3[1m]` instead of the default `MiniMax-M3.1-Flash` (1M window natively, always thinks). No effort is sent unless `--effort` is given. |
| `--effort <level>` | `low` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. | | `--effort <level>` | `low` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. |
| `--dryrun`, `-n` | off | Print resolved config, the gac command, the full prompt, and the sub-session command line; invoke neither gac's log fetch nor the sub-session | | `--dryrun`, `-n` | off | Print resolved config, the gac command, the full prompt, and the sub-session command line; invoke neither gac's log fetch nor the sub-session |

View File

@@ -20,7 +20,7 @@ explore-minimax-run --root <path> [--root <path> ...] \
| `--breadth` | `medium` | `medium` (stop when confidently answered) or `very-thorough` (full sweep, alternate naming conventions) | | `--breadth` | `medium` | `medium` (stop when confidently answered) or `very-thorough` (full sweep, alternate naming conventions) |
| `--max-turns` | 40 | Sub-session turn cap | | `--max-turns` | 40 | Sub-session turn cap |
| `--timeout` | 540 | Internal timeout in seconds (keeps callers under the harness Bash 600s cap) | | `--timeout` | 540 | Internal timeout in seconds (keeps callers under the harness Bash 600s cap) |
| `--m3` | off | Use `MiniMax-M3` instead of the default `MiniMax-M3.1-Flash-Preview` (1M window natively, always thinks). No effort is sent unless `--effort` is given. | | `--m3` | off | Use `MiniMax-M3` instead of the default `MiniMax-M3.1-Flash` (1M window natively, always thinks). No effort is sent unless `--effort` is given. |
| `--effort <level>` | `medium` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. | | `--effort <level>` | `medium` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. |
## Behaviour / requirements ## Behaviour / requirements

View File

@@ -26,7 +26,7 @@ mm-worktree-task <item-uuid> [OPTIONS]
| `--docs all\|recent\|none` | `recent` | Which item documents to bundle. `recent` = documents updated in the last 14 days; falls back to `all` if the CLI does not expose update dates. The full list of document names is always included in the prompt regardless of which are bundled. | | `--docs all\|recent\|none` | `recent` | Which item documents to bundle. `recent` = documents updated in the last 14 days; falls back to `all` if the CLI does not expose update dates. The full list of document names is always included in the prompt regardless of which are bundled. |
| `--tools "<list>"` | — | Extra `--allowedTools` entries merged into the default allowlist (comma-separated). | | `--tools "<list>"` | — | Extra `--allowedTools` entries merged into the default allowlist (comma-separated). |
| `--timeout <secs>` | `1800` | Max seconds the sub-session may run (`timeout <secs>` wrapper). | | `--timeout <secs>` | `1800` | Max seconds the sub-session may run (`timeout <secs>` wrapper). |
| `--m3` | off | Use `MiniMax-M3[1m]` instead of the default `MiniMax-M3.1-Flash-Preview` (1M window natively, always thinks). No effort is sent unless `--effort` is given. | | `--m3` | off | Use `MiniMax-M3[1m]` instead of the default `MiniMax-M3.1-Flash` (1M window natively, always thinks). No effort is sent unless `--effort` is given. |
| `--effort <level>` | `max` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. | | `--effort <level>` | `max` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. |
| `--gate "<command>"` | — | Supervisor gate: after the sub-session exits, `mm-worktree-task` itself re-runs this command in the worktree against the sub-session's LAST commit and appends a `## Supervisor gate` section to the result file (see Behaviour §8). Never trust the agent's own "tests pass" claim — this re-run is the check. | | `--gate "<command>"` | — | Supervisor gate: after the sub-session exits, `mm-worktree-task` itself re-runs this command in the worktree against the sub-session's LAST commit and appends a `## Supervisor gate` section to the result file (see Behaviour §8). Never trust the agent's own "tests pass" claim — this re-run is the check. |
| `--gate-timeout <secs>` | `900` | Max seconds `--gate`'s command may run before it is killed and recorded as a timed-out (failed) gate. | | `--gate-timeout <secs>` | `900` | Max seconds `--gate`'s command may run before it is killed and recorded as a timed-out (failed) gate. |

View File

@@ -35,7 +35,7 @@ review-loop-run --help
| `--prev` | auto | Explicit previous-round result file (overrides the auto lookup). | | `--prev` | auto | Explicit previous-round result file (overrides the auto lookup). |
| `--tools` | kind default | Extra `--allowedTools` entries (comma-separated). | | `--tools` | kind default | Extra `--allowedTools` entries (comma-separated). |
| `--timeout` | 1500 | Seconds before the sub-session is killed. | | `--timeout` | 1500 | Seconds before the sub-session is killed. |
| `--m3` | off | Use `MiniMax-M3` instead of the default `MiniMax-M3.1-Flash-Preview` (1M window natively, always thinks). No effort is sent unless `--effort` is given. | | `--m3` | off | Use `MiniMax-M3` instead of the default `MiniMax-M3.1-Flash` (1M window natively, always thinks). No effort is sent unless `--effort` is given. |
| `--effort <level>` | `max` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. | | `--effort <level>` | `max` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. |
| `--project` | current repo root | Repo to `cd` into before launching. | | `--project` | current repo root | Repo to `cd` into before launching. |
| `--dryrun`, `-n` | off | Print the assembled prompt and the exact launch command; write nothing; launch nothing. | | `--dryrun`, `-n` | off | Print the assembled prompt and the exact launch command; write nothing; launch nothing. |

View File

@@ -21,7 +21,7 @@ review-minimax-run --worktree <path> [--base <ref>] [--out <findings-file>] \
| `--max-diff-lines` | 6000 | Diff budget; larger diffs exit 1 with the count | | `--max-diff-lines` | 6000 | Diff budget; larger diffs exit 1 with the count |
| `--max-turns` | 40 | Sub-session turn cap | | `--max-turns` | 40 | Sub-session turn cap |
| `--timeout` | 540 | Internal timeout (keeps callers under the harness Bash 600s cap). Why: a longer run invoked synchronously from a skill is killed by the harness with no findings file. | | `--timeout` | 540 | Internal timeout (keeps callers under the harness Bash 600s cap). Why: a longer run invoked synchronously from a skill is killed by the harness with no findings file. |
| `--m3` | off | Use `MiniMax-M3[1m]` instead of the default `MiniMax-M3.1-Flash-Preview` (1M window natively, always thinks). No effort is sent unless `--effort` is given. | | `--m3` | off | Use `MiniMax-M3[1m]` instead of the default `MiniMax-M3.1-Flash` (1M window natively, always thinks). No effort is sent unless `--effort` is given. |
| `--effort <level>` | `max` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. | | `--effort <level>` | `max` | Thinking depth `low\|medium\|high\|xhigh\|max`, passed to `ask-minimax-run --effort`. Any other value exits 1. |
| `--dryrun`, `-n` | off | Print resolved config, materialised-input plan, full prompt, and the exact sub-session command line; create/invoke nothing beyond the scratch dir | | `--dryrun`, `-n` | off | Print resolved config, materialised-input plan, full prompt, and the exact sub-session command line; create/invoke nothing beyond the scratch dir |

View File

@@ -80,7 +80,7 @@ echo "== dryrun =="
DRY_OUT="$("$SCRIPT" --repo skynet/gac-scratch --run 42 --dryrun 2>&1)" DRY_OUT="$("$SCRIPT" --repo skynet/gac-scratch --run 42 --dryrun 2>&1)"
assert_eq "dryrun exits 0" 0 $? assert_eq "dryrun exits 0" 0 $?
assert_contains "dryrun shows gac command" "inspect skynet/gac-scratch --run 42" "$DRY_OUT" assert_contains "dryrun shows gac command" "inspect skynet/gac-scratch --run 42" "$DRY_OUT"
assert_contains "dryrun defaults to Flash" "MiniMax-M3.1-Flash-Preview" "$DRY_OUT" assert_contains "dryrun defaults to Flash" "MiniMax-M3.1-Flash" "$DRY_OUT"
assert_contains "dryrun default effort low" "--effort low" "$DRY_OUT" assert_contains "dryrun default effort low" "--effort low" "$DRY_OUT"
assert_contains "dryrun defers fetch" "not fetched in dryrun" "$DRY_OUT" assert_contains "dryrun defers fetch" "not fetched in dryrun" "$DRY_OUT"
assert_contains "dryrun shows job passthrough default" "job: auto" "$DRY_OUT" assert_contains "dryrun shows job passthrough default" "job: auto" "$DRY_OUT"

View File

@@ -83,7 +83,7 @@ assert_contains "dryrun shows worktree path" ".claude/worktrees/mm-testslug" "$D
assert_contains "dryrun shows branch name" "mm/testslug" "$DRY_OUT" assert_contains "dryrun shows branch name" "mm/testslug" "$DRY_OUT"
assert_contains "dryrun shows bundle path" "testslug-bundle.md" "$DRY_OUT" assert_contains "dryrun shows bundle path" "testslug-bundle.md" "$DRY_OUT"
assert_contains "dryrun shows the ask-minimax-run command" "ask-minimax-run" "$DRY_OUT" assert_contains "dryrun shows the ask-minimax-run command" "ask-minimax-run" "$DRY_OUT"
assert_contains "dryrun command defaults to Flash model" 'MiniMax-M3.1-Flash-Preview' "$DRY_OUT" assert_contains "dryrun command defaults to Flash model" 'MiniMax-M3.1-Flash' "$DRY_OUT"
assert_contains "dryrun default effort max" "--effort max" "$DRY_OUT" assert_contains "dryrun default effort max" "--effort max" "$DRY_OUT"
M3_OUT="$("$SCRIPT" "$TEST_UUID" --slug testslug --m3 --dryrun 2>&1)" M3_OUT="$("$SCRIPT" "$TEST_UUID" --slug testslug --m3 --dryrun 2>&1)"
assert_eq "m3 dryrun exits 0" "0" "$?" assert_eq "m3 dryrun exits 0" "0" "$?"

View File

@@ -19,7 +19,7 @@ assert_contains "dryrun banner" "[dryrun]" "$out"
assert_contains "nothing launched" "nothing launched" "$out" assert_contains "nothing launched" "nothing launched" "$out"
assert_contains "task text is the spec template" "OUT OF SCOPE: reporting that a symbol" "$out" assert_contains "task text is the spec template" "OUT OF SCOPE: reporting that a symbol" "$out"
assert_contains "context included" "Context: closes bug 1234" "$out" assert_contains "context included" "Context: closes bug 1234" "$out"
assert_contains "defaults to Flash" "--model MiniMax-M3.1-Flash-Preview --effort max" "$out" assert_contains "defaults to Flash" "--model MiniMax-M3.1-Flash --effort max" "$out"
out_m3=$("$SCRIPT" launch --kind spec --name spec-Y --file "$TMP/spec.diff" --m3 -n 2>&1) out_m3=$("$SCRIPT" launch --kind spec --name spec-Y --file "$TMP/spec.diff" --m3 -n 2>&1)
assert_contains "--m3 uses M3 with no effort" "--model MiniMax-M3 --allowedTools" "$out_m3" assert_contains "--m3 uses M3 with no effort" "--model MiniMax-M3 --allowedTools" "$out_m3"
assert_contains "output path uses tag" "spec-X-r1-result.md" "$out" assert_contains "output path uses tag" "spec-X-r1-result.md" "$out"

View File

@@ -78,7 +78,7 @@ echo "== dryrun =="
DRY_OUT="$("$SCRIPT" --worktree "$REPO" --dryrun 2>&1)" DRY_OUT="$("$SCRIPT" --worktree "$REPO" --dryrun 2>&1)"
assert_eq "dryrun exits 0" 0 $? assert_eq "dryrun exits 0" 0 $?
assert_contains "dryrun shows branch" "branch: feature" "$DRY_OUT" assert_contains "dryrun shows branch" "branch: feature" "$DRY_OUT"
assert_contains "dryrun defaults to Flash" "MiniMax-M3.1-Flash-Preview" "$DRY_OUT" assert_contains "dryrun defaults to Flash" "MiniMax-M3.1-Flash" "$DRY_OUT"
assert_contains "dryrun default effort max" "--effort max" "$DRY_OUT" assert_contains "dryrun default effort max" "--effort max" "$DRY_OUT"
M3_OUT="$("$SCRIPT" --worktree "$REPO" --m3 --dryrun 2>&1)" M3_OUT="$("$SCRIPT" --worktree "$REPO" --m3 --dryrun 2>&1)"
assert_eq "m3 dryrun exits 0" 0 $? assert_eq "m3 dryrun exits 0" 0 $?