From 35d7e46cd80fd303d4af14e9d95e1e41f4d58520 Mon Sep 17 00:00:00 2001 From: Ayush Ojha Date: Fri, 30 Jan 2026 01:24:13 -0800 Subject: [PATCH] fix: return clear error when compacting CLI provider sessions CLI providers (claude-cli, codex-cli, custom backends) don't have models in the standard registry, so compaction fails with a confusing "Unknown model" error. Add an early isCliProvider() check to return a clear message explaining compaction isn't supported for CLI providers. Fixes #3874 Co-Authored-By: Ayush Ojha --- src/agents/pi-embedded-runner/compact.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/agents/pi-embedded-runner/compact.ts b/src/agents/pi-embedded-runner/compact.ts index 2dc4c5325..0665f87df 100644 --- a/src/agents/pi-embedded-runner/compact.ts +++ b/src/agents/pi-embedded-runner/compact.ts @@ -28,6 +28,7 @@ import { makeBootstrapWarn, resolveBootstrapContextForRun } from "../bootstrap-f import { resolveOpenClawDocsPath } from "../docs-path.js"; import type { ExecElevatedDefaults } from "../bash-tools.js"; import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "../defaults.js"; +import { isCliProvider } from "../model-selection.js"; import { getApiKeyForModel, resolveModelAuthMode } from "../model-auth.js"; import { ensureOpenClawModelsJson } from "../models-config.js"; import { @@ -114,6 +115,15 @@ export async function compactEmbeddedPiSessionDirect( const provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER; const modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL; + + if (isCliProvider(provider, params.config)) { + return { + ok: false, + compacted: false, + reason: `Compaction is not supported for CLI providers (${provider}/${modelId}). Switch to an API-based model to use /compact.`, + }; + } + const agentDir = params.agentDir ?? resolveOpenClawAgentDir(); await ensureOpenClawModelsJson(params.config, agentDir); const { model, error, authStorage, modelRegistry } = resolveModel(