{"record":{"id":"198b28eb3d11a362","repo":"eyaltoledano/claude-task-master","slug":"warning-invalid-research-provider-config-model","errorCode":null,"errorMessage":"Warning: Invalid research provider \"${config.models.research.provider}\" in ${configPath}. Falling back to default.","messagePattern":"Warning: Invalid research provider \"(.+?)\" in (.+?)\\. Falling back to default\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"scripts/modules/config-manager.js","lineNumber":188,"sourceCode":"\t\t\t\tconsole.warn(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`⚠️  DEPRECATION WARNING: Found configuration in legacy location '${configPath}'. Please migrate to .taskmaster/config.json. Run 'task-master migrate' to automatically migrate your project.`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// --- Validation (Warn if file content is invalid) ---\n\t\t\t// Use log.warn for consistency\n\t\t\tif (!validateProvider(config.models.main.provider)) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`Warning: Invalid main provider \"${config.models.main.provider}\" in ${configPath}. Falling back to default.`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconfig.models.main = { ...defaults.models.main };\n\t\t\t}\n\t\t\tif (!validateProvider(config.models.research.provider)) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`Warning: Invalid research provider \"${config.models.research.provider}\" in ${configPath}. Falling back to default.`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconfig.models.research = { ...defaults.models.research };\n\t\t\t}\n\t\t\tif (\n\t\t\t\tconfig.models.fallback?.provider &&\n\t\t\t\t!validateProvider(config.models.fallback.provider)\n\t\t\t) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`Warning: Invalid fallback provider \"${config.models.fallback.provider}\" in ${configPath}. Fallback model configuration will be ignored.`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconfig.models.fallback.provider = undefined;\n\t\t\t\tconfig.models.fallback.modelId = undefined;\n\t\t\t}","sourceCodeStart":170,"sourceCodeEnd":206,"githubUrl":"https://github.com/eyaltoledano/claude-task-master/blob/c0c98d367c55296bfe69e65680625b6db437af02/scripts/modules/config-manager.js#L170-L206","documentation":"Same validation as the main provider, applied to models.research.provider. An unrecognized research provider triggers a warning and config.models.research is reset to defaults for the session.","triggerScenarios":"A .taskmaster/config.json where models.research.provider is misspelled, empty, or unsupported, loaded by newConfig()/_loadAndValidateConfig.","commonSituations":"Manual edits to the research model section; stale configs after provider renames; copy-paste from old docs.","solutions":["Correct models.research.provider to a valid value or use `task-master models --set-research <model>`","Run `task-master models` to list valid providers","Delete/restore the config file to regenerate valid defaults","Upgrade task-master if the provider is newly supported"],"exampleFix":"// before (.taskmaster/config.json)\n\"models\": { \"research\": { \"provider\": \"anthropic-cli\", \"modelId\": \"claude-opus-4\" } }\n// after\n\"models\": { \"research\": { \"provider\": \"anthropic\", \"modelId\": \"claude-opus-4\" } }","handlingStrategy":"validation","validationCode":"import fs from 'fs';\nconst VALID_PROVIDERS = ['openai','anthropic','google','perplexity','ollama','openrouter','groq','zai'];\nconst cfg = JSON.parse(fs.readFileSync('.taskmaster/config.json','utf8'));\nif (!VALID_PROVIDERS.includes(cfg.models?.research?.provider)) {\n  console.warn('Invalid research provider; fix before running task-master');\n}","typeGuard":"const isValidResearchProvider = (cfg) =>\n  typeof cfg?.models?.research?.provider === 'string' && cfg.models.research.provider.length > 0;","tryCatchPattern":"try {\n  const config = loadConfig();\n} catch (e) {\n  console.error('Config invalid, regenerating defaults:', e.message);\n  resetToDefaultConfig();\n}","preventionTips":["Set the research model via `task-master models --set-research` rather than manual edits","Mirror validation for both main and research sections in CI checks","Restore from version-controlled config after merge conflicts","Confirm provider names against current task-master version"],"tags":["configuration","validation","provider","fallback-to-default"],"backgroundTag":"invalid-config-value","analyzedSha":"c0c98d367c55296bfe69e65680625b6db437af02","analyzedAt":"2026-08-29T02:56:26.071Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}