eyaltoledano/claude-task-master · warning · TaskMasterError

NOT_IMPLEMENTED

NOT_IMPLEMENTED

Error message

Tag creation is not supported with API storage. Please create briefs through Hamster Studio.

What it means

ApiStorage.createTag unconditionally throws a TaskMasterError with code NOT_IMPLEMENTED because API storage models tags as Hamster briefs, which cannot be created programmatically. Users must create briefs in Hamster Studio (web interface). Any internal flow that tries to create a tag via API storage (saveTasks, saveMetadata, appendTasks, renameTag, copyTag) will hit this.

Solutions

  1. Create the brief in Hamster Studio first, then select it and use it as the tag
  2. Detect NOT_IMPLEMENTED and surface the guidance message to users instead of retrying
  3. Restructure scripts to operate only on existing briefs when using API storage
  4. Use local/file storage if programmatic tag creation is required

Example fix

// before
await storage.createTag('my-brief');
// after
const tags = await storage.listTags();
if (!tags.includes('my-brief')) {
  throw new Error('Create the brief "my-brief" in Hamster Studio first, then re-run');
}
Defensive patterns

Strategy: fallback

Validate before calling

const tags = await storage.listTags();
if (!tags.includes(tagName)) throw new Error(`Brief '${tagName}' must be created in Hamster Studio before use with API storage`);

Type guard

function isNotImplemented(e: unknown): e is TaskMasterError {
  return e instanceof TaskMasterError && e.code === 'NOT_IMPLEMENTED';
}

Try / catch

try {
  await storage.createTag(name);
} catch (e) {
  if (e instanceof TaskMasterError && e.code === 'NOT_IMPLEMENTED') {
    console.warn('Create briefs via Hamster Studio, then re-run with the existing brief selected');
    return;
  }
  throw e;
}

Prevention

When it happens

Trigger: Directly calling storage.createTag(name) on an ApiStorage instance; renameTag/copyTag implementations that create the destination tag; saveMetadata/appendTasks with a tag absent from the cache and absent on the server (createTag fallback path).

Common situations: Porting file-storage workflows that freely create tags to API storage; scripted brief provisioning; copying a tag set from local storage to the API backend.

Related errors


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

Appendix: source

Thrown at packages/tm-core/src/modules/storage/adapters/api-storage.ts:742

		}
	}

	/**
	 * Get all available tags
	 */
	async getAllTags(): Promise<string[]> {
		return this.listTags();
	}

	/**
	 * Create a new tag (brief)
	 * Not supported with API storage - users must create briefs via web interface
	 */
	async createTag(
		tagName: string,
		_options?: { copyFrom?: string; description?: string }
	): Promise<void> {
		throw new TaskMasterError(
			'Tag creation is not supported with API storage. Please create briefs through Hamster Studio.',
			ERROR_CODES.NOT_IMPLEMENTED,
			{ storageType: 'api', operation: 'createTag', tagName }
		);
	}

	/**
	 * Delete all tasks for a tag
	 */
	async deleteTag(tag: string): Promise<void> {
		await this.ensureInitialized();

		try {
			await this.retryOperation(() =>
				this.repository.deleteTag(this.projectId, tag)
			);

			this.tagsCache.delete(tag);

View on GitHub (pinned to c0c98d367c)