{"record":{"id":"d3acacf929cabec6","repo":"eyaltoledano/claude-task-master","slug":"not-implemented","errorCode":"NOT_IMPLEMENTED","errorMessage":"Tag creation is not supported with API storage. Please create briefs through Hamster Studio.","messagePattern":"Tag creation is not supported with API storage\\. Please create briefs through Hamster Studio\\.","errorType":"error_code","errorClass":"TaskMasterError","httpStatus":null,"severity":"warning","filePath":"packages/tm-core/src/modules/storage/adapters/api-storage.ts","lineNumber":742,"sourceCode":"\t\t}\n\t}\n\n\t/**\n\t * Get all available tags\n\t */\n\tasync getAllTags(): Promise<string[]> {\n\t\treturn this.listTags();\n\t}\n\n\t/**\n\t * Create a new tag (brief)\n\t * Not supported with API storage - users must create briefs via web interface\n\t */\n\tasync createTag(\n\t\ttagName: string,\n\t\t_options?: { copyFrom?: string; description?: string }\n\t): Promise<void> {\n\t\tthrow new TaskMasterError(\n\t\t\t'Tag creation is not supported with API storage. Please create briefs through Hamster Studio.',\n\t\t\tERROR_CODES.NOT_IMPLEMENTED,\n\t\t\t{ storageType: 'api', operation: 'createTag', tagName }\n\t\t);\n\t}\n\n\t/**\n\t * Delete all tasks for a tag\n\t */\n\tasync deleteTag(tag: string): Promise<void> {\n\t\tawait this.ensureInitialized();\n\n\t\ttry {\n\t\t\tawait this.retryOperation(() =>\n\t\t\t\tthis.repository.deleteTag(this.projectId, tag)\n\t\t\t);\n\n\t\t\tthis.tagsCache.delete(tag);","sourceCodeStart":724,"sourceCodeEnd":760,"githubUrl":"https://github.com/eyaltoledano/claude-task-master/blob/c0c98d367c55296bfe69e65680625b6db437af02/packages/tm-core/src/modules/storage/adapters/api-storage.ts#L724-L760","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","solutions":["Create the brief in Hamster Studio first, then select it and use it as the tag","Detect NOT_IMPLEMENTED and surface the guidance message to users instead of retrying","Restructure scripts to operate only on existing briefs when using API storage","Use local/file storage if programmatic tag creation is required"],"exampleFix":"// before\nawait storage.createTag('my-brief');\n// after\nconst tags = await storage.listTags();\nif (!tags.includes('my-brief')) {\n  throw new Error('Create the brief \"my-brief\" in Hamster Studio first, then re-run');\n}","handlingStrategy":"fallback","validationCode":"const tags = await storage.listTags();\nif (!tags.includes(tagName)) throw new Error(`Brief '${tagName}' must be created in Hamster Studio before use with API storage`);","typeGuard":"function isNotImplemented(e: unknown): e is TaskMasterError {\n  return e instanceof TaskMasterError && e.code === 'NOT_IMPLEMENTED';\n}","tryCatchPattern":"try {\n  await storage.createTag(name);\n} catch (e) {\n  if (e instanceof TaskMasterError && e.code === 'NOT_IMPLEMENTED') {\n    console.warn('Create briefs via Hamster Studio, then re-run with the existing brief selected');\n    return;\n  }\n  throw e;\n}","preventionTips":["Never call createTag on ApiStorage; provision briefs in Hamster Studio","Check storage type before running tag-creating workflows","Pre-flight verify the tag exists with listTags before operations that create-on-miss (saveMetadata/appendTasks)","Fall back to file storage if programmatic tag creation is a hard requirement"],"tags":["not-implemented","api","tags","briefs"],"backgroundTag":"api-tag-creation-unsupported","analyzedSha":"c0c98d367c55296bfe69e65680625b6db437af02","analyzedAt":"2026-08-29T02:56:26.071Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}