{"record":{"id":"456e9094867f16d1","repo":"eyaltoledano/claude-task-master","slug":"warning-configuration-file-not-found-at-derived-r","errorCode":null,"errorMessage":"Warning: Configuration file not found at derived root (${rootToUse}). Using defaults.","messagePattern":"Warning: Configuration file not found at derived root \\((.+?)\\)\\. Using defaults\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"scripts/modules/config-manager.js","lineNumber":249,"sourceCode":"\t\t\tif (explicitRoot) {\n\t\t\t\t// Warn about explicit root not having config\n\t\t\t\tconsole.warn(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`Warning: Configuration file not found at provided project root (${explicitRoot}). Using default configuration. Run 'task-master models --setup' to configure.`\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// Don't warn about missing config during initialization\n\t\t\t\t// Only warn if this looks like an existing project (has .taskmaster dir or legacy config marker)\n\t\t\t\tconst hasTaskmasterDir = fs.existsSync(\n\t\t\t\t\tpath.join(rootToUse, TASKMASTER_DIR)\n\t\t\t\t);\n\t\t\t\tconst hasLegacyMarker = fs.existsSync(\n\t\t\t\t\tpath.join(rootToUse, LEGACY_CONFIG_FILE)\n\t\t\t\t);\n\n\t\t\t\tif (hasTaskmasterDir || hasLegacyMarker) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t\t`Warning: Configuration file not found at derived root (${rootToUse}). Using defaults.`\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Keep config as defaults\n\t\tconfig = { ...defaults };\n\t\tconfigSource = `defaults (no config file found at ${rootToUse})`;\n\t}\n\n\treturn config;\n}\n\n/**\n * Gets the current configuration, loading it if necessary.\n * Handles MCP initialization context gracefully.","sourceCodeStart":231,"sourceCodeEnd":267,"githubUrl":"https://github.com/eyaltoledano/claude-task-master/blob/c0c98d367c55296bfe69e65680625b6db437af02/scripts/modules/config-manager.js#L231-L267","documentation":"Similar to the explicit-root warning, but for a derived (auto-detected) root: if the derived directory looks like a Task Master project (contains a .taskmaster directory or legacy .taskmasterconfig marker) but no actual config file is present, Task Master warns it is falling back to defaults. It only fires when project markers exist, avoiding noise for unrelated directories.","triggerScenarios":"findProjectRoot()/root resolution lands on a directory containing .taskmaster/ or a legacy config marker, but .taskmaster/config.json is missing during _loadAndValidateConfig (no explicit root provided, warnings not suppressed, storageType !== 'api').","commonSituations":"Migration created .taskmaster/ but config.json was deleted or gitignored; a partial 'task-master init'; upgrading from the legacy single-file config where the marker file remains but the new config was never created.","solutions":["Create the config with 'task-master models --setup' in that directory.","Restore the missing .taskmaster/config.json (e.g. remove it from .gitignore or recover from git history).","Complete a migration from the legacy config: copy/rename legacy .taskmasterconfig content into .taskmaster/config.json."],"exampleFix":"// before\n.taskmaster/            # exists, but no config.json inside\n// after\n.taskmaster/config.json # created via task-master models --setup","handlingStrategy":"validation","validationCode":"const fs = require('fs');\nconst path = require('path');\nif (fs.existsSync('.taskmaster') && !fs.existsSync(path.join('.taskmaster', 'config.json'))) {\n  console.error('Task Master dir exists but config.json is missing — run task-master models --setup');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never gitignore .taskmaster/config.json (gitignore credentials separately via .env).","After migration or init, verify config.json exists before running other commands.","Regenerate the report/config after cleaning operations that wipe .taskmaster contents."],"tags":["config","project-root","defaults"],"backgroundTag":"config-file-not-found","analyzedSha":"c0c98d367c55296bfe69e65680625b6db437af02","analyzedAt":"2026-08-29T02:56:26.071Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}