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
- Remove the 'to' parameter for cross-tag moves; accept that the task ID is preserved in the destination tag.
- If renumbering is required, move the task into the tag first, then perform a separate intra-tag move using 'to'.
- 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
- Only pass 'to' when the move stays within one tag.
- Remember cross-tag moves preserve task IDs; renumber afterwards with a separate intra-tag move if needed.
- Audit automation scripts that always include --to.
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
- MFA_VERIFICATION_FAILED
- Failed to get brief creation URL
- Failed to initialize services: ${(error as Error).message}
- Invalid format: ${options.format}. Valid formats are: text,
- Failed to fetch tasks from any tag. First error: ${failedTag
AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29).
Data as JSON: /api/errors/2143e88880a124ce.
Report an issue: GitHub.