eyaltoledano/claude-task-master · error

MODEL_NOT_FOUND_NO_HINT

MODEL_NOT_FOUND_NO_HINT

Error message

Model ID "${modelId}" not found in Taskmaster's supported models. If this is a custom model, please specify the provider using --openrouter, --ollama, --bedrock, --azure, --vertex, --lmstudio, --openai-compatible, --gemini-cli, or --codex-cli.

What it means

The model ID is a valid non-empty string but was not found in Taskmaster's internal list of known/supported models, and no provider flag (--openrouter, --ollama, --bedrock, etc.) was supplied that would let the library treat it as a custom model. setModel() refuses to guess which provider class to instantiate for an unknown id.

Source

Thrown at scripts/modules/task-manager/models.js:695

					// Invalid provider hint - should not happen with our constants
					throw new Error(`Invalid provider hint received: ${providerHint}`);
				}
			}
		} else {
			// No hint provided (flags not used)
			if (modelData) {
				// Found internally, use the provider from the internal list
				determinedProvider = modelData.provider;
				report(
					'info',
					`Model ${modelId} found internally with provider ${determinedProvider}.`
				);
			} else {
				// Model not found and no provider hint was given
				return {
					success: false,
					error: {
						code: 'MODEL_NOT_FOUND_NO_HINT',
						message: `Model ID "${modelId}" not found in Taskmaster's supported models. If this is a custom model, please specify the provider using --openrouter, --ollama, --bedrock, --azure, --vertex, --lmstudio, --openai-compatible, --gemini-cli, or --codex-cli.`
					}
				};
			}
		}

		// --- End of Revised Logic --- //

		// At this point, we should have a determinedProvider if the model is valid (internally or custom)
		if (!determinedProvider) {
			// This case acts as a safeguard
			return {
				success: false,
				error: {
					code: 'PROVIDER_UNDETERMINED',
					message: `Could not determine the provider for model ID "${modelId}".`
				}
			};

View on GitHub (pinned to c0c98d367c)

Solutions

  1. Add the provider hint flag matching the backend, e.g. `task-master models --set-main --openrouter vendor/new-model` (or --ollama/--bedrock/--azure/--vertex/--lmstudio/--openai-compatible/--gemini-cli/--codex-cli).
  2. Check the exact spelling with `task-master models --list` to confirm the supported ids for your installed version.
  3. Update task-master (`npm i -g task-master-ai@latest`) so its internal model registry includes recently released models.
  4. Verify provider-specific naming conventions, e.g. OpenRouter needs 'vendor/model' while Bedrock needs the full inference profile id.

Example fix

// before
await setModel('moonshotai/kimi-k2', 'main', projectRoot); // unknown id, no hint
// after
await setModel('moonshotai/kimi-k2', 'main', projectRoot, { providerHint: 'openrouter' });
// or CLI: task-master models --set-main --openrouter moonshotai/kimi-k2
Defensive patterns

Strategy: validation

Validate before calling

import { getAvailableModelsForProvider } from './models.js'; // or list via CLI
// before calling:
const known = getAvailableModelsForProvider?.('openrouter') ?? [];
if (!known.some(m => m.id === modelId) && !providerHint) {
  throw new Error(`Unknown model "${modelId}" — pass a provider flag (e.g. --openrouter) for custom models`);
}

Try / catch

const res = await setModel(modelId, 'main', projectRoot, options);
if (!res.success && res.error?.code === 'MODEL_NOT_FOUND_NO_HINT') {
  // retry with an explicit provider hint for custom models
  return setModel(modelId, 'main', projectRoot, { providerHint: 'openrouter' });
}

Prevention

When it happens

Trigger: setModel('vendor/new-model', role, root) where the id is absent from the internal MODEL_MAP and no provider hint flag was passed; misspelling a known id (e.g. 'anthropic/claude-sonet-4'); using a model released after your installed task-master version.

Common situations: Newly released LLMs not yet in the installed version's model registry; provider-specific naming slips (missing 'accounts/google/' prefix on Vertex, wrong org slug on OpenRouter); copy-pasted ids from another tool that uses different naming.

Related errors


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