diff --git a/agents/__tests__/editor.test.ts b/agents/__tests__/editor.test.ts
index 9e14909f89..5ccdc2da45 100644
--- a/agents/__tests__/editor.test.ts
+++ b/agents/__tests__/editor.test.ts
@@ -62,9 +62,9 @@ describe('editor agent', () => {
expect(gpt5Editor.model).toBe('openai/gpt-5.1')
})
- test('creates glm editor', () => {
- const glmEditor = createCodeEditor({ model: 'glm' })
- expect(glmEditor.model).toBe('z-ai/glm-5.1')
+ test('creates minimax editor', () => {
+ const minimaxEditor = createCodeEditor({ model: 'minimax' })
+ expect(minimaxEditor.model).toBe('minimax/minimax-m2.7')
})
test('gpt-5 editor does not include think tags in instructions', () => {
@@ -73,10 +73,10 @@ describe('editor agent', () => {
expect(gpt5Editor.instructionsPrompt).not.toContain('')
})
- test('glm editor does not include think tags in instructions', () => {
- const glmEditor = createCodeEditor({ model: 'glm' })
- expect(glmEditor.instructionsPrompt).not.toContain('')
- expect(glmEditor.instructionsPrompt).not.toContain('')
+ test('minimax editor does not include think tags in instructions', () => {
+ const minimaxEditor = createCodeEditor({ model: 'minimax' })
+ expect(minimaxEditor.instructionsPrompt).not.toContain('')
+ expect(minimaxEditor.instructionsPrompt).not.toContain('')
})
test('opus editor includes think tags in instructions', () => {
@@ -88,17 +88,17 @@ describe('editor agent', () => {
test('all variants have same base properties', () => {
const opusEditor = createCodeEditor({ model: 'opus' })
const gpt5Editor = createCodeEditor({ model: 'gpt-5' })
- const glmEditor = createCodeEditor({ model: 'glm' })
+ const minimaxEditor = createCodeEditor({ model: 'minimax' })
// All should have same basic structure
expect(opusEditor.displayName).toBe(gpt5Editor.displayName)
- expect(gpt5Editor.displayName).toBe(glmEditor.displayName)
+ expect(gpt5Editor.displayName).toBe(minimaxEditor.displayName)
expect(opusEditor.outputMode).toBe(gpt5Editor.outputMode)
- expect(gpt5Editor.outputMode).toBe(glmEditor.outputMode)
+ expect(gpt5Editor.outputMode).toBe(minimaxEditor.outputMode)
expect(opusEditor.toolNames).toEqual(gpt5Editor.toolNames)
- expect(gpt5Editor.toolNames).toEqual(glmEditor.toolNames)
+ expect(gpt5Editor.toolNames).toEqual(minimaxEditor.toolNames)
})
})
diff --git a/agents/base2/base2.ts b/agents/base2/base2.ts
index 22a58d82a9..cc6f381bc7 100644
--- a/agents/base2/base2.ts
+++ b/agents/base2/base2.ts
@@ -28,7 +28,7 @@ export function createBase2(
return {
publisher,
- model: isFree ? 'z-ai/glm-5.1' : 'anthropic/claude-opus-4.6',
+ model: isFree ? 'minimax/minimax-m2.7' : 'anthropic/claude-opus-4.6',
providerOptions: isFree ? {
data_collection: 'deny',
} : {
diff --git a/agents/editor/editor-lite.ts b/agents/editor/editor-lite.ts
index 29225f0c29..9cb5675b5e 100644
--- a/agents/editor/editor-lite.ts
+++ b/agents/editor/editor-lite.ts
@@ -3,7 +3,7 @@ import { createCodeEditor } from './editor'
import type { AgentDefinition } from '../types/agent-definition'
const definition: AgentDefinition = {
- ...createCodeEditor({ model: 'glm' }),
+ ...createCodeEditor({ model: 'minimax' }),
id: 'editor-lite',
}
export default definition
diff --git a/agents/editor/editor.ts b/agents/editor/editor.ts
index e191609ad2..2fc62d4d27 100644
--- a/agents/editor/editor.ts
+++ b/agents/editor/editor.ts
@@ -4,7 +4,7 @@ import { publisher } from '../constants'
import type { AgentDefinition } from '../types/agent-definition'
export const createCodeEditor = (options: {
- model: 'gpt-5' | 'opus' | 'glm'
+ model: 'gpt-5' | 'opus' | 'minimax'
}): Omit => {
const { model } = options
return {
@@ -12,8 +12,8 @@ export const createCodeEditor = (options: {
model:
options.model === 'gpt-5'
? 'openai/gpt-5.1'
- : options.model === 'glm'
- ? 'z-ai/glm-5.1'
+ : options.model === 'minimax'
+ ? 'minimax/minimax-m2.7'
: 'anthropic/claude-opus-4.6',
...(options.model === 'opus' && {
providerOptions: {
@@ -65,7 +65,7 @@ OR for new files or major rewrites:
}
-${model === 'gpt-5' || model === 'glm'
+${model === 'gpt-5' || model === 'minimax'
? ''
: `Before you start writing your implementation, you should use tags to think about the best way to implement the changes.
diff --git a/agents/librarian/librarian.ts b/agents/librarian/librarian.ts
index 69dd157181..8498648c48 100644
--- a/agents/librarian/librarian.ts
+++ b/agents/librarian/librarian.ts
@@ -9,7 +9,7 @@ const librarian: AgentDefinition = {
id: 'librarian',
publisher,
displayName: 'Librarian',
- model: 'minimax/minimax-m2.5',
+ model: 'minimax/minimax-m2.7',
spawnerPrompt:
'Spawn the librarian agent to shallow-clone a GitHub repository into /tmp and answer questions about its code, structure, or documentation. The agent returns structured output with `answer`, `relevantFiles` (absolute paths in the cloned repo), and `cloneDir`. You can use `run_terminal_command` with `cat` to read the returned `relevantFiles` paths. Clean up `cloneDir` with `rm -rf` when done.',
diff --git a/agents/reviewer/code-reviewer-lite.ts b/agents/reviewer/code-reviewer-lite.ts
index feafb87c45..ee017c24e6 100644
--- a/agents/reviewer/code-reviewer-lite.ts
+++ b/agents/reviewer/code-reviewer-lite.ts
@@ -5,7 +5,7 @@ import { createReviewer } from './code-reviewer'
const definition: SecretAgentDefinition = {
id: 'code-reviewer-lite',
publisher,
- ...createReviewer('z-ai/glm-5.1'),
+ ...createReviewer('minimax/minimax-m2.7'),
}
export default definition
diff --git a/agents/tmux-cli.ts b/agents/tmux-cli.ts
index 3a7877ae6e..a03066dab5 100644
--- a/agents/tmux-cli.ts
+++ b/agents/tmux-cli.ts
@@ -71,7 +71,7 @@ const outputSchema = {
const definition: AgentDefinition = {
id: 'tmux-cli',
displayName: 'Tmux CLI Agent',
- model: 'minimax/minimax-m2.5',
+ model: 'minimax/minimax-m2.7',
// Provider options are tightly coupled to the model choice above.
// If you change the model, update these accordingly.
providerOptions: {
diff --git a/common/src/constants/free-agents.ts b/common/src/constants/free-agents.ts
index 3a9f5c9166..551500f3f5 100644
--- a/common/src/constants/free-agents.ts
+++ b/common/src/constants/free-agents.ts
@@ -18,7 +18,7 @@ export const FREE_COST_MODE = 'free' as const
*/
export const FREE_MODE_AGENT_MODELS: Record> = {
// Root orchestrator
- 'base2-free': new Set(['minimax/minimax-m2.5', 'z-ai/glm-5.1']),
+ 'base2-free': new Set(['minimax/minimax-m2.7', 'z-ai/glm-5.1']),
// File exploration agents
'file-picker': new Set(['google/gemini-2.5-flash-lite']),
@@ -33,10 +33,10 @@ export const FREE_MODE_AGENT_MODELS: Record> = {
'basher': new Set(['google/gemini-3.1-flash-lite-preview']),
// Editor for free mode
- 'editor-lite': new Set(['minimax/minimax-m2.5', 'z-ai/glm-5.1']),
+ 'editor-lite': new Set(['minimax/minimax-m2.7', 'z-ai/glm-5.1']),
// Code reviewer for free mode
- 'code-reviewer-lite': new Set(['minimax/minimax-m2.5', 'z-ai/glm-5.1']),
+ 'code-reviewer-lite': new Set(['minimax/minimax-m2.7', 'z-ai/glm-5.1']),
// Thinker for free mode
'thinker-with-files-gemini': new Set(['google/gemini-3.1-pro-preview']),
@@ -106,7 +106,7 @@ export function isFreeModeAllowedAgentModel(
// Exact match first
if (allowedModels.has(model)) return true
- // OpenRouter may return dated variants (e.g. "minimax/minimax-m2.5-20260211")
+ // OpenRouter may return dated variants (e.g. "minimax/minimax-m2.7-20260211")
// so also check if the returned model starts with any allowed model prefix.
for (const allowed of allowedModels) {
if (model.startsWith(allowed + '-')) return true
diff --git a/evals/buffbench/main-nightly.ts b/evals/buffbench/main-nightly.ts
index df3c6f0ea5..c96685c131 100644
--- a/evals/buffbench/main-nightly.ts
+++ b/evals/buffbench/main-nightly.ts
@@ -17,7 +17,7 @@ async function main() {
const results = await runBuffBench({
evalDataPaths: [ path.join(__dirname, 'eval-codebuff.json')],
agents: ['base2-free'],
- taskConcurrency: 3,
+ taskConcurrency: 6,
saveTraces,
})
diff --git a/evals/buffbench/main.ts b/evals/buffbench/main.ts
index aeb462abe3..471f6e6dbc 100644
--- a/evals/buffbench/main.ts
+++ b/evals/buffbench/main.ts
@@ -11,7 +11,7 @@ async function main() {
await runBuffBench({
evalDataPaths: [path.join(__dirname, 'eval-codebuff.json')],
agents: ['base2-free-evals'],
- taskConcurrency: 5,
+ taskConcurrency: 10,
saveTraces,
})