eyaltoledano/claude-task-master · warning

Warning: Could not load tasks for ContextGatherer: ${error.m

Error message

Warning: Could not load tasks for ContextGatherer: ${error.message}

What it means

ContextGatherer._loadAllTasks reads the tasks file via readJSON and returns [] with this warning if reading or parsing fails. The gatherer then operates with no tasks, so context gathering yields empty results rather than crashing the host command.

Source

Thrown at scripts/modules/utils/contextGatherer.js:42

	constructor(projectRoot, tag) {
		this.projectRoot = projectRoot;
		this.tasksPath = path.join(
			projectRoot,
			'.taskmaster',
			'tasks',
			'tasks.json'
		);
		this.tag = tag;
		this.allTasks = this._loadAllTasks();
	}

	_loadAllTasks() {
		try {
			const data = readJSON(this.tasksPath, this.projectRoot, this.tag);
			const tasks = data?.tasks || [];
			return tasks;
		} catch (error) {
			console.warn(
				`Warning: Could not load tasks for ContextGatherer: ${error.message}`
			);
			return [];
		}
	}

	/**
	 * Count tokens in a text string using gpt-tokens
	 * @param {string} text - Text to count tokens for
	 * @returns {number} Token count
	 */
	countTokens(text) {
		if (!text || typeof text !== 'string') {
			return 0;
		}
		try {
			return encode(text).length;
		} catch (error) {

View on GitHub (pinned to c0c98d367c)

Solutions

  1. Run `task-master init` or create the tasks file if it's missing
  2. Validate/repair JSON syntax in .taskmaster/tasks/tasks.json
  3. Confirm the tag exists (task-master tags) or omit the tag option
  4. Re-run from the actual project root

Example fix

// before
{ "tasks": [ { "id": 1, "title": , } ] }
// after
{ "tasks": [ { "id": 1, "title": "Valid entry" } ] }
Defensive patterns

Strategy: fallback

Validate before calling

import { existsSync } from 'fs';
const tasksPath = '.taskmaster/tasks/tasks.json';
if (!existsSync(tasksPath)) {
  console.error('tasks.json missing — run task-master init before using ContextGatherer');
} else {
  try { JSON.parse(readFileSync(tasksPath, 'utf8')); } catch { console.error('tasks.json is not valid JSON'); }
}

Type guard

function isLoadableTasksFile(data) {
  return data !== null && typeof data === 'object' && Array.isArray(data.tasks);
}

Try / catch

const gatherer = new ContextGatherer(projectRoot, tag);
const tasks = gatherer._loadAllTasks();
if (tasks.length === 0) {
  console.warn('ContextGatherer loaded 0 tasks — check for the load warning above');
}

Prevention

When it happens

Trigger: Constructing a ContextGatherer when readJSON(tasksPath, projectRoot, tag) throws — tasks.json missing, invalid JSON, wrong --tag referenced, or unreadable path.

Common situations: Running context-dependent commands before task-master init; corrupted tasks.json after a crash; passing a tag name that has no data; wrong project root cwd.

Related errors


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