davila7/claude-code-templates · warning · Error

Workflow with hash "${hash}" not found. Please check the has

Error message

Workflow with hash "${hash}" not found. Please check the hash and try again.

What it means

Thrown after fetchWorkflowData(hash) returns null/undefined: the CLI could not resolve the given hash to any workflow. Either the hash's encoded payload failed all decode paths or no local/registry entry matches the short form.

Source

Thrown at cli-tool/src/index.js:2064

  console.log(chalk.blue(`🔧 Installing workflow from hash: ${workflowHash}`));
  
  try {
    // Extract hash from format #hash
    const hash = workflowHash.startsWith('#') ? workflowHash.substring(1) : workflowHash;
    
    if (!hash || hash.length < 3) {
      throw new Error('Invalid workflow hash format. Expected format: #hash');
    }
    
    console.log(chalk.gray(`📥 Fetching workflow configuration...`));
    
    // Fetch workflow configuration from a remote service
    // For now, we'll simulate this by using a local storage approach
    // In production, this would fetch from a workflow registry
    const workflowData = await fetchWorkflowData(hash);
    
    if (!workflowData) {
      throw new Error(`Workflow with hash "${hash}" not found. Please check the hash and try again.`);
    }
    
    console.log(chalk.green(`✅ Workflow found: ${workflowData.name}`));
    console.log(chalk.cyan(`📝 Description: ${workflowData.description}`));
    console.log(chalk.cyan(`🏷️  Tags: ${workflowData.tags.join(', ')}`));
    console.log(chalk.cyan(`📊 Steps: ${workflowData.steps.length}`));
    
    // Install all required components
    const installPromises = [];
    
    // Group components by type
    const agents = workflowData.steps.filter(step => step.type === 'agent');
    const commands = workflowData.steps.filter(step => step.type === 'command');
    const mcps = workflowData.steps.filter(step => step.type === 'mcp');
    
    console.log(chalk.blue(`\n📦 Installing workflow components...`));
    console.log(chalk.gray(`   Agents: ${agents.length}`));
    console.log(chalk.gray(`   Commands: ${commands.length}`));

View on GitHub (pinned to a0851ed10c)

Solutions

  1. Regenerate the share link from the dashboard with the current version
  2. Verify the hash was copied completely (long base64/compressed payload)
  3. Upgrade the CLI to the latest version (`npx claude-code-templates@latest`) so decode formats match
  4. If using short hashes, confirm the workflow still exists in the registry
Defensive patterns

Strategy: try-catch

Validate before calling

null

Try / catch

try {
  await installWorkflowFromHash(hash);
} catch (e) {
  if (/not found/.test(e.message)) {
    console.error('This share link is invalid or expired — regenerate it from the dashboard');
    process.exit(1);
  }
  throw e;
}

Prevention

When it happens

Trigger: Passing a valid-length (>=3 chars) hash that doesn't correspond to any stored/encodable workflow — e.g. an old shortened hash whose registry entry expired, or a fabricated hash.

Common situations: Share links from an older CLI/dashboard version using a different encoding; hashes shared from a different environment/registry; typos in the hash body.

Related errors


AI-assisted analysis of davila7/claude-code-templates@a0851ed10c (2026-08-28). Data as JSON: /api/errors/440b0a5173f61d78. Report an issue: GitHub.