eyaltoledano/claude-task-master · error · Error

Remote tag creation failed

Error message

Remote tag creation failed

What it means

createTag first delegates to a remote (API-backed) tag bridge. If the bridge returns a result with success=false, createTag throws either the bridge's message or the fallback 'Remote tag creation failed'. This indicates the tag was not created on the remote service.

Solutions

  1. Read remoteResult.message from the thrown/caught error for the precise remote cause and address it (auth, conflict, etc.)
  2. Re-authenticate with the remote service (check API key / 'task-master login')
  3. Check network connectivity to the remote endpoint and retry
  4. Verify the tag name does not already exist on the remote
Defensive patterns

Strategy: retry

Validate before calling

// Before calling, verify remote connectivity/auth
const ok = await checkRemoteAuth(); // e.g. ping the API or 'task-master auth status'
if (!ok) throw new Error('Remote unavailable — fix credentials/network before creating tags');

Type guard

function isSuccessfulRemoteResult(r) {
  return Boolean(r) && r.success === true;
}

Try / catch

try {
  await createTag(tasksPath, name, { copyFromCurrent });
} catch (err) {
  if (err.message === 'Remote tag creation failed' || err.message.includes('remote')) {
    console.error('Remote tag creation failed; check auth/network, then retry.');
    await retry(() => createTag(tasksPath, name, { copyFromCurrent }), { tries: 3 });
  } else throw err;
}

Prevention

When it happens

Trigger: Creating a tag while connected to a remote (Hammer/API) backend when the remote rejects creation — e.g. auth failure, tag name conflict on the server, network errors surfaced by the bridge, or remote quota limits.

Common situations: Expired API credentials; offline/VPN issues while remote mode is configured; remote tag with the same name already exists; server-side validation rejecting the name.

Related errors


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

Appendix: source

Thrown at scripts/modules/task-manager/tag-management.js:73

		warn: (...args) => log('warn', ...args),
		error: (...args) => log('error', ...args),
		debug: (...args) => log('debug', ...args),
		success: (...args) => log('success', ...args)
	};

	// Check if API storage should handle this via remote
	const remoteResult = await tryAddTagViaRemote({
		tagName,
		projectRoot: projectRoot || findProjectRoot(),
		isMCP: !!mcpLog,
		outputFormat,
		report: (level, ...args) => logFn[level](...args)
	});

	// If remote handled it, return the result
	if (remoteResult) {
		if (!remoteResult.success) {
			throw new Error(remoteResult.message || 'Remote tag creation failed');
		}
		if (outputFormat === 'json') {
			return remoteResult;
		}
		// For text output, the bridge already displayed the message
		return remoteResult;
	}

	// Otherwise, continue with file-based logic below
	try {
		// Validate tag name
		if (!tagName || typeof tagName !== 'string') {
			throw new Error('Tag name is required and must be a string');
		}

		// Validate tag name format (alphanumeric, hyphens, underscores only)
		if (!/^[a-zA-Z0-9_-]+$/.test(tagName)) {
			throw new Error(

View on GitHub (pinned to c0c98d367c)