eyaltoledano/claude-task-master · error · Error
File storage does not support updateTaskWithPrompt. Client-s
Error message
File storage does not support updateTaskWithPrompt. Client-side AI logic must process the prompt before calling updateTask().
What it means
FileStorage is a local-file adapter and deliberately does not implement AI-driven task updating. updateTaskWithPrompt() is an unsupported operation for this backend: the caller (client-side AI logic) must process the prompt itself (e.g. via an AI provider) and then persist the result with the plain updateTask() method.
Source
Thrown at packages/tm-core/src/modules/storage/adapters/file-storage/file-storage.ts:422
...existingTask,
...updates,
...(mergedSubtasks && { subtasks: mergedSubtasks }),
id: String(taskId) // Keep consistent with normalizeTaskIds
};
await this.saveTasks(tasks, tag);
}
/**
* Update task with AI-powered prompt
* For file storage, this should NOT be called - client must handle AI processing first
*/
async updateTaskWithPrompt(
_taskId: string,
_prompt: string,
_tag?: string,
_options?: { useResearch?: boolean; mode?: 'append' | 'update' | 'rewrite' }
): Promise<void> {
throw new Error(
'File storage does not support updateTaskWithPrompt. ' +
'Client-side AI logic must process the prompt before calling updateTask().'
);
}
/**
* Expand task into subtasks with AI-powered generation
* For file storage, this should NOT be called - client must handle AI processing first
*/
async expandTaskWithPrompt(
_taskId: string,
_tag?: string,
_options?: {
numSubtasks?: number;
useResearch?: boolean;
additionalContext?: string;
force?: boolean;
}View on GitHub (pinned to c0c98d367c)
Solutions
- Detect adapter capability before calling, or branch on storage type
- Process the prompt with your AI integration client-side, then call updateTask() with the resulting task data
- Use an AI-enabled storage/API adapter if prompt-driven updates are required
- Wrap the call in a try/catch and fall back to manual updateTask() flow
Example fix
// before
await storage.updateTaskWithPrompt('5', 'add auth tests');
// after
const result = await aiProvider.processTaskPrompt('5', 'add auth tests');
await storage.updateTask('5', result.updatedTask); Defensive patterns
Strategy: fallback
Validate before calling
// Feature-detect prompt support before calling
function supportsPromptUpdate(s: unknown): boolean {
return typeof (s as FileStorage).updateTaskWithPrompt === 'function' &&
!(s instanceof FileStorage); // FileStorage always throws
}
if (!supportsPromptUpdate(storage)) { /* use manual AI + updateTask flow */ } Type guard
function isUnsupportedPromptOpError(e: unknown): e is Error {
return e instanceof Error && e.message.includes('does not support updateTaskWithPrompt');
} Try / catch
try {
await storage.updateTaskWithPrompt(id, prompt);
} catch (e) {
if (isUnsupportedPromptOpError(e)) {
const updated = await aiProvider.processTaskPrompt(id, prompt);
await storage.updateTask(id, updated);
} else throw e;
} Prevention
- Check adapter capabilities before invoking prompt-based APIs
- Centralize AI processing in client-side code, then persist via updateTask()
- Document which storage adapter your flow requires
- Add an integration test that exercises your update flow against FileStorage
When it happens
Trigger: Calling storage.updateTaskWithPrompt() on a FileStorage adapter instance, e.g. an app configured with file storage but invoking the AI-prompt API surface unconditionally, or code written against an API-backed storage adapter being reused with the file adapter.
Common situations: Switching storage backends from an API/AI-enabled adapter to local file storage without changing the update flow, or generic storage-agnostic code paths that call prompt-based methods without feature detection.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- File storage does not support expandTaskWithPrompt. Client-s
- NoSuchModelError (textEmbeddingModel, modelId: ${modelId})
- NoSuchModelError (imageModel, modelId: ${modelId})
- Task ID is required
- Task title is required
AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29).
Data as JSON: /api/errors/4ab728ddaec67382.
Report an issue: GitHub.