eyaltoledano/claude-task-master · warning

Warning: Could not generate project tree

Error message

Warning: Could not generate project tree: ${error.message}

What it means

In ContextGatherer._gatherProjectTreeContext, any error while building the ASCII project tree (directory walk failures, permission errors) is caught and downgraded to this console.warn, with { context: null, breakdown: null } returned so callers skip the tree section. It signals the project tree could not be included in gathered context, not that the whole operation failed.

Solutions

  1. Check that the configured project root path exists and is readable.
  2. Fix directory permissions (chmod/chown) or run with a user that can read the tree.
  3. Reduce directory size/scope or raise the file-descriptor limit (ulimit -n) if EMFILE is the cause.
  4. Ignore the warning if the tree is optional; downstream context still works without it.
Defensive patterns

Strategy: fallback

Validate before calling

import fs from 'fs';
if (!fs.existsSync(rootPath) || !fs.statSync(rootPath).isDirectory()) {
  console.warn(`Project tree root invalid: ${rootPath}`);
}

Try / catch

try {
  const tree = generateProjectTree(rootPath);
} catch (err) {
  const tree = null; // proceed without tree section
  console.warn(`Tree generation skipped: ${err.message}`);
}

Prevention

When it happens

Trigger: Calling _gatherProjectTreeContext (via treeContextResult) when the root directory is unreadable, a subdirectory denies permission, the walker throws (e.g. too many open files, ENOENT on a directory vanishing mid-traversal), or tree-generation code throws for any reason.

Common situations: Running in sandboxes/CI containers with restricted read permissions; huge monorepos hitting EMFILE; directories deleted during traversal; misconfigured rootPath pointing at a non-existent directory.

Understand the failure class

Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.

Related errors


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

Appendix: source

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

		try {
			const tree = this._generateFileTree(this.projectRoot, 5); // Max depth 5
			const finalContext = this._formatProjectTreeSection(tree, format);

			const breakdown = includeTokenCounts
				? {
						tokens: this.countTokens(finalContext),
						characters: finalContext.length,
						fileCount: tree.fileCount || 0,
						dirCount: tree.dirCount || 0
					}
				: null;

			return {
				context: finalContext,
				breakdown: breakdown
			};
		} catch (error) {
			console.warn(
				`Warning: Could not generate project tree: ${error.message}`
			);
			return { context: null, breakdown: null };
		}
	}

	/**
	 * Format a single file for context (used for token counting)
	 * @param {Object} fileData - File data object
	 * @param {string} format - Output format
	 * @returns {string} Formatted file context
	 */
	_formatSingleFileForContext(fileData, format) {
		const header = `**File: ${fileData.path}** (${Math.round(fileData.size / 1024)}KB)`;
		const content = `\`\`\`\n${fileData.content}\n\`\`\``;
		return `${header}\n\n${content}`;
	}

View on GitHub (pinned to c0c98d367c)