{"record":{"id":"ccefe8a3bf180b2d","repo":"eyaltoledano/claude-task-master","slug":"warning-configuration-file-not-found-at-provided","errorCode":null,"errorMessage":"Warning: Configuration file not found at provided project root (${explicitRoot}). Using default configuration. Run 'task-master models --setup' to configure.","messagePattern":"Warning: Configuration file not found at provided project root \\((.+?)\\)\\. Using default configuration\\. Run 'task-master models --setup' to configure\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"scripts/modules/config-manager.js","lineNumber":233,"sourceCode":"\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\t`Error reading or parsing ${configPath}: ${error.message}. Using default configuration.`\n\t\t\t\t)\n\t\t\t);\n\t\t\tconfig = { ...defaults }; // Reset to defaults on parse error\n\t\t\tconfigSource = `defaults (parse error at ${configPath})`;\n\t\t}\n\t} else {\n\t\t// Config file doesn't exist at the determined rootToUse.\n\t\t// Skip warnings if:\n\t\t// 1. Global suppress flag is set (during API mode detection)\n\t\t// 2. storageType is explicitly 'api' (remote storage mode - no local config expected)\n\t\tconst shouldWarn = !isConfigWarningSuppressed() && storageType !== 'api';\n\n\t\tif (shouldWarn) {\n\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.`","sourceCodeStart":215,"sourceCodeEnd":251,"githubUrl":"https://github.com/eyaltoledano/claude-task-master/blob/c0c98d367c55296bfe69e65680625b6db437af02/scripts/modules/config-manager.js#L215-L251","documentation":"When loading configuration, Task Master resolves a project root. If an explicit project root was supplied but no config file (config.json or legacy .taskmasterconfig) exists there, it warns that defaults are being used and points the user at 'task-master models --setup'. The warning is suppressed when config warnings are suppressed or storageType is 'api' (remote storage needs no local config).","triggerScenarios":"Calling new ConfigManager(...)/newConfig with an explicitRoot option pointing to a directory that lacks .taskmaster/config.json (and legacy config), while storageType is not 'api' and warnings are not suppressed.","commonSituations":"Passing --project-root pointing at the wrong folder; running in a fresh checkout before initializing; CI scripts referencing a root that was never set up; running from a monorepo subdirectory whose root has no .taskmaster directory.","solutions":["Run 'task-master models --setup' (or 'task-master init') in the intended project root to create the config.","Verify the root path passed via --project-root / ConfigManager options actually contains .taskmaster/config.json.","If using remote API storage intentionally, set storageType to 'api' or suppress the warning to stop it appearing."],"exampleFix":"// before\nexec: `task-master list --project-root ./wrong-dir`\n// after\nexec: `task-master list --project-root /home/me/my-app`","handlingStrategy":"validation","validationCode":"const fs = require('fs');\nconst path = require('path');\nfunction hasConfig(root) {\n  return fs.existsSync(path.join(root, '.taskmaster', 'config.json')) ||\n         fs.existsSync(path.join(root, '.taskmasterconfig'));\n}\nif (!hasConfig(explicitRoot)) {\n  console.error(`No config at ${explicitRoot}; run task-master models --setup first`);\n}","typeGuard":null,"tryCatchPattern":"try {\n  const tm = new ConfigManager({ projectRoot: explicitRoot });\n} catch (e) {\n  // check for missing-config warning and prompt user to run setup\n}","preventionTips":["Initialize every repo with 'task-master init' before running commands.","Double-check --project-root values in scripts/CI for typos.","Use a wrapper that asserts .taskmaster/config.json exists before invoking task-master."],"tags":["config","project-root","setup"],"backgroundTag":"config-file-not-found","analyzedSha":"c0c98d367c55296bfe69e65680625b6db437af02","analyzedAt":"2026-08-29T02:56:26.071Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}