Summary
Two related bugs prevent using non-Claude providers for spec generation:
/create endpoint ignores settingsService - User's configured specGenerationModel is ignored, always defaults to Claude opus
- Structured output assumed for non-Cursor models - Code only checks
isCursorModel() but doesn't account for OpenCode, Codex, or other providers
Steps to Reproduce
- Go to Settings > Model Defaults
- Set "Spec Generation Model" to a non-Claude model (e.g.,
opencode/glm-4.7-free)
- Go to Spec Editor and create a new spec
- Bug 1: Error: "Claude CLI is disconnected from the app" (even though Claude isn't configured)
- After fixing Bug 1 manually, Bug 2: Error: "Failed to generate spec: No valid XML structure found in response"
Root Cause
Bug 1: Missing settingsService in /create endpoint
File: apps/server/src/routes/app-spec/routes/create.ts
// Line 19 - missing settingsService parameter
export function createCreateHandler(events: EventEmitter) {
File: apps/server/src/routes/app-spec/index.ts
// Line 20 - settingsService not passed
router.post('/create', createCreateHandler(events));
Bug 2: Incorrect structured output detection
File: apps/server/src/routes/app-spec/generate-spec.ts
// Line 111 - only checks for Cursor, not other non-Claude providers
const useStructuredOutput = !isCursorModel(model);
Should be:
const useStructuredOutput = isClaudeModel(model);
Suggested Fix
Bug 1:
- export function createCreateHandler(events: EventEmitter) {
+ export function createCreateHandler(events: EventEmitter, settingsService?: SettingsService) {
And pass settingsService to generateSpec() call and in index.ts.
Bug 2:
- import { DEFAULT_PHASE_MODELS, isCursorModel } from '@automaker/types';
+ import { DEFAULT_PHASE_MODELS, isClaudeModel } from '@automaker/types';
- const useStructuredOutput = !isCursorModel(model);
+ const useStructuredOutput = isClaudeModel(model);
Environment
- Automaker version: 0.11.0
- Node version: v24.12.0
- OS: Linux
Impact
Users cannot use non-Claude providers (OpenCode, Codex, etc.) for spec generation, even when explicitly configured in settings.
Summary
Two related bugs prevent using non-Claude providers for spec generation:
/createendpoint ignoressettingsService- User's configuredspecGenerationModelis ignored, always defaults to ClaudeopusisCursorModel()but doesn't account for OpenCode, Codex, or other providersSteps to Reproduce
opencode/glm-4.7-free)Root Cause
Bug 1: Missing
settingsServicein/createendpointFile:
apps/server/src/routes/app-spec/routes/create.tsFile:
apps/server/src/routes/app-spec/index.tsBug 2: Incorrect structured output detection
File:
apps/server/src/routes/app-spec/generate-spec.tsShould be:
Suggested Fix
Bug 1:
And pass
settingsServicetogenerateSpec()call and in index.ts.Bug 2:
Environment
Impact
Users cannot use non-Claude providers (OpenCode, Codex, etc.) for spec generation, even when explicitly configured in settings.