eyaltoledano/claude-task-master · warning

Warning: Configuration file not found at provided project ro

Error message

Warning: Configuration file not found at provided project root (${explicitRoot}). Using default configuration. Run 'task-master models --setup' to configure.

What it means

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).

Source

Thrown at scripts/modules/config-manager.js:233

			console.error(
				chalk.red(
					`Error reading or parsing ${configPath}: ${error.message}. Using default configuration.`
				)
			);
			config = { ...defaults }; // Reset to defaults on parse error
			configSource = `defaults (parse error at ${configPath})`;
		}
	} else {
		// Config file doesn't exist at the determined rootToUse.
		// Skip warnings if:
		// 1. Global suppress flag is set (during API mode detection)
		// 2. storageType is explicitly 'api' (remote storage mode - no local config expected)
		const shouldWarn = !isConfigWarningSuppressed() && storageType !== 'api';

		if (shouldWarn) {
			if (explicitRoot) {
				// Warn about explicit root not having config
				console.warn(
					chalk.yellow(
						`Warning: Configuration file not found at provided project root (${explicitRoot}). Using default configuration. Run 'task-master models --setup' to configure.`
					)
				);
			} else {
				// Don't warn about missing config during initialization
				// Only warn if this looks like an existing project (has .taskmaster dir or legacy config marker)
				const hasTaskmasterDir = fs.existsSync(
					path.join(rootToUse, TASKMASTER_DIR)
				);
				const hasLegacyMarker = fs.existsSync(
					path.join(rootToUse, LEGACY_CONFIG_FILE)
				);

				if (hasTaskmasterDir || hasLegacyMarker) {
					console.warn(
						chalk.yellow(
							`Warning: Configuration file not found at derived root (${rootToUse}). Using defaults.`

View on GitHub (pinned to c0c98d367c)

Solutions

  1. Run 'task-master models --setup' (or 'task-master init') in the intended project root to create the config.
  2. Verify the root path passed via --project-root / ConfigManager options actually contains .taskmaster/config.json.
  3. If using remote API storage intentionally, set storageType to 'api' or suppress the warning to stop it appearing.

Example fix

// before
exec: `task-master list --project-root ./wrong-dir`
// after
exec: `task-master list --project-root /home/me/my-app`
Defensive patterns

Strategy: validation

Validate before calling

const fs = require('fs');
const path = require('path');
function hasConfig(root) {
  return fs.existsSync(path.join(root, '.taskmaster', 'config.json')) ||
         fs.existsSync(path.join(root, '.taskmasterconfig'));
}
if (!hasConfig(explicitRoot)) {
  console.error(`No config at ${explicitRoot}; run task-master models --setup first`);
}

Try / catch

try {
  const tm = new ConfigManager({ projectRoot: explicitRoot });
} catch (e) {
  // check for missing-config warning and prompt user to run setup
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29). Data as JSON: /api/errors/ccefe8a3bf180b2d. Report an issue: GitHub.