eyaltoledano/claude-task-master · warning

The "to" parameter is not used for cross-tag moves and will

Error message

The "to" parameter is not used for cross-tag moves and will be ignored. Tasks retain their original IDs in the target tag.

What it means

This is not a failure but a warning emitted by the move-task tool: the 'to' parameter only renumbers tasks when moving within a tag; for cross-tag moves target tasks keep their original IDs, so a supplied 'to' is ignored. The move still proceeds into the destination tag.

Source

Thrown at mcp-server/src/tools/move-task.js:78

		},
		execute: withNormalizedProjectRoot(async (args, { log, session }) => {
			try {
				// Check if this is a cross-tag move
				const isCrossTagMove =
					args.fromTag && args.toTag && args.fromTag !== args.toTag;

				if (isCrossTagMove) {
					// Cross-tag move logic
					if (!args.from) {
						return createErrorResponse(
							'Source IDs are required for cross-tag moves',
							'MISSING_SOURCE_IDS'
						);
					}

					// Warn if 'to' parameter is provided for cross-tag moves
					if (args.to) {
						log.warn(
							'The "to" parameter is not used for cross-tag moves and will be ignored. Tasks retain their original IDs in the target tag.'
						);
					}

					// Find tasks.json path if not provided
					let tasksJsonPath = args.file;
					if (!tasksJsonPath) {
						tasksJsonPath = findTasksPath(args, log);
					}

					// Use cross-tag move function
					return handleApiResult({
						result: await moveTaskCrossTagDirect(
							{
								sourceIds: args.from,
								sourceTag: args.fromTag,
								targetTag: args.toTag,
								withDependencies: args.withDependencies || false,

View on GitHub (pinned to c0c98d367c)

Solutions

  1. Remove the 'to' parameter for cross-tag moves; accept that the task ID is preserved in the destination tag.
  2. If renumbering is required, move the task into the tag first, then perform a separate intra-tag move using 'to'.
  3. Update automation/scripts to not pass 'to' when from-tag and to-tag differ.

Example fix

// before
move-task --from=5 --from-tag=backlog --to-tag=main --to=2
// after
move-task --from=5 --from-tag=backlog --to-tag=main // task 5 keeps ID 5 in main
Defensive patterns

Strategy: validation

Validate before calling

if (args.fromTag !== args.toTag && args.to !== undefined) {
  delete args.to; // 'to' is meaningless for cross-tag moves
}

Type guard

function isIntraTagMove(args) {
  return args.fromTag === args.toTag && typeof args.to !== 'undefined';
}

Try / catch

null

Prevention

When it happens

Trigger: Invoking move-task with both a from-tag/to-tag (cross-tag move) and a 'to' ID parameter, e.g. move-task --from=5 --from-tag=backlog --to-tag=main --to=2.

Common situations: Assuming cross-tag move renumbers the task to a chosen ID in the target tag; copying an intra-tag move command and adding a tag argument; automation scripts that always pass 'to'.

Related errors


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