From ee50fb8528fde7b24ec216390b3620a6c89b4557 Mon Sep 17 00:00:00 2001 From: spiceoogway Date: Fri, 30 Jan 2026 01:01:41 -0500 Subject: [PATCH] fix: slug-generator uses configured default model instead of hardcoded Opus Resolves #4315. The slug-generator embedded run was hardcoded to use DEFAULT_MODEL (claude-opus-4-5) regardless of the user's configured agents.defaults.model.primary. This caused unexpected Opus charges on every /new command. Now uses resolveDefaultModelForAgent() to honor the user's configured default model, falling back to DEFAULT_MODEL only when no config exists. --- src/hooks/llm-slug-generator.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/hooks/llm-slug-generator.ts b/src/hooks/llm-slug-generator.ts index c52627176..024262a5d 100644 --- a/src/hooks/llm-slug-generator.ts +++ b/src/hooks/llm-slug-generator.ts @@ -12,6 +12,7 @@ import { resolveAgentWorkspaceDir, resolveAgentDir, } from "../agents/agent-scope.js"; +import { resolveDefaultModelForAgent } from "../agents/model-selection.js"; /** * Generate a short 1-2 word filename slug from session content using LLM @@ -38,6 +39,11 @@ ${params.sessionContent.slice(0, 2000)} Reply with ONLY the slug, nothing else. Examples: "vendor-pitch", "api-design", "bug-fix"`; + // Resolve user's configured default model instead of hardcoded Opus + const { provider, model } = resolveDefaultModelForAgent({ + cfg: params.cfg, + }); + const result = await runEmbeddedPiAgent({ sessionId: `slug-generator-${Date.now()}`, sessionKey: "temp:slug-generator", @@ -46,6 +52,8 @@ Reply with ONLY the slug, nothing else. Examples: "vendor-pitch", "api-design", agentDir, config: params.cfg, prompt, + provider, + model, timeoutMs: 15_000, // 15 second timeout runId: `slug-gen-${Date.now()}`, }); @@ -75,7 +83,10 @@ Reply with ONLY the slug, nothing else. Examples: "vendor-pitch", "api-design", // Clean up temporary session file if (tempSessionFile) { try { - await fs.rm(path.dirname(tempSessionFile), { recursive: true, force: true }); + await fs.rm(path.dirname(tempSessionFile), { + recursive: true, + force: true, + }); } catch { // Ignore cleanup errors }